SpacePioneers Power Stat

By Luca Ballis Last update Jun 21, 2006 — Installed 559 times.
// ==UserScript==
// @author Socket462
// @name SpacePioneers Power Stat
// @description Enhance overview table
// @include http://*.space-pioneers.*statistik.shtml*
// ==/UserScript==
	// features
	
	var macroDiff = true;							// Set to true to enable macro difference display on default
	
	// style
	var textColor = 'black';
	maxRed = 255;
	minGreen = 32;
	
	var red_1 = 150;								//first color for example a nice red (255,32,32)
	var gre_1 = 66;
	var blu_1 = 255;
	
	var red_2 = 255;								//median color for example a nice yellow (255,255,32)
	var gre_2 = 66;
	var blu_2 = 76;
	
	var red_3 = 76;									//last color for example a nice green (32,255,32)
	var gre_3 = 255;
	var blu_3 = 66;
	
	// language specific
	var sviluppo = 'Sviluppo';						// Row title in which is displaied number of used/free place
	var minieraMetallo = 'Miniera di Metallo'; 		// Row title in which is displaied your metal cave
	var punti = 'Punti';							// Row title in which is displaied planet score
	
	
	// Do not edit beyond this point, unless you know what you do
	var el = document.createElement('div');
	el.innerHTML = "PowerStat by Socket462<br>Press <span style=\"color:red;\">m</span> to activate and then toggle Macro Difference Vision";
	el.className = 'tdark';
	document.body.appendChild(el);
	
	window.addEventListener(
    "keyup",
    function f(e){
      	//alert(macroDiff);
        if(e.keyCode==77){
		macroDiff=!macroDiff;
		//vars
		var tds = document.getElementsByTagName('td');
		var i = 0, j;
		var numeroPianeti = 0;
		var red, green;
		var zero = '0';
		
		while(tds[i].className!="tdark"){i++;}
		while(tds[i].className=="tdark"){i++;numeroPianeti++;}
		// generazione colori

		var zero = "0";
		var steps = 30;
		var col = new Array();//
		var red_step_1 = Math.abs(red_2-red_1)/(steps/2);//
		var gre_step_1 = Math.abs(gre_2-gre_1)/(steps/2);
		var blu_step_1 = Math.abs(blu_2-blu_1)/(steps/2);
		var red_step_2 = Math.abs(red_3-red_2)/(steps/2);//
		var gre_step_2 = Math.abs(gre_3-gre_2)/(steps/2);
		var blu_step_2 = Math.abs(blu_3-blu_2)/(steps/2);
		var	red_now = red_1;//
		var gre_now = gre_1;
		var blu_now = blu_1;
		var i = 0;
	
		while(i < steps/2){
	
			red_out = Math.floor(red_now);
			gre_out = Math.floor(gre_now);
			blu_out = Math.floor(blu_now);
			red_out = red_out.toString(16);
			if(red_out.length==1){red_out=zero.concat(red_out);}
			gre_out = gre_out.toString(16);
			if(gre_out.length==1){gre_out=zero.concat(gre_out);}
			blu_out = blu_out.toString(16);
			if(blu_out.length==1){blu_out=zero.concat(blu_out);}
			col_out = "#"+red_out+gre_out+blu_out;
			col.push(col_out);
			
			//red
			if(red_1 > red_2){
				red_now -= red_step_1;
				if(red_now<0){red_now = 0;}
			}else if(red_1 < red_2){
			  	red_now += red_step_1;
			  	if(red_now>red_2){red_now = red_2;}
			}
			//green
			if(gre_1 > gre_2){
				gre_now -= gre_step_1;
				if(gre_now<0){gre_now = 0;}
			} else if(gre_1 < gre_2){
				gre_now += gre_step_1;
				if(gre_now>gre_2){gre_now = gre_2;}
			}
			//blue
			if(blu_1 > blu_2){
				blu_now -= blu_step_1;
				if(blu_now<0){blu_now = 0;}
			} else if(blu_1 < blu_2){
				blu_now += blu_step_1;
				if(blu_now>blu_2){blu_now = blu_2;}
			}
			i++;
		}
		
		while(i < steps){
			if(red_2 > red_3){
				red_now -= red_step_2;
				if(red_now<0){red_now = 0;}
			}else if(red_2 < red_3){
			  	red_now += red_step_2;
			  	if(red_now>red_3){red_now = red_3;}
			}
			
			if(gre_2 > gre_3){
				gre_now -= gre_step_2;
				if(gre_now<0){gre_now = 0;}
			} else if(gre_2 < gre_3){
				gre_now += gre_step_2;
				if(gre_now>gre_3){gre_now = gre_3;}
			}		
	
			if(blu_2 > blu_3){
				blu_now -= blu_step_2;
				if(blu_now<0){blu_now = 0;}
			} else if(blu_2 < blu_3){
				blu_now += blu_step_2;
				if(blu_now>blu_3){blu_now = blu_3;}
			}
			red_out = Math.floor(red_now);
			gre_out = Math.floor(gre_now);
			blu_out = Math.floor(blu_now);
			red_out = red_out.toString(16);
			if(red_out.length==1){red_out=zero.concat(red_out);}
			gre_out = gre_out.toString(16);
			if(gre_out.length==1){gre_out=zero.concat(gre_out);}
			blu_out = blu_out.toString(16);
			if(blu_out.length==1){blu_out=zero.concat(blu_out);}
			col_out = "#"+red_out+gre_out+blu_out;
			col.push(col_out);
			i++;
		}
		// fine generazione colori
		while(tds[i].innerHTML!=sviluppo){i++;}
		for(j = 1; j <= numeroPianeti; j++){
			var bad = eval(tds[i+j].firstChild.innerHTML);
			var indexOfColor = steps - (steps-1)*bad;
			tds[i+j].style.backgroundColor = col[Math.ceil(indexOfColor)];
			tds[i+j].style.color = textColor;
		};
		
		while(tds[i].innerHTML!=minieraMetallo){i++;} 	// si posiziona sulla prima cella dopo miniera di metallo
		while(tds[i].innerHTML!=punti){					// continua finch� non trova la casella punti
			var max = 0;
			var min = 100;
			for(var j = 1; j <= numeroPianeti; j++){
				if(eval(tds[i+j].firstChild.innerHTML)>max){
					max = eval(tds[i+j].firstChild.innerHTML);
				}
				if(eval(tds[i+j].firstChild.innerHTML)<min){
					min = eval(tds[i+j].firstChild.innerHTML);
				} else if(eval(tds[i+j].firstChild.innerHTML)==undefined){
					min = 0;
				}
			}
			if(macroDiff){min = 0;}
			for(j = 1; j <= numeroPianeti; j++){
				var level = eval(tds[i+j].firstChild.innerHTML);
				if(level==undefined){level=0;}
				var indexOfColor = Math.ceil((steps-1) * ((level-min)/(max-min)));
				if(indexOfColor<0){
					indexOfColor = 0;
				} else if(indexOfColor>col.length){
					indexOfColor = col.length-1;
				}
				tds[i+j].style.backgroundColor=col[indexOfColor];
				tds[i+j].style.color=textColor;
			}
			i+=numeroPianeti+1;
		}
    }},
	true);