Color Coding for Planets.nu

Color codes planets and ships by race on Planets.nu map

目前为 2015-12-28 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Color Coding for Planets.nu
  3. // @description Color codes planets and ships by race on Planets.nu map
  4. // @include http://play.planets.nu/*
  5. // @include http://test.planets.nu/*
  6. // @include http://planets.nu/*
  7. // @version 2.3
  8. // @namespace https://greasyfork.org/users/2860
  9. // ==/UserScript==
  10.  
  11. // 1. Color codes planets and ships by race on Planets.nu map
  12. // 2. v0.5 - now activates or deactivates from Settings screen!
  13. // 3. v0.7 - now activates or deactivates default color for user from Settings screen
  14. // 4. v0.81 - now saves settings for the user to a cookie, when changed from the Settings Screen
  15. // 5. v0.90 - First 11 race colors, unknown planets, and unoccupied planets now configurable from Settings Screen!
  16. // 6. v1.0 - Fully functional! Uses color gradient for all planets. Displays color gradiant on Settings Screen (FF only, will tackle Chrome later)
  17. // 7. v1.1 - Chrome and FF color preview. Gradient colors for standard game races, info, and unknown
  18. // 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
  19. // 9. v1.3 - rewrote Settings changes to play nicely with other mods.
  20. // 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).
  21. // 11.v1.5,1.51 - added support for new play.planets.nu client
  22. // 12.v1.6 - New note colors that match the mod.
  23. // 13.v1.61 - added support for new planets urls
  24. // 14.v1.7 - Adds planets v3 API support
  25. // 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).
  26. // 16.v1.9 - Graphics change for cloaked ships on map
  27. // 17.v2.0 - Split from codebase for original planets.nu implementation
  28. // 18.v2.1 - Fixes multiple bugs. Minefields laid in other races name are displayed with the Unknown Owner color (previously would not work with color mod).
  29. // 19.v2.11 - Fixes bug which results in allied ships not appearing properly around planets
  30. // 20.v2.12 - Imports performance improving changes from planets.nu UI - should fix misc bugs and improve performance
  31. // 21.v2.2 - Option to use Color Picker colors. New button to reset note colors to blank.
  32. // 22.v2.21 - changed include so doesn't run on old client
  33. // 23.v2.22,v.2.24 - updated to work with Sphere
  34. // 24.v2.3 - Modifies mouse-over text for minefields so you can tell if web or regular minefield
  35.  
  36. function wrapper () { // wrapper for injection
  37. //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"];
  38.  
  39. 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"];
  40. 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"];
  41.  
  42. var modInfo="#F4A460";//chocolate
  43. var modInfo2="#D2691E";//chocolate
  44.  
  45. var modUnknown="#FFF8DC"; //Tan
  46. var modUnknown2="#D2B48C"; //Tan
  47. var modRace=12;
  48. var useColorPicker=0;
  49.  
  50. // Fed - White
  51. // Lizard - Green
  52. // Birds - Crimson
  53. // Fascists - Pink
  54. // Privateers - Lime
  55. // Cyborg - Magenta
  56. // Crystals - Yellow
  57. // Empire - Purple
  58. // Robots - Gray
  59. // Rebels - Aqua
  60. // Colonies - Blue
  61.  
  62. var activeColorMod=null;//default true
  63. var defaultMyColor=null;//default true
  64. var useCustomColor=false;//have we checked Cookie
  65. var firstLoad=true;
  66.  
  67.  
  68. var oldShow = geoSimpleColorPicker.prototype.show;
  69.  
  70.  
  71. geoSimpleColorPicker.prototype.show = function (targetId, callback) {
  72. if (activeColorMod==false)
  73. {
  74. oldShow.apply(this,arguments);
  75. }
  76. else
  77. {
  78. this.picker = $("<div style='position:absolute;background-color:#000;padding:4px;z-index:999;'></div>").hide().appendTo("body");
  79. this.target = $("#" + targetId);
  80. this.callback = callback;
  81. //colors table
  82. var objX = new Array('00', '33', '66', '99', 'CC', 'FF');
  83. html = '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
  84. var br = 1;
  85. for (o = 0; o < 6; o++) {
  86. html += '</tr><tr>';
  87. for (y = 0; y < 6; y++) {
  88. if (y == 3) { html += '</tr><tr>'; }
  89. for (x = 0; x < 6; x++) {
  90. var grid = objX[o] + objX[y] + objX[x];
  91. html += '<td><div title="#' + grid + '" onclick="colorPicker.selectColor(\'' + grid + '\');" style="cursor:pointer;margin: 1px;width:20px;height:20px;background-color:#' + grid + '"></div></td>';
  92. }
  93. }
  94. }
  95. html += '</tr></table>';
  96.  
  97. //greys table
  98. var objX = new Array('0', '3', '6', '9', 'C', 'F');
  99. html += '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
  100. var br = 0;
  101. for (y = 0; y < 6; y++) {
  102. for (x = 0; x < 6; x++) {
  103. if (br == 18) {
  104. br = 0;
  105. html += '</tr><tr>';
  106. }
  107. br++;
  108. var grid = objX[y] + objX[x] + objX[y] + objX[x] + objX[y] + objX[x];
  109. html += '<td><div title="#' + grid + '" onclick="colorPicker.selectColor(\'' + grid + '\');" style="cursor:pointer;margin: 1px;width:20px;height:20px;background-color:#' + grid + '"></div></td>';
  110. }
  111. }
  112. html += "</tr></table>";
  113. html += '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
  114. var br = 0;
  115. for (y = 0; y < 2; y++) {
  116. for (x = 0; x < 10; x++) {
  117. if (br == 10) {
  118. br = 0;
  119. html += '</tr><tr>';
  120. }
  121. br++;
  122. var grid;
  123. if (y==0)
  124. {
  125. if (colorsA[x].charAt(0)=='#')
  126. grid = colorsA[x].substring(1,colorsA.length);
  127. else
  128. grid = colorsA[x];
  129. }
  130. else
  131. {
  132. if (colorsA2[x].charAt(0)=='#')
  133. grid = colorsA2[x].substring(1,colorsA2.length);
  134. else
  135. grid = colorsA2[x];
  136. }
  137. html += '<td><div title="#' + grid + '" onclick="colorPicker.selectColor(\'' + grid + '\');" style="cursor:pointer;margin: 1px;width:20px;height:20px;background-color:#' + grid + '"></div></td>';
  138. }
  139. }
  140. html += '<table bgcolor="#000" border="0" cellpadding="0" cellspacing="0" style="padding:2px;"><tr>';
  141. 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>';
  142. html += "</tr></table>";
  143. this.picker.css("left", this.target.offset().left);
  144. this.picker.css("top", this.target.offset().top + this.target.height() + 10);
  145. this.picker.html(html);
  146. if (vgaPlanets.prototype.version>=3)
  147. $(".cpselect").tclick(function () { colorPicker.selectColor($(this).data("color")); });
  148. this.picker.show();
  149. }
  150. };
  151.  
  152. // vgap3.js functions
  153.  
  154.  
  155. var oldDraw = vgapMap.prototype.draw;
  156.  
  157. vgapMap.prototype.draw = function (fast, ctx, skipUserContent, secondCanvas) {
  158.  
  159. //check Color Mod Settings
  160. checkColorModSettings();
  161. if ((activeColorMod==false)||(vgaPlanets.prototype.version<3))
  162. {
  163. oldDraw.apply(this,arguments);
  164. }
  165. else
  166. {
  167. if (drawing)
  168. return;
  169. //remove planet names (and re-add at the end)
  170. $(".PlanetName").remove();
  171.  
  172. this.startdrawtime = new Date;
  173.  
  174. if (!ctx && fast) {
  175. this.drawFromSecond();
  176. this.showDrawTime(fast);
  177. return;
  178. }
  179.  
  180. //if (!ctx && fast && this.spritecache().tiles) {
  181. // this.drawFromTiles();
  182. // this.showDrawTime(fast);
  183. // return;
  184. //}
  185.  
  186. var drawing = true;
  187.  
  188. var fullrender = true;
  189. if (fast)
  190. fullrender = false;
  191.  
  192. var sets = vgap.accountsettings;
  193. var drawUserContent = true;
  194. if (skipUserContent)
  195. drawUserContent = false;
  196.  
  197. if (!ctx)
  198. ctx = this.ctx;
  199.  
  200.  
  201. ctx.fillStyle = "#000000";
  202. ctx.clearRect(0, 0, vgap.map.canvas.width, vgap.map.canvas.height);
  203. if (this.activeShip) {
  204. vgap.shipScreen.predraw();
  205. }
  206. //Debris Disk stroke
  207. if (vgap.map.zoom >= 5 && fullrender) {
  208. for (var i = 0; i < vgap.debrisdisks.length; i++) {
  209.  
  210. var planet = vgap.debrisdisks[i];
  211. var rad = planet.debrisdisk * vgap.map.zoom;
  212.  
  213. var visible = this.isVisible(planet.x, planet.y, planet.debrisdisk);
  214.  
  215. //if on this canvas
  216. if (visible) {
  217.  
  218. //draw rings
  219. var screenX = this.screenX(planet.x);
  220. var screenY = this.screenY(planet.y);
  221.  
  222. var color = "#ffffff";
  223. ctx.strokeStyle = colorToRGBA(color, 0.1);
  224. ctx.lineWidth = 2;
  225.  
  226. ctx.beginPath();
  227. ctx.arc(screenX, screenY, rad, 0, Math.PI * 2, false);
  228. ctx.closePath();
  229. ctx.stroke();
  230. }
  231. }
  232. for (var i = 0; i < vgap.debrisdisks.length; i++) {
  233. var planet = vgap.debrisdisks[i];
  234. var rad = planet.debrisdisk * vgap.map.zoom - 2;
  235.  
  236. var visible = this.isVisible(planet.x, planet.y, planet.debrisdisk);
  237.  
  238. //if on this canvas
  239. if (visible) {
  240.  
  241. //draw centers
  242. var screenX = this.screenX(planet.x);
  243. var screenY = this.screenY(planet.y);
  244.  
  245. //blank centers (for overlapping circles)
  246. ctx.fillStyle = "#111111";
  247. ctx.beginPath();
  248. ctx.arc(screenX, screenY, rad, 0, Math.PI * 2, false);
  249. ctx.closePath();
  250. ctx.fill();
  251. }
  252. }
  253. }
  254.  
  255. //draw full detail grid
  256. var drawgrid = vgap.map.zoom >= 40;
  257. if (vgap.settings.isacademy)
  258. drawgrid = vgap.map.zoom >= 30;
  259. if (drawgrid && fullrender) {
  260.  
  261. ctx.strokeStyle = "#222";
  262. ctx.lineWidth = 1;
  263.  
  264. var gridsize = vgap.map.canvas.width / vgap.map.canvas.mapwidth;
  265. var srad = gridsize / 2;
  266. var x = Math.floor(vgap.map.canvas.x);
  267. for (var i = 0; i <= (vgap.map.canvas.mapwidth + 1) ; i++) {
  268. var y = Math.floor(vgap.map.canvas.y);
  269. for (var j = 0; j <= (vgap.map.canvas.mapheight + 1) ; j++) {
  270. var screenX = this.screenX(x);
  271. var screenY = this.screenY(y);
  272. ctx.strokeRect(screenX - srad, screenY - srad, srad * 2, srad * 2);
  273. ctx.strokeRect(screenX - 1, screenY - 1, 2, 2);
  274. y++;
  275. }
  276. x++;
  277. }
  278. }
  279.  
  280. if (vgap.settings.sphere && vgap.accountsettings.sphereborder)
  281. {
  282. ctx.strokeStyle = "#222";
  283. ctx.lineWidth = 1;
  284. ctx.strokeRect(this.screenX(2000 - vgap.settings.mapwidth/2 - 10), this.screenY(2000 + vgap.settings.mapheight/2 + 10), (vgap.settings.mapwidth + 20) * this.zoom, (vgap.settings.mapheight + 20) * this.zoom);
  285. }
  286. //nebulas
  287. if (vgap.nebulas && fullrender) {
  288.  
  289. for (var i = 0; i < vgap.nebulas.length; i++) {
  290. var neb = vgap.nebulas[i];
  291.  
  292. //var rad = neb.radius * vgap.map.zoom;
  293. var visible = this.isVisible(neb.x, neb.y, neb.radius);
  294.  
  295. //if on this canvas
  296. if (visible) {
  297. var screenX = this.screenX(neb.x);
  298. var screenY = this.screenY(neb.y);
  299. this.drawNebula(screenX, screenY, neb, ctx);
  300. }
  301. }
  302. }
  303.  
  304. //stars
  305. if (vgap.stars && fullrender) {
  306. for (var i = 0; i < vgap.stars.length; i++) {
  307.  
  308. var star = vgap.stars[i];
  309.  
  310. //var rad = Math.sqrt(star.mass) * vgap.map.zoom;
  311. var visible = this.isVisible(star.x, star.y, Math.sqrt(star.mass));
  312.  
  313. if (visible) {
  314. var screenX = this.screenX(star.x);
  315. var screenY = this.screenY(star.y);
  316. this.drawStar(screenX, screenY, star, ctx);
  317. }
  318. }
  319. }
  320.  
  321. //minefields
  322. if (fullrender) {
  323. for (var i = 0; i < vgap.minefields.length; i++) {
  324. var minefield = vgap.minefields[i];
  325. var rad = minefield.radius * vgap.map.zoom;
  326. var visible = this.isVisible(minefield.x, minefield.y, minefield.radius);
  327.  
  328. //if on this canvas
  329. if (visible) {
  330.  
  331. var screenX = this.screenX(minefield.x);
  332. var screenY = this.screenY(minefield.y);
  333. this.drawMinefield(screenX, screenY, minefield.color, rad, ctx, minefield.isweb);
  334. }
  335. }
  336. }
  337.  
  338. //ions
  339. if (fullrender) {
  340. for (var i = 0; i < vgap.ionstorms.length; i++) {
  341. var storm = vgap.ionstorms[i];
  342.  
  343. var rad = storm.radius * vgap.map.zoom;
  344. var visible = this.isVisible(storm.x, storm.y, storm.radius);
  345.  
  346. //if on this canvas
  347. if (visible) {
  348. var screenX = this.screenX(storm.x);
  349. var screenY = this.screenY(storm.y);
  350. this.drawIon(screenX, screenY, storm.voltage, rad, ctx, storm);
  351. }
  352. }
  353. }
  354.  
  355. //planets
  356. for (var i = 0; i < vgap.planets.length; i++) {
  357.  
  358. var planet = vgap.planets[i];
  359.  
  360. var skip = false;
  361.  
  362. if (!skip) {
  363. var rad = this.planetRad(planet);
  364. var visible = this.isVisible(planet.x, planet.y, rad + 8);
  365.  
  366. //if on this canvas
  367. if (visible) {
  368.  
  369. var screenX = this.screenX(planet.x);
  370. var screenY = this.screenY(planet.y);
  371.  
  372. //draw warp well
  373. if (vgap.map.zoom >= 10 && planet.debrisdisk == 0 && fullrender) {
  374.  
  375. ctx.fillStyle = "#000000";
  376. ctx.strokeStyle = "#555555";
  377. ctx.lineWidth = 1;
  378. for (var x = (planet.x - 3) ; x <= planet.x + 3; x++) {
  379. for (var y = (planet.y - 3) ; y <= planet.y + 3; y++) {
  380. if (Math.dist(x, y, planet.x, planet.y) <= 3) {
  381. var mX = this.screenX(x);
  382. var mY = this.screenY(y);
  383. var srad = vgap.map.zoom / 2;
  384. ctx.fillRect(mX - srad, mY - srad, srad * 2, srad * 2);
  385. ctx.strokeRect(mX - srad, mY - srad, srad * 2, srad * 2);
  386. }
  387. }
  388. }
  389. }
  390.  
  391. //var img = this.renderPlanet(planet);
  392. //ctx.drawImage(img, screenX - rad - 1, screenY - rad - 1);
  393.  
  394. this.drawPlanet(planet, ctx, fullrender);
  395. }
  396. }
  397. }
  398. //Debris Disk Fill
  399. if (fullrender) {
  400. for (var i = 0; i < vgap.debrisdisks.length; i++) {
  401. var planet = vgap.debrisdisks[i];
  402. var rad = planet.debrisdisk * vgap.map.zoom;
  403.  
  404. var visible = this.isVisible(planet.x, planet.y, rad);
  405.  
  406. //if on this canvas
  407. if (visible) {
  408.  
  409. //draw centers
  410. var screenX = this.screenX(planet.x);
  411. var screenY = this.screenY(planet.y);
  412. this.drawDebris(screenX, screenY, rad, ctx);
  413. }
  414. }
  415. }
  416. if (fullrender) {
  417. if (this.zoom > 40) {
  418.  
  419. //ships in space only
  420. for (var i = 0; i < vgap.ships.length; i++) {
  421. var ship = vgap.ships[i];
  422. var rad = this.shipRad(ship);
  423. var visible = this.isVisible(ship.x, ship.y, rad);
  424.  
  425. if (visible)
  426. this.drawShip(ship, ctx);
  427.  
  428. }
  429. }
  430. else {
  431. //ships in space only
  432. for (var i = 0; i < vgap.inspace.length; i++) {
  433. var ship = vgap.inspace[i];
  434. var rad = this.shipRad(ship);
  435. var visible = this.isVisible(ship.x, ship.y, rad);
  436.  
  437. if (visible)
  438. this.drawShip(ship, ctx);
  439. }
  440. }
  441. }
  442. //Explosions
  443. if (fullrender) {
  444. for (var i = 0; i < vgap.explosions.length; i++) {
  445. var message = vgap.explosions[i];
  446. var screenX = this.screenX(message.x);
  447. var screenY = this.screenY(message.y);
  448. var rad = 4;
  449. if (message.fatal)
  450. rad = 6;
  451.  
  452. // Stroked X
  453. ctx.beginPath();
  454. ctx.moveTo(screenX - rad, screenY - rad);
  455. ctx.lineTo(screenX + rad, screenY + rad);
  456. ctx.moveTo(screenX + rad, screenY - rad);
  457. ctx.lineTo(screenX - rad, screenY + rad);
  458. ctx.closePath();
  459.  
  460. ctx.strokeStyle = message.color;
  461. ctx.lineWidth = 2;
  462. ctx.stroke();
  463. if (message.messagetype == 10)
  464. ctx.fillText( message.body.substr(message.body.indexOf("the name of the ship was:")+"the name of the ship was:".length),screenX+20,screenY+14);
  465. }
  466. }
  467. //event callout for user scripts
  468. if (fullrender)
  469. vgap.callPlugins("draw");
  470.  
  471. //user content
  472. if (drawUserContent && fullrender)
  473. this.drawUserChangeable(ctx);
  474.  
  475.  
  476. //if (fast) {
  477. // if (vgap.map.drawtimer)
  478. // clearTimeout(vgap.map.drawtimer);
  479. // vgap.map.drawtimer = setTimeout(function () { vgap.map.draw(); }, 200);
  480. //}
  481.  
  482. //copy to second canvas for slow panning
  483. vgap.map.ctx2.clearRect(0, 0, vgap.map.canvas.width, vgap.map.canvas.height);
  484. vgap.map.ctx2.drawImage(vgap.map.canvas, 0, 0);
  485. vgap.map.canvas2.x = vgap.map.canvas.x;
  486. vgap.map.canvas2.y = vgap.map.canvas.y;
  487. vgap.map.canvas2.zoom = vgap.map.zoom;
  488. vgap.map.canvas2.centerX = vgap.map.centerX;
  489. vgap.map.canvas2.centerY = vgap.map.centerY;
  490.  
  491.  
  492. drawing = false;
  493. this.showDrawTime();
  494. }
  495. };
  496.  
  497. var oldSetMineColors = vgaPlanets.prototype.setMineColors;
  498.  
  499. vgaPlanets.prototype.setMineColors = function (minefield) {
  500. checkColorModSettings();
  501. var sets = vgap.accountsettings;
  502. if (activeColorMod==false)
  503. {
  504. oldSetMineColors.apply(this,arguments);
  505. }
  506.  
  507. else if (vgaPlanets.prototype.version>=3)
  508. {
  509. if ((defaultMyColor==true)&&(minefield.ownerid == vgap.player.id))
  510. minefield.color = sets.mymines;
  511. else //use new colors
  512. {
  513. if (minefield.ownerid>0)
  514. minefield.color=colorsA2[minefield.ownerid-1];
  515. else minefield.color=modUnknown2;
  516. if (useColorPicker>0)
  517. {
  518. var relation = vgap.getRelation(minefield.ownerid);
  519. if (relation.color && relation.color != "")
  520. minefield.color = "#" + relation.color;
  521. }
  522. }
  523. }
  524.  
  525. };
  526.  
  527. var oldDrawPlanet = vgapMap.prototype.drawPlanet;
  528.  
  529. vgapMap.prototype.drawPlanet = function(planet, ctx,fullrender)
  530. {
  531. if ((activeColorMod==false)||(vgaPlanets.prototype.version<3))
  532. {
  533. oldDrawPlanet.apply(this,arguments);
  534. }
  535. else if (vgaPlanets.prototype.version>=3)
  536. {
  537. var x = this.screenX(planet.x);
  538. var y = this.screenY(planet.y);
  539. var rad = this.planetRad(planet);
  540.  
  541. var from = planet.colorfrom;
  542. var to = planet.colorto;
  543.  
  544. if (vgap.godmode) {
  545. if (planet.flag == 1) {
  546. from = "#ffffff";
  547. to = "#0000ff";
  548. } else if (planet.flag == 2) {
  549. from = "#ffffff";
  550. to = "#00ff00";
  551. }
  552. }
  553.  
  554. //on first draw create a sprite
  555. var spritekey = "planet" + from.substring(1) + to.substring(1) + planet.isbase + (planet.debrisdisk > 0);
  556. this.drawPlanetSprite(spritekey, rad, from, to, planet.isbase);
  557. var grad = ctx.createLinearGradient(x - rad, y - rad, x + rad, y + rad);
  558. grad.addColorStop(0, from);
  559. grad.addColorStop(1, to);
  560. ctx.fillStyle = grad;
  561.  
  562. if (((this.zoom > 20 && planet.debrisdisk == 0) || (this.zoom > 100 && planet.debrisdisk > 0)) && vgap.animations && fullrender && vgap.map.fastrendering) {
  563.  
  564. if (planet.scale)
  565. rad *= planet.scale;
  566.  
  567. //draw the image of the planet
  568. if (!planet.imgObj) {
  569. planet.imgObj = new Image();
  570. planet.imgObj.onload = function () { vgap.map.draw(); };
  571. planet.imgObj.src = planet.img;
  572. if (planet.debrisdisk > 0) {
  573. planet.rotation = Math.random() * Math.PI;
  574. planet.scale = Math.random() * 0.5 + 0.5;
  575. }
  576. }
  577. else {
  578. if (planet.rotation > 0) {
  579. //draw rotated version
  580. ctx.save();
  581. ctx.translate(x, y);
  582. ctx.rotate(planet.rotation);
  583. ctx.drawImage(planet.imgObj, -rad, -rad, rad * 2, rad * 2);
  584. ctx.restore();
  585. }
  586. else
  587. ctx.drawImage(planet.imgObj, x - rad, y - rad, rad * 2, rad * 2);
  588.  
  589. }
  590.  
  591. if (planet.isbase) {
  592. var sb = vgap.getStarbase(planet.id);
  593. ctx.drawImage(vgap.sbimg[sb.starbasetype], x+(rad/3), y-rad, rad/1.5, rad/1.5);
  594. }
  595. }
  596. else if (vgap.map.zoom <= 2) {
  597. this.drawSprite(ctx, spritekey, x, y, rad + 1);
  598. }
  599. else {
  600. if (planet.isbase) {
  601. ctx.fillRect(x - rad, y - rad, rad * 2, rad * 2);
  602. }
  603. else {
  604. ctx.beginPath();
  605. ctx.arc(x, y, rad, 0, Math.PI * 2, false);
  606. ctx.closePath();
  607. ctx.fill();
  608. }
  609. }
  610. //stroke the planet appropriately
  611. if (this.zoom < 40 && fullrender)
  612. {
  613. var sets = vgap.accountsettings;
  614.  
  615. var color;
  616. var shipsAt = vgap.shipsAt(planet.x, planet.y);
  617. for (var j = 0; j < shipsAt.length; j++)
  618. {
  619. var number=shipsAt[j].ownerid;
  620. color=colorsA2[number-1];
  621. if (shipsAt[j].ownerid == vgap.player.id)
  622. planet.myShip = true;
  623. else
  624. {
  625. var relation = vgap.getRelation(shipsAt[j].ownerid)
  626. if (relation != null && relation.color && relation.color != "")
  627. planet.colorShip = relation.color;
  628. else if (vgap.allied(shipsAt[j].ownerid))
  629. planet.allyShip = true;
  630. else
  631. planet.enemyShip = true;
  632. }
  633. }
  634.  
  635. if (planet.myShip) {
  636. if (defaultMyColor==true)
  637. ctx.strokeStyle = sets.myshipfrom;
  638. else
  639. ctx.strokeStyle =colorsA2[vgap.player.id-1];
  640. this.drawPlanetStrokeSprite("myplanetship", 12, colorsA2[vgap.player.id-1]);
  641. ctx.lineWidth = 1;
  642. ctx.beginPath();
  643. ctx.arc(x, y, rad + 2, 0, Math.PI * 2, false);
  644. ctx.closePath();
  645. ctx.stroke();
  646. }
  647. if (planet.allyShip||planet.colorShip) {
  648.  
  649. this.drawPlanetStrokeSprite("allyplanetship", 10, color);
  650.  
  651. if (vgap.map.zoom <= 2) {
  652. this.drawSprite(ctx, "allyplanetship", x, y, rad + 5);
  653. }
  654. else {
  655.  
  656. ctx.strokeStyle = color;
  657. ctx.lineWidth = 1;
  658. ctx.beginPath();
  659. ctx.arc(x, y, rad + 4, 0, Math.PI * 2, false);
  660. ctx.closePath();
  661. ctx.stroke();
  662. }
  663. }
  664. if (planet.enemyShip) {
  665. this.drawPlanetStrokeSprite("enemyplanetship", 14, color);
  666. if (vgap.map.zoom <= 2) {
  667. this.drawSprite(ctx, "enemyplanetship", x, y, rad + 5);
  668. }
  669. else {
  670. ctx.strokeStyle = color;
  671. ctx.lineWidth = 1;
  672. ctx.beginPath();
  673. ctx.arc(x, y, rad + 6, 0, Math.PI * 2, false);
  674. ctx.closePath();
  675. ctx.stroke();
  676. }
  677. }
  678. }
  679. if (planet.note && planet.note.body.length > 0 && fullrender) {
  680. ctx.strokeStyle = "#FFFF00";
  681. ctx.lineWidth = 1;
  682. ctx.strokeRect(x - rad - 1, y - rad - 1, (rad + 1) * 2, (rad + 1) * 2);
  683. }
  684. }
  685. };
  686.  
  687. var oldDrawMinefield = vgapMap.prototype.drawMinefield;
  688.  
  689. vgapMap.prototype.drawMinefield = function (x, y, color, rad, ctx,isweb)
  690. {
  691. if (activeColorMod==false)
  692. {
  693. oldDrawMinefield.apply(this,arguments);
  694. }
  695. else if (vgaPlanets.prototype.version>=3)
  696. {
  697. var grad = ctx.createRadialGradient(x, y, 0, x, y, rad);
  698. var spritekey = "mine" + color.substring(1);
  699. if (!vgap.map.sprites[spritekey]) {
  700. sctx = vgap.map.spritectx;
  701. var soffset = vgap.map.spriteindex * vgap.map.spritewidth;
  702. var srad = 24;
  703. var sx = soffset + srad+1;
  704. var sy = srad+1;
  705.  
  706. var grad = sctx.createRadialGradient(sx, sy, 0, sx, sy, srad);
  707. if (isweb==false)
  708. {
  709. grad.addColorStop(0, colorToRGBA(color, 0.4));
  710. grad.addColorStop(1, colorToRGBA(color, 0.2));
  711. }
  712. else
  713. {
  714. grad.addColorStop(0.9, colorToRGBA(color, 0.15));
  715. grad.addColorStop(1, colorToRGBA(color, 0.3));
  716. }
  717. sctx.fillStyle = grad;
  718.  
  719. sctx.beginPath();
  720. sctx.arc(sx, sy, srad, 0, Math.PI * 2, false);
  721. sctx.closePath();
  722. sctx.fill();
  723.  
  724. vgap.map.sprites[spritekey] = { key: spritekey, offset: soffset, width: (srad * 2 + 2) };
  725. vgap.map.spriteindex++;
  726. }
  727. if (vgap.map.zoom <= 1 && !vgap.map.fastrendering) {
  728. this.drawSprite(ctx, spritekey, x, y, rad + 1);
  729. }
  730. else{
  731. if (isweb==false)
  732. {
  733. grad.addColorStop(0, colorToRGBA(color, 0.4));
  734. grad.addColorStop(1, colorToRGBA(color, 0.2));
  735. }
  736. else
  737. {
  738. grad.addColorStop(0.9, colorToRGBA(color, 0.15));
  739. grad.addColorStop(1, colorToRGBA(color, 0.3));
  740. }
  741. ctx.fillStyle = grad;
  742.  
  743. ctx.strokeStyle = colorToRGBA(color, 0.2);
  744. ctx.lineWidth = 2;
  745. ctx.beginPath();
  746. ctx.arc(x, y, rad, 0, Math.PI * 2, false);
  747. ctx.closePath();
  748. ctx.fill();
  749. //ctx.stroke();
  750. //centerpoint
  751. ctx.beginPath();
  752. ctx.arc(x, y, 1, 0, Math.PI * 2, false);
  753. ctx.closePath();
  754. ctx.fill();
  755. }
  756. }
  757. };
  758.  
  759. var oldSetShipColors = vgaPlanets.prototype.setShipColors;
  760.  
  761. vgaPlanets.prototype.setShipColors = function (ship)
  762. {
  763. var sets = vgap.accountsettings;
  764. if ((activeColorMod==false)||(vgaPlanets.prototype.version<3))
  765. {
  766. oldSetShipColors.apply(this,arguments);
  767. }
  768. else if (vgaPlanets.prototype.version>=3)
  769. {
  770. if ((defaultMyColor==true)&&(ship.ownerid == vgap.player.id))
  771. {
  772. ship.colorfrom = sets.myshipfrom;
  773. ship.colorto = sets.myshipto;
  774. return;
  775. }
  776. if(useColorPicker>0)
  777. {
  778. var relation = vgap.getRelation(ship.ownerid);
  779. if (relation != null && relation.color != "") {
  780. ship.colorfrom = "#" + shadeColor(relation.color, 100);
  781. ship.colorto = "#" + shadeColor(relation.color, -100);
  782. return;
  783. }
  784. }
  785. if ((ship.ownerid>0)&&(ship.ownerid<30))
  786. {
  787. ship.colorfrom = colorsA[ship.ownerid-1];
  788. ship.colorto = colorsA2[ship.ownerid-1];
  789. return;
  790. }
  791. //weird, but seems it can happen
  792. ship.colorfrom = modUnknown;
  793. ship.colorto = modUnknown2;
  794. }
  795. };
  796.  
  797. var oldSetPlanetColors = vgaPlanets.prototype.setPlanetColors;
  798.  
  799. vgaPlanets.prototype.setPlanetColors = function (planet) {
  800. var sets = vgap.accountsettings;
  801. if ((activeColorMod==false)||(vgaPlanets.prototype.version<3))
  802. {
  803. oldSetPlanetColors.apply(this,arguments);
  804. }
  805.  
  806. else if (vgaPlanets.prototype.version>=3)
  807. {
  808. //determine rings required
  809. var shipsAt = vgap.shipsAt(planet.x, planet.y);
  810. for (var j = 0; j < shipsAt.length; j++) {
  811. if (shipsAt[j].ownerid == vgap.player.id)
  812. planet.myShip = true;
  813. else {
  814. var relation = vgap.getRelation(shipsAt[j].ownerid)
  815. if (relation != null && relation.color && relation.color != "")
  816. planet.colorShip = relation.color;
  817. else if (vgap.allied(shipsAt[j].ownerid))
  818. planet.allyShip = true;
  819. else
  820. planet.enemyShip = true;
  821. }
  822. }
  823.  
  824. var sets = vgap.accountsettings;
  825. if (planet.note && planet.note.color != "") {
  826. planet.colorfrom = "#" + shadeColor(planet.note.color, 100);
  827. planet.colorto = "#" + shadeColor(planet.note.color, -100);
  828. return;
  829. }
  830. if ((defaultMyColor==true)&&(planet.ownerid == vgap.player.id))
  831. {
  832. planet.colorfrom = sets.myplanetfrom;
  833. planet.colorto = sets.myplanetto;
  834. return;
  835. }
  836.  
  837. if(planet.ownerid==0&&planet.infoturn>0)
  838. {
  839. planet.colorfrom=modInfo;
  840. planet.colorto=modInfo2;
  841. return
  842. }
  843. if(planet.ownerid==0)
  844. {
  845. planet.colorfrom=modUnknown;
  846. planet.colorto=modUnknown2;
  847. return
  848. }
  849. if(useColorPicker>0)
  850. {
  851. var relation = vgap.getRelation(planet.ownerid);
  852. if (relation != null && relation.color != "") {
  853. planet.colorfrom = "#" + shadeColor(relation.color, 100);
  854. planet.colorto = "#" + shadeColor(relation.color, -100);
  855. return;
  856. }
  857. }
  858. planet.colorfrom=colorsA[planet.ownerid-1];
  859. planet.colorto=colorsA2[planet.ownerid-1]
  860. }
  861. };
  862.  
  863.  
  864.  
  865. var oldLoadWaypoints = vgaPlanets.prototype.loadWaypoints;
  866.  
  867. vgaPlanets.prototype.loadWaypoints = function () {
  868. if ((activeColorMod==false))
  869. {
  870. oldLoadWaypoints.apply(this,arguments);
  871. }
  872. else if (vgaPlanets.prototype.version>=3)
  873. {
  874.  
  875. var sets = vgap.accountsettings;
  876.  
  877. this.waypoints = new Array();
  878. for (var i = 0; i < vgap.ships.length; i++) {
  879. //waypoint
  880. var ship = vgap.ships[i];
  881. if (ship.ownerid != vgap.player.id) {
  882. if (ship.heading != -1 && ship.warp != 0) {
  883.  
  884. var relation = vgap.getRelation(ship.ownerid);
  885.  
  886. var color = colorsA2[ship.ownerid-1];
  887.  
  888. var speed = vgap.getSpeed(ship.warp, ship.hullid);
  889.  
  890. var x2 = ship.x + Math.round(Math.sin(Math.toRad(ship.heading)) * speed);
  891. var y2 = ship.y + Math.round(Math.cos(Math.toRad(ship.heading)) * speed);
  892. ship.targetx = x2;
  893. ship.targety = y2;
  894. if (useColorPicker>0)
  895. if (relation.color && relation.color != "")
  896. color = "#" + relation.color;
  897. this.waypoints.push({ id: ship.id, x1: ship.x, y1: ship.y, x2: x2, y2: y2, color: color });
  898.  
  899. //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 }));
  900. }
  901. }
  902. else {
  903.  
  904. if (vgap.isChunnelling(ship)) {
  905.  
  906. var x = ship.x;
  907. var y = ship.y;
  908.  
  909. //we are initiating a chunnel at warp speed inside a matrix
  910. if (ship.warp > 0 && (ship.targetx != ship.x || ship.targety != ship.y)) {
  911.  
  912.  
  913. var dasharray = null;
  914. var color = sets.myshipto;
  915.  
  916. var next = vgap.getNextLoc(ship);
  917.  
  918. var waypoint = { id: ship.id, x1: x, y1: y, x2: next.x, y2: next.y, color: color, dasharray: dasharray };
  919. this.waypoints.push(waypoint);
  920. ship.lastwaypoint = waypoint;
  921.  
  922. x = next.x;
  923. y = next.y;
  924. }
  925.  
  926. var targetId = parseInt(ship.friendlycode, 10);
  927. var target = vgap.getShipClosestCopy(targetId, ship.x, ship.y);
  928. var dasharray = [9, 4];
  929. var color = "#00FFFF";
  930. if (ship.id < 0)
  931. color = "rgba(0, 255, 255, 0.15)";
  932. var linewidth = 2;
  933. if (ship.hullid != 56) {
  934. dasharray = [5, 2];
  935. color = "#009999";
  936. }
  937. if (vgap.multiChunnel(ship.x, ship.y, target.x, target.y)) {
  938. linewidth = 6;
  939. dasharray = [6,6];
  940. }
  941.  
  942. this.waypoints.push({ id: ship.id, x1: x, y1: y, x2: target.x, y2: target.y, color: color, dasharray: dasharray, linewidth: linewidth });
  943. }
  944. else {
  945.  
  946. var dasharray = null;
  947. var color;
  948. if (defaultMyColor==true)
  949. color = sets.myshipto;
  950. else
  951. {
  952. color = colorsA2[ship.ownerid-1];
  953. }
  954. var path = vgap.getPath(ship);
  955. if (vgap.isHyping(ship)) {
  956. color = "#F5F5DC";
  957. dasharray = [2, 2];
  958.  
  959. if (path.length > 0) {
  960. var first = path[0];
  961. var dist = Math.dist(first.x1, first.y1, first.x2, first.y2);
  962. if (dist < 340 || dist > 360 ) {
  963. //now we just fly exactly 350
  964. color = "#FF0000";
  965. ship.heading = vgap.getHeading(first.x1, first.y1, first.x2, first.y2);
  966. first.x2 = ship.x + Math.round(Math.sin(Math.toRad(ship.heading)) * 350);
  967. first.y2 = ship.y + Math.round(Math.cos(Math.toRad(ship.heading)) * 350);
  968. }
  969. }
  970. }
  971. //use tower path
  972. var tower = vgap.isTowTarget(ship.id);
  973. if (tower != null)
  974. path = vgap.getPath(tower);
  975. for (var j = 0; j < path.length; j++) {
  976.  
  977. var waypoint = { id: ship.id, x1: path[j].x1, y1: path[j].y1, x2: path[j].x2, y2: path[j].y2, color: color, dasharray: dasharray };
  978. this.waypoints.push(waypoint);
  979. // 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));
  980. ship.lastwaypoint = waypoint;
  981. }
  982. }
  983. }
  984. }
  985. for (var i = 0; i < vgap.ionstorms.length; i++) {
  986. var storm = vgap.ionstorms[i];
  987. if (storm.parentid == 0) {
  988.  
  989. var x = storm.x;
  990. var y = storm.y;
  991. if (storm.centroid) {
  992. x = storm.centroid.x;
  993. y = storm.centroid.y;
  994. }
  995.  
  996. var x2 = x + Math.round(Math.sin(Math.toRad(storm.heading)) * storm.warp * storm.warp);
  997. var y2 = y + Math.round(Math.cos(Math.toRad(storm.heading)) * storm.warp * storm.warp);
  998.  
  999. //add 1000 to id to make sure it doesnt' match up with ship ids
  1000. this.waypoints.push({ id: 1000 + storm.id, x1: x, y1: y, x2: x2, y2: y2, color: colorToRGBA("#FFFF00", 0.1) });
  1001. }
  1002. }
  1003. }//mod is true
  1004. };
  1005.  
  1006. var oldMineText = vgapMap.prototype.mineText;
  1007.  
  1008. vgapMap.prototype.mineText = function (x, y) {
  1009. if ((activeColorMod==false))
  1010. oldMineText.apply(this,arguments);
  1011. else if (vgaPlanets.prototype.version>=3)
  1012. {
  1013. var txt = "";
  1014. for (var i = 0; i < vgap.minefields.length; i++) {
  1015. var minefield = vgap.minefields[i];
  1016. if (Math.dist(minefield.x, minefield.y, x, y) <= minefield.radius) {
  1017. txt += "<div class='ItemSelectionBox minCorrection'><span>";
  1018. if (minefield.ownerid == vgap.player.id)
  1019. if (minefield.isweb)
  1020. txt += "Your Web Minefield ";
  1021. else
  1022. txt += "Your Minefield ";
  1023. else {
  1024. var player = vgap.getPlayer(minefield.ownerid);
  1025. var race = vgap.getRace(player.raceid);
  1026. if (minefield.isweb)
  1027. txt += race.adjective + " (" + player.username + ") Web Minefield ";
  1028. else
  1029. txt += race.adjective + " (" + player.username + ") Minefield ";
  1030. }
  1031. txt += "Id:" + minefield.id + "</span>";
  1032. txt += "<table class='CleanTable'>";
  1033. txt += "<tr><td> Mines: </td><td> " + gsv(minefield.units) + " </td></tr>";
  1034. txt += "<tr><td> Radius: </td><td> " + gsv(minefield.radius) + " </td></tr>";
  1035. var lastscanned = vgap.game.turn - minefield.infoturn + " turns ago";
  1036. if (minefield.infoturn == vgap.game.turn)
  1037. lastscanned = "this turn";
  1038. txt += "<tr><td> Friendly: </td><td> " + gsv(minefield.friendlycode) + " </td></tr>";
  1039. txt += "<tr><td style='width:60px;'> Scanned: </td><td> " + lastscanned + "</td></tr>";
  1040. txt += "</table></div>";
  1041. }
  1042. }
  1043. return txt;
  1044. }
  1045. };
  1046.  
  1047. var oldShowSettings = vgapDashboard.prototype.showSettings;
  1048.  
  1049. vgapDashboard.prototype.showSettings = function () {
  1050.  
  1051.  
  1052. var new_html="";
  1053. new_html += "<div id='ResetTurnButton' class='BasicFlatButton' onclick='vgapDashboard.prototype.resetNotes();'>Reset all note colors to blank</div><hr>";
  1054. new_html += "<br><h3>Custom Settings for Color Mod</h3>";
  1055. new_html += "<div style='width:250px;'></div>";
  1056. new_html += "<div id='Test'><table>";
  1057. new_html += "<tr><td><div id='LaunchSim' onclick='vgapDashboard.prototype.resetColorModColors();' title='Default is: Active.'>Reset all custom color settings </div></td>";
  1058. new_html += "<td><div id='LaunchSim' onclick='vgapDashboard.prototype.changeDefaultMyColor();' title='Default is: Active.'>Use default colors for My Race Only</div></td>";
  1059. new_html += "<td><div id='LaunchSim' onclick='vgapDashboard.prototype.changeColorMod();' title='Default is: Active.'>Activate or Deactivate Color Mod</div></td>";
  1060. new_html += "<td><div id='LaunchSim' onclick='vgapDashboard.prototype.changeColorPicker();' title='Default is: InActive.'>Set Diplomatic Color Picker</div></td></tr></table>";
  1061.  
  1062. new_html += "<div id='AccountSettings2'><table>";
  1063. new_html += "<tr><th>Color Settings</th></tr>";
  1064.  
  1065. //html += this.renderSetColorMod("Race 1", "test");
  1066. 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>";
  1067. 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>";
  1068. 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>";
  1069. 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>";
  1070. 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>";
  1071. 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>";
  1072. 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>";
  1073. 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>";
  1074. 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>";
  1075. 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>";
  1076. 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>";
  1077. 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>";
  1078. 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>";
  1079. 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>";
  1080. //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>";
  1081. //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>";
  1082. //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>";
  1083. //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>";
  1084. //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>";
  1085.  
  1086. new_html += "</table></div>";
  1087. this.customSettingsContent.push(new_html);
  1088. oldShowSettings.apply(this,arguments);
  1089. this.customSettingsContent.pop();
  1090. };
  1091.  
  1092. vgapDashboard.prototype.resetNotes=function()
  1093. {
  1094. if (!confirm("This function will reset all planet note colors to blank. Confirm to continue."))
  1095. return;
  1096. for (var i = 0; i < vgap.planets.length; i++)
  1097. {
  1098.  
  1099. var planet = vgap.planets[i];
  1100. if (planet.note && planet.note.color != "")
  1101. planet.note.color="";
  1102. }
  1103. };
  1104.  
  1105. SaveRaceNum=function(){
  1106. modRace=$("#ModRace").val();//melee race specified
  1107. };
  1108.  
  1109. SaveRace=function(){
  1110.  
  1111. var i;
  1112. if (modRace>11)
  1113. {
  1114. colorsA[modRace-1]=$("#ModRace2").val();
  1115. colorsA2[modRace-1]=$("#ModRace3").val();
  1116. var String3="Race"+(modRace);
  1117. set_cookie(String3,colorsA[modRace-1],2029,1,1);
  1118. set_cookie(String3+"A",colorsA2[modRace-1],2029,1,1);
  1119. }
  1120. for (i=0;i<11;i++)
  1121. {
  1122. var String="#Race"+(i+1);
  1123. var String2="Race"+(i+1);
  1124. colorsA[i]= $(String).val();
  1125. set_cookie(String2,colorsA[i],2029,1,1);
  1126. colorsA2[i]=$(String+"A").val();
  1127. set_cookie(String2+"A",colorsA2[i],2029,1,1);
  1128. }
  1129. modInfo= $("#ModInfo").val();
  1130. modUnknown= $("#ModUnknown").val();
  1131. modInfo2= $("#ModInfo2").val();
  1132. modUnknown2= $("#ModUnknown2").val();
  1133.  
  1134.  
  1135. set_cookie("ModInfo",modInfo,2099,1,1);
  1136. set_cookie("ModUnknown",modUnknown,2029,1,1);
  1137.  
  1138. set_cookie("ModInfo2",modInfo2,2014,1,1);
  1139. set_cookie("ModUnknown2",modUnknown2,2029,1,1);
  1140. vgap.loadWaypoints();
  1141. vgap.map.draw();
  1142. };
  1143.  
  1144. set_cookie=function( name, value, exp_y, exp_m, exp_d, path, domain, secure )
  1145. //name=cookie name (required)
  1146. //value=cookie value (required)
  1147. //exp_y,M,d is expiration year, month, day (if blank cookie will delete when browser closes)
  1148. //path=path within site this applies to (can be blank)
  1149. //domain=apply only to websites in this domain (can be blank)
  1150. //secure=use SSL (leave blank)
  1151.  
  1152. {
  1153. var cookie_string = name + "=" + escape ( value );
  1154.  
  1155. if ( exp_y )
  1156. {
  1157. var expires = new Date ( exp_y, exp_m, exp_d );
  1158. cookie_string += "; expires=" + expires.toGMTString();
  1159. }
  1160.  
  1161. if ( path )
  1162. cookie_string += "; path=" + escape ( path );
  1163.  
  1164. if ( domain )
  1165. cookie_string += "; domain=" + escape ( domain );
  1166. if ( secure )
  1167. cookie_string += "; secure";
  1168. document.cookie = cookie_string;
  1169. };
  1170.  
  1171. get_cookie =function( cookie_name )
  1172. {
  1173. var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
  1174.  
  1175. if ( results )
  1176. return ( unescape ( results[2] ) );
  1177. else
  1178. return null;
  1179. };
  1180.  
  1181. vgapDashboard.prototype.saveToCookie = function(){
  1182. //alert("In Function save");
  1183. // set a new cookie
  1184. if (defaultMyColor==true)
  1185. {
  1186. set_cookie("defaultMyColor",1,2029,1,1);
  1187. //alert("set to true!!");
  1188. }
  1189. else{
  1190. set_cookie("defaultMyColor",0,2029,1,1);
  1191. //alert("set to false!!");
  1192. }
  1193. if (activeColorMod==true)
  1194. set_cookie("activeColorMod",1,2029,1,1);
  1195. else
  1196. set_cookie("activeColorMod",0,2029,1,1);
  1197.  
  1198. if (useColorPicker==1)
  1199. set_cookie("ColorPicker",1,2029,1,1);
  1200. else
  1201. set_cookie("ColorPicker",0,2029,1,1);
  1202. };
  1203.  
  1204.  
  1205. vgapDashboard.prototype.changeColorMod = function(){
  1206. if (activeColorMod==true)
  1207. {
  1208. activeColorMod=false;
  1209. alert("The Race Specific Color Mod is now Deactived.");
  1210. }
  1211. else
  1212. {
  1213. activeColorMod=true;
  1214. alert("The Race Specific Color Mod is now Active.");
  1215. }
  1216. vgapDashboard.prototype.saveToCookie()
  1217. vgap.loadWaypoints();
  1218. vgap.map.draw();
  1219. };
  1220.  
  1221. vgapDashboard.prototype.changeColorPicker = function(){
  1222. if (useColorPicker==1)
  1223. {
  1224. useColorPicker=0;
  1225. alert("Ignore Diplomatic Color Picker colors.");
  1226. }
  1227. else
  1228. {
  1229. useColorPicker=1;
  1230. alert("Using Diplomatic Color Picker Colors");
  1231. }
  1232. vgapDashboard.prototype.saveToCookie()
  1233. vgap.loadWaypoints();
  1234. vgap.map.draw();
  1235. };
  1236.  
  1237. vgapDashboard.prototype.resetColorModColors = function(){
  1238. alert("Resetting all colors to Mod defaults");
  1239.  
  1240. 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"];
  1241. 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"];
  1242. modInfo="#F4A460";//chocolate
  1243. modInfo2="#D2691E";//chocolate
  1244.  
  1245. modUnknown="#FFF8DC"; //Tan
  1246. modUnknown2="#D2B48C"; //Tan
  1247. vgapDashboard.prototype.saveToCookie();
  1248. vgap.loadWaypoints();
  1249. vgap.map.draw();
  1250. };
  1251.  
  1252. vgapDashboard.prototype.changeDefaultMyColor = function(){
  1253. if (defaultMyColor==true)
  1254. {
  1255. alert("Mod is no longer using Default colors for your race.");
  1256. defaultMyColor=false;
  1257. }
  1258. else
  1259. {
  1260. alert("Mod will now use Default color (aqua/green) for your race.");
  1261. defaultMyColor=true;
  1262. }
  1263. vgapDashboard.prototype.saveToCookie();
  1264. vgap.loadWaypoints();
  1265. vgap.map.draw();
  1266. };
  1267.  
  1268. checkColorModSettings = function(){
  1269. //Color Mod settings
  1270. //if null, then its unset - check the cookie
  1271. //if cookie doesn't exist, set to default.
  1272. if (activeColorMod==null)
  1273. {
  1274. var checkActive=null;
  1275. checkActive=get_cookie("activeColorMod");
  1276. if (checkActive==null)
  1277. {
  1278. activeColorMod=true;//no cookie, set to default
  1279. }
  1280. else if (checkActive==1)
  1281. {
  1282. activeColorMod=true;
  1283. }
  1284. else
  1285. {
  1286. activeColorMod=false;
  1287. }
  1288. }
  1289.  
  1290. var checkPicker=null;
  1291. checkPicker=get_cookie("ColorPicker");
  1292. if (checkPicker) useColorPicker=checkPicker;
  1293. if (defaultMyColor==null)
  1294. {
  1295. var checkColor=null;
  1296. checkColor=get_cookie("defaultMyColor");
  1297. if (checkColor==null)
  1298. {
  1299. defaultMyColor=true;//no cookie, set to default
  1300. }
  1301. else if (checkColor==1)
  1302. {
  1303. defaultMyColor=true;
  1304. }
  1305. else
  1306. {
  1307. defaultMyColor=false;
  1308. }
  1309. }
  1310.  
  1311. if (useCustomColor==false)
  1312. //have not checked cookies yet
  1313. {
  1314. var i;
  1315. var checkColor=null;
  1316.  
  1317. for (i=0;i<30;i++)
  1318. {
  1319. var String="Race"+(i+1);
  1320. checkColor=get_cookie(String);
  1321. if (checkColor)
  1322. colorsA[i]=checkColor;
  1323. checkColor=null;
  1324. checkColor=get_cookie(String+"A");
  1325. if (checkColor) colorsA2[i]=checkColor;
  1326. checkColor=null;
  1327. }
  1328. checkColor=get_cookie("ModInfo");
  1329. if (checkColor) modInfo=checkColor;
  1330. checkColor=null;
  1331. checkColor=get_cookie("ModUnknown");
  1332. if (checkColor) modUnknown=checkColor;
  1333. checkColor=null;
  1334.  
  1335. checkColor=get_cookie("ModInfo2");
  1336. if (checkColor) modInfo2=checkColor;
  1337. checkColor=null;
  1338. checkColor=get_cookie("ModUnknown2");
  1339. if (checkColor) modUnknown2=checkColor;
  1340. //set var so we know cookies have been checked
  1341. useCustomColor=true;
  1342. }
  1343. };
  1344.  
  1345.  
  1346. } //wrapper for injection
  1347.  
  1348.  
  1349.  
  1350.  
  1351. var script = document.createElement("script");
  1352. script.type = "application/javascript";
  1353. script.textContent = "(" + wrapper + ")();";
  1354.  
  1355. document.body.appendChild(script);