MediaWiki:Kampfrechner.js: Unterschied zwischen den Versionen

aus FreewarWiki, der Referenz für Freewar
Zur Navigation springen Zur Suche springen
(Kampfrechner-JS ausgelagert)
 
KKeine Bearbeitungszusammenfassung
Zeile 26: Zeile 26:
var stats_raw = new Array();
var stats_raw = new Array();
var stats_row = new Array();
var stats_row = new Array();
for (i=0;i<stats_raw_array.length;i++) {
for (i=0;i<stats_raw_array.length;i++) {
stats_raw = stats_raw_array[i];
stats_raw = stats_raw_array[i];
stats_row = stats_raw.split(';');
stats_row = stats_raw.split(';');
all_stats[all_stats.length] = stats_row;
if (stats_row.length != 3) continue; // unsaubere Lösung
option_field = document.createElement('option');
all_stats[all_stats.length] = stats_row;
option_field.setAttribute('value', i);
option_field = document.createElement('option');
option_field.innerHTML = stats_row[0];
option_field.setAttribute('value', i);
selectfield.appendChild(option_field);
option_field.innerHTML = stats_row[0];
selectfield.appendChild(option_field);
}
}



Version vom 19. Februar 2016, 19:30 Uhr

/*********************************************/
/* Funktionen für den Kampfrechner          */
/* Wird in MediaWiki:Common.js eingebunden */
/******************************************/

// Definiere Variablen für den Kampfrechner
var global_lp_a, global_a_a, global_v_a, global_lp_v, global_a_v, global_v_v;
var global_fightresult_1, global_fightresult_2, global_fightresult_3;
var all_stats = new Array();

/**
 * Initialisiert den Kampfrechner
 */
function init_fightcalc() {
	fc = document.getElementById('Kampfrechner');
	selectfield = document.createElement('select');
	selectfield.setAttribute('name', 'npc');
	selectfield.setAttribute('size', '1');
	selectfield.setAttribute('onChange', 'changevalues(this)');

	stats_raw = document.getElementById('Kampfrechner-Daten').innerHTML;
	var stats_raw_array = new Array();
	stats_raw_array = stats_raw.split('\n');

	var i = 0;
	var stats_raw = new Array();
	var stats_row = new Array();
	
	for (i=0;i<stats_raw_array.length;i++) {
		stats_raw = stats_raw_array[i];
		stats_row = stats_raw.split(';');
		if (stats_row.length != 3) continue; // unsaubere Lösung
		all_stats[all_stats.length] = stats_row;
		option_field = document.createElement('option');
		option_field.setAttribute('value', i);
		option_field.innerHTML = stats_row[0];
		selectfield.appendChild(option_field);
	}

	table = document.createElement('TABLE');

	tr = document.createElement('TR');
	td = document.createElement('TD');
	td.setAttribute('colspan', '3');
	select_text = document.createTextNode('Bei NPC-Kampf NPC auswählen: ');
	td.appendChild(select_text);
	td.appendChild(selectfield);
	tr.appendChild(td);
	table.appendChild(tr);     

	tr = document.createElement('TR');
	td = document.createElement('TD');
	tr.appendChild(td);
	td = document.createElement('TH');
	td.appendChild(document.createTextNode('Angreifer'));
	tr.appendChild(td);
	td = document.createElement('TH');
	td.appendChild(document.createTextNode('Verteidiger'));
	tr.appendChild(td);
	table.appendChild(tr);

	// LP-Werte
	tr = document.createElement('TR');
	td = document.createElement('TD');
	td.appendChild(document.createTextNode('LP'));
	tr.appendChild(td);
	td = document.createElement('TD');
	global_lp_a = document.createElement('INPUT');
	global_lp_a.setAttribute('type', 'text');
	td.appendChild(global_lp_a);
	tr.appendChild(td);
	td = document.createElement('TD');
	global_lp_v = document.createElement('INPUT');
	global_lp_v.setAttribute('type', 'text');
	global_lp_v.setAttribute('id', 'lp_v');
	td.appendChild(global_lp_v);
	tr.appendChild(td);
	table.appendChild(tr);

	// A-Werte
	tr = document.createElement('TR');
	td = document.createElement('TD');
	td.appendChild(document.createTextNode('A'));
	tr.appendChild(td);
	td = document.createElement('TD');
	global_a_a = document.createElement('INPUT');
	global_a_a.setAttribute('type', 'text');
	td.appendChild(global_a_a);
	tr.appendChild(td);
	td = document.createElement('TD');
	global_a_v = document.createElement('INPUT');
	global_a_v.setAttribute('type', 'text');
	global_a_v.setAttribute('id', 'a_v');
	td.appendChild(global_a_v);
	tr.appendChild(td);
	table.appendChild(tr);

	// V-Werte
	tr = document.createElement('TR');
	td = document.createElement('TD');
	td.appendChild(document.createTextNode('V'));
	tr.appendChild(td);
	td = document.createElement('TD');
	global_v_a = document.createElement('INPUT');
	global_v_a.setAttribute('type', 'text');
	td.appendChild(global_v_a);
	tr.appendChild(td);
	td = document.createElement('TD');
	global_v_v = document.createElement('INPUT');
	global_v_v.setAttribute('type', 'text');
	global_v_v.setAttribute('id', 'v_v');
	td.appendChild(global_v_v);
	tr.appendChild(td);
	table.appendChild(tr);

	tr = document.createElement('TR');
	td = document.createElement('TD');
	td.setAttribute('colspan', '3')
	td.style.textAlign = 'center';
	inp = document.createElement('INPUT');
	inp.setAttribute('type', 'submit');
	inp.setAttribute('name', 'calc');
	inp.setAttribute('value', 'Berechnen');
	td.appendChild(inp);
	tr.appendChild(td);
	table.appendChild(tr);

	tr = document.createElement('TR');
	td = document.createElement('TD');
	td.setAttribute('colspan', '3')
	td.style.textAlign = 'center';
	global_fightresult_1 = document.createTextNode('Werte eingeben und auf Berechnen klicken');
	global_fightresult_2 = document.createTextNode(' ');
	global_fightresult_3 = document.createTextNode(' ');
	td.appendChild(global_fightresult_1);
	td.appendChild(document.createElement('BR'));
	td.appendChild(global_fightresult_2);
	td.appendChild(document.createElement('BR'));
	td.appendChild(global_fightresult_3);
	tr.appendChild(td);
	table.appendChild(tr);

	form = document.createElement('FORM');
	form.setAttribute('action', '#')
	form.setAttribute('method', 'POST')
	form.setAttribute('name', 'fightcalc')
	form.onsubmit = calc_fight;
	form.appendChild(table);
	fc.appendChild(form);
}

