Color Coding for Play.Planets.nu

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

目前为 2014-07-21 提交的版本,查看 最新版本

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