// ==UserScript==
// @name Color Coding for Original Planets Nu Client
// @description Color codes planets and ships by race on Planets.nu map
// @include http://planets.nu/home
// @include http://planets.nu/games/*
// @version 2.00
// @namespace https://greasyfork.org/users/2860
// ==/UserScript==
// 1. Color codes planets and ships by race on Planets.nu map
// 2. v0.5 - now activates or deactivates from Settings screen!
// 3. v0.7 - now activates or deactivates default color for user from Settings screen
// 4. v0.81 - now saves settings for the user to a cookie, when changed from the Settings Screen
// 5. v0.90 - First 11 race colors, unknown planets, and unoccupied planets now configurable from Settings Screen!
// 6. v1.0 - Fully functional! Uses color gradient for all planets. Displays color gradiant on Settings Screen (FF only, will tackle Chrome later)
// 7. v1.1 - Chrome and FF color preview. Gradient colors for standard game races, info, and unknown
// 8. v1.2 - Redraws colors on maps after any setting changes. Different sized circles around planets for Own Ships, Ally, and Enemy. Own ships will always have correct color
// 9. v1.3 - rewrote Settings changes to play nicely with other mods.
// 10.v1.4 - added in support for users changing colors beyond race 11 (settings page does not refresh, so hit the settings button again to see the changes).
// 11.v1.5,1.51 - added support for new play.planets.nu client
// 12.v1.6 - New note colors that match the mod.
// 13.v1.61 - added support for new planets urls
// 14.v1.7 - Adds planets v3 API support
// 15.v1.81 - Now shows ship names with explosions (formerly a separate script). Fixed colors in the diplomacy screen color picker (if you ever want to use this with the mod).
// 17.v1.9.2 - Removed play.planets.nu code. This is now in a new mod.
// 18 v2.0 - Modifies mouse-over text for minefields so you can tell if web or regular minefield
function wrapper () { // wrapper for injection
//var colors = ["white", "Green", "Crimson", "HotPink", "Lime", "Magenta", "Yellow", "Purple", "Gray", "Cyan", "Blue", "mediumslateblue", "sienna", "skyblue", "tomato","wheat", "lightcoral", "darkslategray", "teal", "firebrick", "olive", "mediumpurple", "lime", "indigo", "tan", "yellowgreen", "goldenrod", "aliceblue", "olivedrab", "orangered"];
var colorsA =["#F0F8FF","#32CD32","#CD5C5C","#FFC0CB","#98FB98","#C0C0C0","#FFFF00","#EE82EE","#D3D3D3","#B0E0E6","#87CEFA","#7B68EE","#F4A460","#D2B48C","#FF6347","#F5DEB3","#F08080","#2F4F4F","#008080","#B22222","#808000","#9370DB","#00FF00","#4B0082","#D2B48C","#9ACD32", "#DAA520","#F0F8FF","#6B8E23","#FF4500"];
var colorsA2 =["#FFFFFF","#006400","#FF0000","#FF69B4","#00FA9A","#6A5ACD","#FFD700","#9400D3","#808080","#00CED1","#4169E1","#7B68EE","#A0522D","#87CEEB","#FF6347","#F5DEB3","#F08080","#2F4F4F","#008080","#B22222","#808000","#9370DB","#00FF00","#4B0082","#D2B48C","#9ACD32", "#DAA520","#F0F8FF","#6B8E23","#FF4500"];
var modInfo="#F4A460";//chocolate
var modInfo2="#D2691E";//chocolate
var modUnknown="#FFF8DC"; //Tan
var modUnknown2="#D2B48C"; //Tan
var modRace=12;
// Fed - White
// Lizard - Green
// Birds - Crimson
// Fascists - Pink
// Privateers - Lime
// Cyborg - Magenta
// Crystals - Yellow
// Empire - Purple
// Robots - Gray
// Rebels - Aqua
// Colonies - Blue
var activeColorMod=null;//default true
var defaultMyColor=null;//default true
var useCustomColor=false;//have we checked Cookie
var firstLoad=true;
var oldDrawMap = vgapMap.prototype.drawMap;
vgapMap.prototype.drawMap = function () {
//check Color Mod Settings
checkColorModSettings();
if ((activeColorMod==false)||(vgaPlanets.prototype.version>=3))
{
oldDrawMap.apply(this,arguments);
}
else
//VERSION 1.19 code
{
//no canvas
if (this.mapImg)
return;
//we've moved and need to recreate the canvas
if ((this.canvasCenterX != this.centerX || this.canvasCenterY != this.centerY) && this.zoom >= 20)
this.createCanvasArray();
//grab the visible canvases
var startLeft = Math.floor((this.left * -1) / this.canvasSize) * this.canvasSize;
var startTop = Math.floor((this.top * -1) / this.canvasSize) * this.canvasSize;
var maxAccross = Math.ceil($(window).width() / this.canvasSize) + 1;
var maxDown = Math.ceil($(window).height() / this.canvasSize) + 1;
var visible = new Array();
var leftOffset = startLeft;
for (var i = 0; i < maxAccross; i++) {
var topOffset = startTop;
for (var j = 0; j < maxDown; j++) {
var canvas = this.canvasArray[leftOffset + "-" + topOffset];
if (canvas)
visible.push(canvas);
topOffset += this.canvasSize;
}
leftOffset += this.canvasSize;
}
var sets = vgap.accountsettings;
for (var can = 0; can < visible.length; can++) {
//var visible = true;
// if ((this.left + leftOffset + this.canvasSize) < 0)
// visible = false;
// if ((this.top + topOffset + this.canvasSize) < 0)
// visible = false;
// if ((this.left + leftOffset) > $(window).width())
// visible = false;
// if ((this.top + topOffset) > $(window).height())
// visible = false;
var canvas = visible[can];
if (!canvas.rendered) {
var leftOffset = canvas.leftOffset;
var topOffset = canvas.topOffset;
canvas.rendered = true;
var ctx = canvas.getContext("2d");
//nebulas
if (vgap.nebulas) {
for (var i = 0; i < vgap.nebulas.length; i++) {
var neb = vgap.nebulas[i];
var mapX = this.screenX(neb.x) - leftOffset;
var mapY = this.screenY(neb.y) - topOffset;
var rad = neb.radius * this.zoom;
var green = 200 + (neb.gas * 10);
var blue = 200 - (neb.gas * 10);
var grad = ctx.createRadialGradient(mapX, mapY, 0, mapX, mapY, rad);
grad.addColorStop(0, "rgba(0, " + green + ", " + blue + ", " + neb.intensity / 400 + ")");
grad.addColorStop(1, "rgba(0, " + green + ", " + blue + ", 0)");
ctx.fillStyle = grad;
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
}
}
//stars
if (vgap.stars) {
for (var i = 0; i < vgap.stars.length; i++) {
var star = vgap.stars[i];
var mapX = this.screenX(star.x) - leftOffset;
var mapY = this.screenY(star.y) - topOffset;
var rad = star.radius * this.zoom;
//var color = "orange";
var color = "red";
if (star.temp > 3000 && star.temp <= 6000)
color = "orange";
if (star.temp > 6000 && star.temp <= 10000)
color = "brown";
if (star.temp > 10000 && star.temp <= 20000)
color = "white";
if (star.temp > 20000)
color = "powderblue";
//radiation
var radColor = "orange";
var opacity = Math.max(0.4 * star.temp / 65000, 0.2);
var effectRad = Math.sqrt(star.mass) * this.zoom;
var grad = ctx.createRadialGradient(mapX, mapY, 0, mapX, mapY, effectRad);
grad.addColorStop(0, colorToRGBA(color, opacity));
grad.addColorStop(1, colorToRGBA(color, 0));
ctx.fillStyle = grad;
ctx.beginPath();
ctx.arc(mapX, mapY, effectRad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
//center blank
// var img = new Image();
// img.src = "/_library/theme/images/starbacking.jpg";
// var pattern = ctx.createPattern(img, "repeat");
// ctx.fillStyle = pattern;
// ctx.beginPath();
// ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
// ctx.closePath();
// ctx.fill();
//circle
var grad = ctx.createRadialGradient(mapX, mapY, 0, mapX, mapY, rad);
grad.addColorStop(0, colorToRGBA(color, 0.25));
grad.addColorStop(1, colorToRGBA(color, 0.05));
ctx.fillStyle = grad;
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
//diamond
var halfRad = rad / 4;
var grad = ctx.createRadialGradient(mapX, mapY, 0, mapX, mapY, halfRad);
grad.addColorStop(0, colorToRGBA(color, 1));
grad.addColorStop(1, colorToRGBA(color, 0));
ctx.fillStyle = grad;
ctx.beginPath();
ctx.moveTo(mapX - halfRad, mapY);
ctx.lineTo(mapX, mapY - halfRad);
ctx.lineTo(mapX + halfRad, mapY);
ctx.lineTo(mapX, mapY + halfRad);
ctx.closePath();
ctx.fill();
}
}
//minefields
for (var i = 0; i < vgap.minefields.length; i++) {
var minefield = vgap.minefields[i];
var color;
if (activeColorMod==false)
{
if (minefield.isweb)
color = sets.webmines;
else if (minefield.ownerid == vgap.player.id)
color = sets.mymines;
else if (vgap.allied(minefield.ownerid))
color = sets.allymines;
else if (minefield.ownerid != vgap.player.id)
color = sets.enemymines;
}
else
{
if ((defaultMyColor==true)&&(minefield.ownerid == vgap.player.id))
color = sets.mymines;
else //use new colors
color=colorsA2[minefield.ownerid-1];
}
var mapX = this.screenX(minefield.x) - leftOffset;
var mapY = this.screenY(minefield.y) - topOffset;
var rad = minefield.radius * this.zoom;
var grad = ctx.createRadialGradient(mapX, mapY, 0, mapX, mapY, rad);
if ((activeColorMod==true) && (minefield.isweb==false))
{
grad.addColorStop(0, colorToRGBA(color, 0.4));
grad.addColorStop(1, colorToRGBA(color, 0.2));
}
if ((activeColorMod==true) && (minefield.isweb==true))
{
grad.addColorStop(0.9, colorToRGBA(color, 0.15));
grad.addColorStop(1, colorToRGBA(color, 0.3));
}
if (activeColorMod==false)
{
grad.addColorStop(0, colorToRGBA(color, 0.4));
grad.addColorStop(1, colorToRGBA(color, 0.2));
}
ctx.fillStyle = grad;
ctx.strokeStyle = colorToRGBA(color, 0.2);
ctx.lineWidth = 2;
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
ctx.stroke();
}
//ions
for (var i = 0; i < vgap.ionstorms.length; i++) {
var storm = vgap.ionstorms[i];
var mapX = this.screenX(storm.x) - leftOffset;
var mapY = this.screenY(storm.y) - topOffset;
var rad = storm.radius * this.zoom;
var opacity = storm.voltage / 400;
if (opacity > 1)
opacity = 1;
if (opacity < 0.1)
opacity = 0.1;
var color = vgap.accountsettings.ionstorms;
var grad = ctx.createRadialGradient(mapX, mapY, 0, mapX, mapY, rad);
grad.addColorStop(0, colorToRGBA(color, opacity));
if (vgap.settings.nuionstorms)
grad.addColorStop(1, colorToRGBA(color, 0));
else
grad.addColorStop(1, colorToRGBA(color, 0.05));
ctx.fillStyle = grad;
ctx.strokeStyle = colorToRGBA(color, 0.05);
ctx.lineWidth = 2;
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
if (!vgap.settings.nuionstorms)
ctx.stroke();
}
//Debris Disk stroke
if (this.zoom >= 5) {
for (var i = 0; i < vgap.planets.length; i++) {
var planet = vgap.planets[i];
//draw rings
if (planet.debrisdisk > 1) {
var mapX = this.screenX(planet.x) - leftOffset;
var mapY = this.screenY(planet.y) - topOffset;
var rad = planet.debrisdisk * this.zoom;
//var color = "#ffff00";
var color = "#ffffff";
ctx.strokeStyle = colorToRGBA(color, 0.1);
ctx.lineWidth = 2;
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.stroke();
}
}
for (var i = 0; i < vgap.planets.length; i++) {
var planet = vgap.planets[i];
//draw centers
if (planet.debrisdisk > 1) {
var mapX = this.screenX(planet.x) - leftOffset;
var mapY = this.screenY(planet.y) - topOffset;
//blank centers (for overlapping circles)
var rad = planet.debrisdisk * this.zoom - 2;
//var img = new Image();
//img.src = "/_library/theme/images/starbacking.jpg";
//var pattern = ctx.createPattern(img, "repeat");
//ctx.fillStyle = pattern;
ctx.fillStyle = "#111111";
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
}
}
}
//planets
for (var i = 0; i < vgap.planets.length; i++) {
var planet = vgap.planets[i];
var mapX = this.screenX(planet.x) - leftOffset;
var mapY = this.screenY(planet.y) - topOffset;
//if on this canvas
if (mapX > -200 && mapX < (this.canvasSize + 200)) {
//draw warp well
if (this.zoom >= 40 && planet.debrisdisk == 0) {
ctx.fillStyle = "#000000";
ctx.strokeStyle = "#333333";
ctx.lineWidth = 1;
for (var x = (planet.x - 3); x <= planet.x + 3; x++) {
for (var y = (planet.y - 3); y <= planet.y + 3; y++) {
if (this.getDist(x, y, planet.x, planet.y) <= 3) {
var mX = this.screenX(x) - leftOffset;
var mY = this.screenY(y) - topOffset;
var rad = this.zoom / 2;
ctx.fillRect(mX - rad, mY - rad, rad * 2, rad * 2);
ctx.strokeRect(mX - rad, mY - rad, rad * 2, rad * 2);
}
}
}
}
var rad = 6;
if (planet.debrisdisk > 0)
rad = 1;
if (this.zoom < 1)
rad = Math.ceil(rad * this.zoom);
else
rad = Math.ceil(rad * Math.pow(this.zoom, 0.4));
var grad = ctx.createLinearGradient(mapX - rad, mapY - rad, mapX + rad, mapY + rad);
if (planet.ownerid == vgap.player.id) {
//mine
if ((activeColorMod==false) || (defaultMyColor==true))
{
grad.addColorStop(0, sets.myplanetfrom);
grad.addColorStop(1, sets.myplanetto);
}
else
{
grad.addColorStop(0, colorsA[planet.ownerid-1]);
grad.addColorStop(1, colorsA2[planet.ownerid-1]);
}
}
else if (planet.ownerid == 0) {
if (planet.infoturn > 0) {
//info
if (activeColorMod==false)
{
grad.addColorStop(0, sets.infoplanetfrom);
grad.addColorStop(1, sets.infoplanetto);
}
else
{
grad.addColorStop(0, modInfo);
grad.addColorStop(1, modInfo2);
}
}
else {
//unknown
if (activeColorMod==false)
{
grad.addColorStop(0, sets.unknownplanetfrom);
grad.addColorStop(1, sets.unknownplanetto);
}
else
{
grad.addColorStop(0, modUnknown);
grad.addColorStop(1, modUnknown2);
}
}
}
else {
//ally
if (vgap.allied(planet.ownerid)) {
if (activeColorMod==false)
{
grad.addColorStop(0, sets.allyplanetfrom);
grad.addColorStop(1, sets.allyplanetto);
}
else
{
grad.addColorStop(0, colorsA[planet.ownerid-1]);
grad.addColorStop(1, colorsA2[planet.ownerid-1]);
}
}
else {
//enemy
if (activeColorMod==false)
{
grad.addColorStop(0, sets.enemyplanetfrom);
grad.addColorStop(1, sets.enemyplanetto);
}
else
{
grad.addColorStop(0, colorsA[planet.ownerid-1]);
grad.addColorStop(1, colorsA2[planet.ownerid-1]);
}
}
}
ctx.fillStyle = grad;
var note = vgap.getNote(planet.id, 1);
if (note != null && note.color != "")
ctx.fillStyle = "#" + note.color;
var starbase = vgap.getStarbase(planet.id);
if (starbase != null) {
ctx.fillRect(mapX - rad, mapY - rad, rad * 2, rad * 2);
}
else {
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
}
var shipsAt = vgap.shipsAt(planet.x, planet.y);
var myShip = false;
var enemyShip = false;
var allyShip = false;
var color;
for (var j = 0; j < shipsAt.length; j++) {
var number=shipsAt[j].ownerid;
color=colorsA2[number-1];
if (shipsAt[j].ownerid == vgap.player.id)
myShip = true;
else if (vgap.allied(shipsAt[j].ownerid))
allyShip = true;
else
enemyShip = true;
}
if (myShip) {
if ((activeColorMod==false)||(defaultMyColor==true))
ctx.strokeStyle = sets.myshipfrom;
else
ctx.strokeStyle =colorsA2[vgap.player.id-1];
ctx.lineWidth = 1;
ctx.beginPath();
ctx.arc(mapX, mapY, rad + 2, 0, Math.PI * 2, false);
ctx.closePath();
ctx.stroke();
}
if (allyShip) {
if (activeColorMod==false)
ctx.strokeStyle = sets.allyshipfrom;
else
ctx.strokeStyle = color;
ctx.lineWidth = 1;
ctx.beginPath();
ctx.arc(mapX, mapY, rad + 4, 0, Math.PI * 2, false);
ctx.closePath();
ctx.stroke();
}
if (enemyShip) {
if (activeColorMod==false)
ctx.strokeStyle = sets.enemyshipfrom;
else
ctx.strokeStyle = color;
ctx.lineWidth = 1;
ctx.beginPath();
ctx.arc(mapX, mapY, rad + 6, 0, Math.PI * 2, false);
ctx.closePath();
ctx.stroke();
}
}
}
//Debris Disk Fill
for (var i = 0; i < vgap.planets.length; i++) {
var planet = vgap.planets[i];
//draw centers
if (planet.debrisdisk > 1) {
var mapX = this.screenX(planet.x) - leftOffset;
var mapY = this.screenY(planet.y) - topOffset;
//fill centers
var rad = planet.debrisdisk * this.zoom;
//var color = "#ffff00";
//var color2 = "#ff6600";
var color = "#ffff99";
var color2 = "#ffff99";
grad = ctx.createRadialGradient(mapX, mapY, 0, mapX, mapY, rad);
grad.addColorStop(0, colorToRGBA(color, 0.15));
grad.addColorStop(0.4, colorToRGBA(color, 0.075));
grad.addColorStop(0.5, colorToRGBA(color2, 0.075));
grad.addColorStop(1, colorToRGBA(color2, 0));
ctx.fillStyle = grad;
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
}
}
//ships in space
for (var i = 0; i < vgap.ships.length; i++) {
var ship = vgap.ships[i];
var planet = vgap.planetAt(ship.x, ship.y);
if (planet == null) {
var mapX = this.screenX(ship.x) - leftOffset;
var mapY = this.screenY(ship.y) - topOffset;
var rad = 3;
if (ship.mass < 800)
rad = 2;
// if (ship.mass < 300)
// rad = 1;
if (this.zoom < 1)
rad = Math.ceil(rad * this.zoom);
else
rad = Math.ceil(rad * Math.pow(this.zoom, 0.3));
//// if (this.zoom > 10)
//// rad = Math.ceil(rad * this.zoom / 10);
var grad = ctx.createLinearGradient(mapX - rad, mapY - rad, mapX + rad, mapY + rad);
if (ship.ownerid == vgap.player.id) {
//mine
if ((activeColorMod==false)||(defaultMyColor==true))
{
grad.addColorStop(0, sets.myshipfrom);
grad.addColorStop(1, sets.myshipto);
}
else
{
grad.addColorStop(0,colorsA[ship.ownerid-1]);
grad.addColorStop(1,colorsA2[ship.ownerid-1]);
}
}
else {
//ally
if (vgap.allied(ship.ownerid)) {
if (activeColorMod==false)
{
grad.addColorStop(0, sets.allyshipfrom);
grad.addColorStop(1, sets.allyshipto);
}
else
{
grad.addColorStop(0,colorsA[ship.ownerid-1]);
grad.addColorStop(1,colorsA2[ship.ownerid-1]);
}
}
else {
//enemy
if (activeColorMod==false)
{
grad.addColorStop(0, sets.enemyshipfrom);
grad.addColorStop(1, sets.enemyshipto);
}
else
{
grad.addColorStop(0,colorsA[ship.ownerid-1]);
grad.addColorStop(1,colorsA2[ship.ownerid-1]);
}
}
}
ctx.fillStyle = grad;
var note = vgap.getNote(ship.id, 2);
if (note != null && note.color != "")
ctx.fillStyle = "#" + note.color;
ctx.beginPath();
ctx.arc(mapX, mapY, rad, 0, Math.PI * 2, false);
ctx.closePath();
ctx.fill();
}
}
}
// topOffset += this.canvasSize;
// if (topOffset >= (4000 * this.zoom)) {
// topOffset = 0;
// leftOffset += this.canvasSize;
// }
}
this.canvasRendered = true;
}
};
var oldDrawWaypoints = vgapMap.prototype.drawWaypoints;
vgapMap.prototype.drawWaypoints = function () {
if ((activeColorMod==false)||(vgaPlanets.prototype.version>=3))
{
oldDrawWaypoints.apply(this,arguments);
}
else
{
var sets = vgap.accountsettings;
this.waypoints.remove();
this.waypoints = this.paper.set();
for (var i = 0; i < vgap.ships.length; i++) {
//waypoint
var ship = vgap.ships[i];
if (ship.ownerid != vgap.player.id) {
if (ship.heading != -1 && ship.warp != 0) {
var color;
if (activeColorMod==false)
color = sets.enemyshipto;
else
color=colorsA2[ship.ownerid-1];
if (vgap.allied(ship.ownerid))
if (activeColorMod==false)
color = sets.allyshipto;
else
color=colorsA2[ship.ownerid-1];
var speed = vgap.getSpeed(ship.warp, ship.hullid);
var x2 = ship.x + Math.round(Math.sin(Math.toRad(ship.heading)) * speed);
var y2 = ship.y + Math.round(Math.cos(Math.toRad(ship.heading)) * speed);
ship.targetx = x2;
ship.targety = y2;
// if (ship.iscloaked)
// this.waypoints.push(this.paper.path("M" + this.screenX(ship.x) + " " + this.screenY(ship.y) + "L" + this.screenX(x2) + " " + this.screenY(y2)).attr({ stroke: color, //"stroke-width": "1", "stroke-dasharray": "-", "stroke-opacity": 0.5 }));
// else
this.waypoints.push(this.paper.path("M" + this.screenX(ship.x) + " " + this.screenY(ship.y) + "L" + this.screenX(x2) + " " + this.screenY(y2)).attr({ stroke: color, "stroke-width": "2", "stroke-opacity": 0.5 }));
}
}
else {
if (vgap.isChunnelling(ship)) {
var targetId = parseInt(ship.friendlycode, 10);
var target = vgap.getShip(targetId);
this.waypoints.push(this.paper.path("M" + this.screenX(ship.x) + " " + this.screenY(ship.y) + "L" + this.screenX(target.x) + " " + this.screenY(target.y)).attr({ stroke: "cyan", "stroke-width": "3", "stroke-dasharray": "-", "stroke-opacity": 0.5 }));
}
else {
var params;
if ((activeColorMod==false) || (defaultMyColor==true))
// if (ship.iscloaked)
// params = { stroke: sets.myshipto, "stroke-width": "2","stroke-dasharray": "-", "stroke-opacity": 0.5 };
// else
params = { stroke: sets.myshipto, "stroke-width": "2", "stroke-opacity": 0.5 };
else
// if (ship.iscloaked)
// params = { stroke: colorsA2[ship.ownerid-1], "stroke-width": "2","stroke-dasharray": "-", "stroke-opacity": 0.5 };
// else
params = { stroke: colorsA2[ship.ownerid-1], "stroke-width": "2", "stroke-opacity": 0.5 };
if (vgap.isHyping(ship))
params = { stroke: "beige", "stroke-dasharray": ".", "stroke-width": "2", "stroke-opacity": 0.5 };
var path = vgap.getPath(ship);
for (var j = 0; j < path.length; j++) {
this.waypoints.push(this.paper.path("M" + this.screenX(path[j].x1) + " " + this.screenY(path[j].y1) + "L" + this.screenX(path[j].x2) + " " + this.screenY(path[j].y2)).attr(params));
}
}
}
}
}
};
var oldShow = geoSimpleColorPicker.prototype.show;
geoSimpleColorPicker.prototype.show = function (targetId, callback) {
if (activeColorMod==false)
{
oldShow.apply(this,arguments);
}
else
{
this.picker = $("<div style='position:absolute;background-color:#000;padding:4px;z-index:999;'></div>").hide().appendTo("body");
this.target = $("#" + targetId);
this.callback = callback;
//colors table
var objX = new Array('00', '33', '66', '99', 'CC', 'FF');
html = '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
var br = 1;
for (o = 0; o < 6; o++) {
html += '</tr><tr>';
for (y = 0; y < 6; y++) {
if (y == 3) { html += '</tr><tr>'; }
for (x = 0; x < 6; x++) {
var grid = objX[o] + objX[y] + objX[x];
html += '<td><div title="#' + grid + '" onclick="colorPicker.selectColor(\'' + grid + '\');" style="cursor:pointer;margin: 1px;width:20px;height:20px;background-color:#' + grid + '"></div></td>';
}
}
}
html += '</tr></table>';
//greys table
var objX = new Array('0', '3', '6', '9', 'C', 'F');
html += '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
var br = 0;
for (y = 0; y < 6; y++) {
for (x = 0; x < 6; x++) {
if (br == 18) {
br = 0;
html += '</tr><tr>';
}
br++;
var grid = objX[y] + objX[x] + objX[y] + objX[x] + objX[y] + objX[x];
html += '<td><div title="#' + grid + '" onclick="colorPicker.selectColor(\'' + grid + '\');" style="cursor:pointer;margin: 1px;width:20px;height:20px;background-color:#' + grid + '"></div></td>';
}
}
html += "</tr></table>";
html += '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
var br = 0;
for (y = 0; y < 2; y++) {
for (x = 0; x < 10; x++) {
if (br == 10) {
br = 0;
html += '</tr><tr>';
}
br++;
var grid;
if (y==0)
{
if (colorsA[x].charAt(0)=='#')
grid = colorsA[x].substring(1,colorsA.length);
else
grid = colorsA[x];
}
else
{
if (colorsA2[x].charAt(0)=='#')
grid = colorsA2[x].substring(1,colorsA2.length);
else
grid = colorsA2[x];
}
html += '<td><div title="#' + grid + '" onclick="colorPicker.selectColor(\'' + grid + '\');" style="cursor:pointer;margin: 1px;width:20px;height:20px;background-color:#' + grid + '"></div></td>';
}
}
html += '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
html += '<td><div title="clear" onclick="colorPicker.selectColor(\'clear\');" style="cursor:pointer;margin: 1px;width:80px;height:20px;text-align:center;border: solid 1px #fff;color: #fff;">CLEAR</div></td>';
html += "</tr></table>";
this.picker.css("left", this.target.offset().left);
this.picker.css("top", this.target.offset().top + this.target.height() + 10);
this.picker.html(html);
if (vgaPlanets.prototype.version>=3)
$(".cpselect").tclick(function () { colorPicker.selectColor($(this).data("color")); });
this.picker.show();
}
};
var oldMineText = vgapMap.prototype.mineText;
vgapMap.prototype.mineText = function (x, y) {
if ((activeColorMod==false)||(vgaPlanets.prototype.version>=3))
{
oldMineText.apply(this,arguments);
}
else
{
var txt = "";
for (var i = 0; i < vgap.minefields.length; i++) {
var minefield = vgap.minefields[i];
if (this.getDist(minefield.x, minefield.y, x, y) <= minefield.radius) {
txt += "<div class='ItemSelectionBox minCorrection'><span>";
if (minefield.ownerid == vgap.player.id)
if (minefield.isweb)
txt += "Your Web Minefield ";
else
txt += "Your Minefield ";
else {
var player = vgap.getPlayer(minefield.ownerid);
var race = vgap.getRace(player.raceid);
if (minefield.isweb)
txt += race.adjective + " (" + player.username + ") Web Minefield ";
else
txt += race.adjective + " (" + player.username + ") Minefield ";
}
txt += "Id:" + minefield.id + "</span>";
txt += "<table class='CleanTable'>";
txt += "<tr><td> Radius: </td><td> " + gsv(minefield.radius) + " </td><td> Mines: </td><td> " + gsv(minefield.units) + " </td></tr>";
txt += "<tr><td> Friendly: </td><td> " + gsv(minefield.friendlycode) + " </td></tr>";
txt += "</table></div>";
}
}
return txt;
}
};
var oldShowSettings = vgapDashboard.prototype.showSettings;
vgapDashboard.prototype.showSettings = function () {
var new_html="";
new_html += "<br><h3>Custom Settings for Color Mod</h3>";
new_html += "<div style='width:250px;'></div>";
new_html += "<div id='Test'><table>";
new_html += "<tr><td><div id='LaunchSim' onclick='vgapDashboard.prototype.resetColorModColors();' title='Default is: Active.'>Reset all custom color settings </div></td>";
new_html += "<td><div id='LaunchSim' onclick='vgapDashboard.prototype.changeDefaultMyColor();' title='Default is: Active.'>Use default colors for My Race Only</div></td>";
new_html += "<td><div id='LaunchSim' onclick='vgapDashboard.prototype.changeColorMod();' title='Default is: Active.'>Activate or Deactivate Color Mod</div></td></tr></table>";
new_html += "<div id='AccountSettings2'><table>";
new_html += "<tr><th>Color Settings</th></tr>";
//html += this.renderSetColorMod("Race 1", "test");
new_html += "<tr><td>" + "Race 1" + "</td><td><input type='text' id='Race1' onchange='SaveRace();' value='" + colorsA[0] + "'/></td><td><input type='text' id='Race1A' onchange='SaveRace();' value='" + colorsA2[0] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[0] + "), color-stop(1, " + colorsA2[0] + ")); background: -moz-linear-gradient(top left," + colorsA[0] + " 0%, " + colorsA2[0] + " 100%)' type='text' id='IgnoreRace1' value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 2" + "</td><td><input type='text' id='Race2' onchange='SaveRace();' value='" + colorsA[1] + "'/></td><td><input type='text' id='Race2A' onchange='SaveRace();' value='" + colorsA2[1] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[1] + "), color-stop(1, " + colorsA2[1] + ")); background: -moz-linear-gradient(top left," + colorsA[1] + " 0%, " + colorsA2[1] + " 100%)' type='text' id='IgnoreRace1' value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 3" + "</td><td><input type='text' id='Race3' onchange='SaveRace();' value='" + colorsA[2] + "'/></td><td><input type='text' id='Race3A' onchange='SaveRace();' value='" + colorsA2[2] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[2] + "), color-stop(1, " + colorsA2[2] + ")); background: -moz-linear-gradient(top left," + colorsA[2] + " 0%, " + colorsA2[2] + " 100%)' type='text' id='IgnoreRace3' value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 4" + "</td><td><input type='text' id='Race4' onchange='SaveRace();' value='" + colorsA[3] + "'/></td><td><input type='text' id='Race4A' onchange='SaveRace();' value='" + colorsA2[3] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[3] + "), color-stop(1, " + colorsA2[3] + ")); background: -moz-linear-gradient(top left," + colorsA[3] + " 0%, " + colorsA2[3] + " 100%)' type='text' id='IgnoreRace4 value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 5" + "</td><td><input type='text' id='Race5' onchange='SaveRace();' value='" + colorsA[4] + "'/></td><td><input type='text' id='Race5A' onchange='SaveRace();' value='" + colorsA2[4] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[4] + "), color-stop(1, " + colorsA2[4] + ")); background: -moz-linear-gradient(top left," + colorsA[4] + " 0%, " + colorsA2[4] + " 100%)' type='text' id='IgnoreRace5' value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 6" + "</td><td><input type='text' id='Race6' onchange='SaveRace();' value='" + colorsA[5] + "'/></td><td><input type='text' id='Race6A' onchange='SaveRace();' value='" + colorsA2[5] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[5] + "), color-stop(1, " + colorsA2[5] + ")); background: -moz-linear-gradient(top left," + colorsA[5] + " 0%, " + colorsA2[5] + " 100%)' type='text' id='IgnoreRace6 value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 7" + "</td><td><input type='text' id='Race7' onchange='SaveRace();' value='" + colorsA[6] + "'/></td><td><input type='text' id='Race7A' onchange='SaveRace();' value='" + colorsA2[6] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[6] + "), color-stop(1, " + colorsA2[6] + ")); background: -moz-linear-gradient(top left," + colorsA[6] + " 0%, " + colorsA2[6] + " 100%)' type='text' id='IgnoreRace7' value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 8" + "</td><td><input type='text' id='Race8' onchange='SaveRace();' value='" + colorsA[7] + "'/></td><td><input type='text' id='Race8A' onchange='SaveRace();' value='" + colorsA2[7] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[7] + "), color-stop(1, " + colorsA2[7] + ")); background: -moz-linear-gradient(top left," + colorsA[7] + " 0%, " + colorsA2[7] + " 100%)' type='text' id='IgnoreRace8 value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 9" + "</td><td><input type='text' id='Race9' onchange='SaveRace();' value='" + colorsA[8] + "'/></td><td><input type='text' id='Race9A' onchange='SaveRace();' value='" + colorsA2[8] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[8] + "), color-stop(1, " + colorsA2[8] + ")); background: -moz-linear-gradient(top left," + colorsA[8] + " 0%, " + colorsA2[8] + " 100%)' type='text' id='IgnoreRace9' value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 10" + "</td><td><input type='text' id='Race10' onchange='SaveRace();' value='" + colorsA[9] + "'/></td><td><input type='text' id='Race10A' onchange='SaveRace();' value='" + colorsA2[9] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[9] + "), color-stop(1, " + colorsA2[9] + ")); background: -moz-linear-gradient(top left, " + colorsA[9] + " 0%, " + colorsA2[9] + " 100%)' type='text' id='IgnoreRace10 value=' '/></td></tr>";
new_html += "<tr><td>" + "Race 11" + "</td><td><input type='text' id='Race11' onchange='SaveRace();' value='" + colorsA[10] + "'/></td><td><input type='text' id='Race11A' onchange='SaveRace();' value='" + colorsA2[10] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[10] + "), color-stop(1, " + colorsA2[10] + ")); background: -moz-linear-gradient(top left, " + colorsA[10] + " 0%, " + colorsA2[10] + " 100%)' type='text' id='IgnoreRace11' value=' '/></td></tr>";
new_html += "<tr><td>" + "Unoccupied" + "</td><td><input type='text' id='ModInfo' onchange='SaveRace();' value='" + modInfo + "'/></td><td><input type='text' id='ModInfo2' onchange='SaveRace();' value='" + modInfo2 + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + modInfo + "), color-stop(1, " + modInfo2 + ")); background: -moz-linear-gradient(top left, " + modInfo + " 0%, " + modInfo2 + " 100%)' type='text' id='IgnoreInfo value=' '/></td></tr>";
new_html += "<tr><td>" + "Unknown" + "</td><td><input type='text' id='ModUnknown' onchange='SaveRace();' value='" + modUnknown + "'/></td><td><input type='text' id='ModUnknown2' onchange='SaveRace();' value='" + modUnknown2 + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + modUnknown + "), color-stop(1, " + modUnknown2 + ")); background: -moz-linear-gradient(top left, " + modUnknown + " 0%, " + modUnknown2 + " 100%)' type='text' id='IgnoreUnknown value=' '/></td></tr>";
new_html += "<tr><td><input type='text' id='ModRace' onchange='SaveRaceNum();' value='" + modRace + "'/></td><td><input type='text' id='ModRace2' onchange='SaveRace();' value='" + colorsA[modRace-1] + "'/></td><td><input type='text' id='ModRace3' onchange='SaveRace();' value='" + colorsA2[modRace-1] + "'/></td><td><input style='background: -webkit-gradient(linear,left top, right bottom, color-stop(0, " + colorsA[modRace-1] + "), color-stop(1, " + colorsA2[modRace-1] + ")); background: -moz-linear-gradient(top left, " + colorsA[modRace-1] + " 0%, " + colorsA2[modRace-1] + " 100%)' type='text' id='IgnoreRaceMod value=' '/></td></tr>";
//html += "<tr><td>Test</td>" + "<td>Test2</td>" + "<td><input style='background: -moz-linear-gradient(top left, #ccffff 0%, #00ffff 100%); background: -webkit-gradient(linear, left top, right bottom, color-stop(0, #000000), color-stop(1, #ffffff))' type='text' id='IgnoreMe2' value=' '/></tr></td>";
//html += "<tr><td>Test2</td>" + "<td>Test3</td>" + "<td><input style='background: -webkit-gradient(linear, left top, right bottom, color-stop(0, #000000), color-stop(1, #ffffff)) background: -moz-linear-gradient(top left, #ccffff 0%, #00ffff 100%)' type='text' id='IgnoreMe' value=' '/></tr></td>";
//html += "<tr><td>Test</td>" + "<td>Test2</td>" + "<td><input style='background: -webkit-gradient(linear, left top, right bottom, color-stop(0, #000000), color-stop(1, #ffffff))' type='text' id='IgnoreMe2' value=' '/></tr></td>";
//html += "<tr><td><input style='background: -webkit-gradient(linear, left top, right bottom, from(#ccc), to(#000)); background: -moz-linear-gradient(top, #ccc, #000);' type='text' id='IgnoreMe' value=' '</td></tr>";
//html += "<tr><td><input style='background: -moz-linear-gradient(top, #ccc, #000); background: -webkit-gradient(linear, left top, right bottom, from(#ccc), to(#000)); ' type='text' id='IgnoreMe' value=' '</td></tr>";
new_html += "</table></div>";
if (vgaPlanets.prototype.version>=3)
{
this.customSettingsContent.push(new_html);
}
oldShowSettings.apply(this,arguments);
if (vgaPlanets.prototype.version<3)
{
$('[onclick="vgap.resetTurn();"]').after(new_html);
this.pane.jScrollPane();
}
if (vgaPlanets.prototype.version>=3)
{
this.customSettingsContent.pop();
}
};
SaveRaceNum=function(){
modRace=$("#ModRace").val();//melee race specified
};
SaveRace=function(){
var i;
if (modRace>11)
{
colorsA[modRace-1]=$("#ModRace2").val();
colorsA2[modRace-1]=$("#ModRace3").val();
var String3="Race"+(modRace);
set_cookie(String3,colorsA[modRace-1],2029,1,1);
set_cookie(String3+"A",colorsA2[modRace-1],2029,1,1);
}
for (i=0;i<11;i++)
{
var String="#Race"+(i+1);
var String2="Race"+(i+1);
colorsA[i]= $(String).val();
set_cookie(String2,colorsA[i],2029,1,1);
colorsA2[i]=$(String+"A").val();
set_cookie(String2+"A",colorsA2[i],2029,1,1);
}
modInfo= $("#ModInfo").val();
modUnknown= $("#ModUnknown").val();
modInfo2= $("#ModInfo2").val();
modUnknown2= $("#ModUnknown2").val();
set_cookie("ModInfo",modInfo,2099,1,1);
set_cookie("ModUnknown",modUnknown,2029,1,1);
set_cookie("ModInfo2",modInfo2,2014,1,1);
set_cookie("ModUnknown2",modUnknown2,2029,1,1);
if (vgaPlanets.prototype.version<3)
vgap.map.updateZoom();
else
{
vgap.loadWaypoints();
vgap.shipScreen.screen.refresh();
}
vgap.map.draw();
};
set_cookie=function( name, value, exp_y, exp_m, exp_d, path, domain, secure )
//name=cookie name (required)
//value=cookie value (required)
//exp_y,M,d is expiration year, month, day (if blank cookie will delete when browser closes)
//path=path within site this applies to (can be blank)
//domain=apply only to websites in this domain (can be blank)
//secure=use SSL (leave blank)
{
var cookie_string = name + "=" + escape ( value );
if ( exp_y )
{
var expires = new Date ( exp_y, exp_m, exp_d );
cookie_string += "; expires=" + expires.toGMTString();
}
if ( path )
cookie_string += "; path=" + escape ( path );
if ( domain )
cookie_string += "; domain=" + escape ( domain );
if ( secure )
cookie_string += "; secure";
document.cookie = cookie_string;
};
get_cookie =function( cookie_name )
{
var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
if ( results )
return ( unescape ( results[2] ) );
else
return null;
};
vgapDashboard.prototype.saveToCookie = function(){
//alert("In Function save");
// set a new cookie
if (defaultMyColor==true)
{
set_cookie("defaultMyColor",1,2029,1,1);
//alert("set to true!!");
}
else{
set_cookie("defaultMyColor",0,2029,1,1);
//alert("set to false!!");
}
if (activeColorMod==true)
set_cookie("activeColorMod",1,2029,1,1);
else
set_cookie("activeColorMod",0,2029,1,1);
};
vgapDashboard.prototype.changeColorMod = function(){
if (activeColorMod==true)
{
activeColorMod=false;
alert("The Race Specific Color Mod is now Deactived.");
}
else
{
activeColorMod=true;
alert("The Race Specific Color Mod is now Active.");
}
vgapDashboard.prototype.saveToCookie()
vgap.map.updateZoom();
vgap.map.draw();
};
vgapDashboard.prototype.resetColorModColors = function(){
alert("Resetting all colors to Mod defaults");
colorsA =["#F0F8FF","#32CD32","#CD5C5C","#FFC0CB","#98FB98","#C0C0C0","#FFFF00","#EE82EE","#D3D3D3","#B0E0E6","#87CEFA","#7B68EE","#F4A460","#D2B48C","#FF6347","#F5DEB3","#F08080","#2F4F4F","#008080","#B22222","#808000","#9370DB","#00FF00","#4B0082","#D2B48C","#9ACD32", "#DAA520","#F0F8FF","#6B8E23","#FF4500"];
colorsA2 =["#FFFFFF","#006400","#FF0000","#FF69B4","#00FA9A","#6A5ACD","#FFD700","#9400D3","#808080","#00CED1","#4169E1","#7B68EE","#A0522D","#87CEEB","#FF6347","#F5DEB3","#F08080","#2F4F4F","#008080","#B22222","#808000","#9370DB","#00FF00","#4B0082","#D2B48C","#9ACD32", "#DAA520","#F0F8FF","#6B8E23","#FF4500"];
modInfo="#F4A460";//chocolate
modInfo2="#D2691E";//chocolate
modUnknown="#FFF8DC"; //Tan
modUnknown2="#D2B48C"; //Tan
vgapDashboard.prototype.saveToCookie();
vgap.map.updateZoom();
vgap.map.draw();
};
vgapDashboard.prototype.changeDefaultMyColor = function(){
if (defaultMyColor==true)
{
alert("Mod is no longer using Default colors for your race.");
defaultMyColor=false;
}
else
{
alert("Mod will now use Default color (aqua/green) for your race.");
defaultMyColor=true;
}
vgapDashboard.prototype.saveToCookie();
vgap.map.updateZoom();
vgap.map.draw();
};
checkColorModSettings = function(){
//Color Mod settings
//if null, then its unset - check the cookie
//if cookie doesn't exist, set to default.
if (activeColorMod==null)
{
var checkActive=null;
checkActive=get_cookie("activeColorMod");
if (checkActive==null)
{
activeColorMod=true;//no cookie, set to default
}
else if (checkActive==1)
{
activeColorMod=true;
}
else
{
activeColorMod=false;
}
}
if (defaultMyColor==null)
{
var checkColor=null;
checkColor=get_cookie("defaultMyColor");
if (checkColor==null)
{
defaultMyColor=true;//no cookie, set to default
}
else if (checkColor==1)
{
defaultMyColor=true;
}
else
{
defaultMyColor=false;
}
}
if (useCustomColor==false)
//have not checked cookies yet
{
var i;
var checkColor=null;
for (i=0;i<30;i++)
{
var String="Race"+(i+1);
checkColor=get_cookie(String);
if (checkColor)
colorsA[i]=checkColor;
checkColor=null;
checkColor=get_cookie(String+"A");
if (checkColor) colorsA2[i]=checkColor;
checkColor=null;
}
checkColor=get_cookie("ModInfo");
if (checkColor) modInfo=checkColor;
checkColor=null;
checkColor=get_cookie("ModUnknown");
if (checkColor) modUnknown=checkColor;
checkColor=null;
checkColor=get_cookie("ModInfo2");
if (checkColor) modInfo2=checkColor;
checkColor=null;
checkColor=get_cookie("ModUnknown2");
if (checkColor) modUnknown2=checkColor;
//set var so we know cookies have been checked
useCustomColor=true;
}
};
} //wrapper for injection
var script = document.createElement("script");
script.type = "application/javascript";
script.textContent = "(" + wrapper + ")();";
document.body.appendChild(script);