/**
 * Berechnet Kampfergebnis
 */
function calc_fight() {
	dif_a = global_a_a.value - global_v_v.value;
	dif_v = global_a_v.value - global_v_a.value;
	
	if (dif_a < 1) dif_a = 1;
	if (dif_v < 1) dif_v = 1;
	
	fac_a = global_lp_v.value / dif_a;
	fac_v = global_lp_a.value / dif_v;
	
	if (fac_a > fac_v) {
		if ((global_a_a.value - global_v_v.value) > 0) lp_v = global_a_a.value - global_v_v.value;
		else lp_v = 1;
		
		end_v_lp = Math.floor(global_lp_v.value - fac_v * lp_v);  
		
		global_fightresult_1.nodeValue = 'Verteidiger gewinnt mit ' + end_v_lp + ' LP';
		if (((global_lp_a.value / dif_v) < 1) && ((global_lp_a.value / dif_v) < (global_lp_v.value / dif_a))) {
			global_fightresult_2.nodeValue = 'Der Angreifer stirbt schon nach einem Schlag';
			global_fightresult_3.nodeValue = ' ';
		} else {
			global_fightresult_2.nodeValue = 'Der Angreifer benötigt ' + Math.ceil(global_lp_v.value / dif_a) + ' Schläge für Sieg';
			global_fightresult_3.nodeValue = 'Der Angreifer verliert ' + String(dif_v) + ' LP pro Schlag';
		}
	} else {
		if ((global_a_v.value - global_v_a.value) > 0) lp_a = global_a_v.value - global_v_a.value;
		else lp_a = 1;
		
		end_a_lp = Math.floor(global_lp_a.value - fac_a * lp_a);
		
		global_fightresult_1.nodeValue = 'Angreifer gewinnt mit ' + end_a_lp + ' LP';
		global_fightresult_2.nodeValue = 'Minimale LP für Sieg: ' + String(global_lp_a.value - end_a_lp);
		global_fightresult_3.nodeValue = ' ';
	}
	return false;
}

/**
 * Ändert Werte im Kampfrechner bei neuer Gegnerauswahl
 */
function changevalues(select_field) {
	var number = select_field.options[select_field.options.selectedIndex].value;
	var stats = all_stats[number];
	var v = document.getElementById('v_v');
	var a = document.getElementById('a_v');
	var lp = document.getElementById('lp_v');
	
	v.setAttribute('value', '0');
	a.setAttribute('value', stats[1]);
	lp.setAttribute('value', stats[2]);
}

// Starte init_fightcalc() nach Laden der Seite
addOnloadHook(init_fightcalc);