- // ==UserScript==
- // @name checkReady
- // @description draw a ring around planets and ships that are not marked ready
- // can't move ships marked ready
- //
- // @include http://play.planets.nu/*
- // @include http://test.planets.nu/*
- // @include http://planets.nu/*
- // @version 3.0.0
- // @homepage https://greasyfork.org/en/users/32642-stephen-piper
- // @namespace https://greasyfork.org/en/users/32642-stephen-piper
- // ==/UserScript==
-
- function wrapper() {
- var showReady = false;
- var showBldg = false;
- var showHull = false;
- var selectedShip = null;
- var showShips = false;
- var showNatives = false;
- var showProduction = false;
- var displayLine = 0;
-
- function checkReady() {
- }
- checkReady.prototype = {
- loadControls : function() {
-
- this.clearData();
-
- // if (vgapMap.prototype.spMenuItem != undefined) {
- vgaPlanets.prototype.spMenuItem("Check Ready", "checkReady", function() {
- state = !showReady;
- checkReady.prototype.clearShow();
- showReady = state;
- vgap.map.draw();
- });
-
- vgaPlanets.prototype.spMenuItem("Show Buildings", "checkReady", function() {
- state = !showBldg;
- checkReady.prototype.clearShow();
- showBldg = state;
- vgap.map.draw();
- });
-
- vgaPlanets.prototype.spMenuItem("SB Production", "checkReady", function() {
- state = !showProduction;
- checkReady.prototype.clearShow();
- showProduction = state;
- vgap.map.draw();
- });
-
- vgaPlanets.prototype.spMenuItem("Show Natives", "checkReady", function() {
- state = !showNatives;
- checkReady.prototype.clearShow();
- showNatives = state;
- vgap.map.draw();
- });
-
- vgaPlanets.prototype.spMenuItem("All Ships", "checkReady", function() {
- state = !showShips;
- checkReady.prototype.clearShow();
- showShips = state;
- vgap.map.draw();
- });
-
- vgaPlanets.prototype.spMenuItem("Clear", "_massClear", function() {
- checkReady.prototype.clearData();
- });
- // }
- },
-
- clearShow : function() {
- showReady = false;
- showBldg = false;
- showHull = false;
- showShips = false;
- showNatives = false;
- showProduction = false;
- },
-
- clearData : function() {
- this.clearShow();
- selectedShip = null;
- displayLine = 0;
- },
-
- nativeTaxAmount : function(c, ntr) {
- var nt = 0;
- if (c.nativeclans > 0) {
- if (c.race == 6 && ntr > 20) { // borg == 6
- ntr = 20;
- }
-
- var nt = (c.nativeclans / 100) * (ntr / 10) * (c.nativegovernment / 5);
-
- nt = c.nativetype == 5 ? 0 : nt; // amorphous == 5
- nt = c.nativetype == 6 ? 2 * nt : nt; // insect == 6
- nt = c.race == 1 ? 2 * nt : nt; // feds == 1
-
- nt = Math.round(nt);
- }
- return nt;
- },
-
- nativetaxsupport : function(c) {
- ns = c.clans;
- ns *= c.race == 1 ? 2 : 1; // feds == 1
- ns *= c.nativetype == 6 ? 2 : 1; // insect == 6
- return ns;
- },
- };
-
-
- var oldDraw = vgapMap.prototype.draw;
- vgapMap.prototype.draw = function(fast, ctx, skipUserContent, secondCanvas) {
- oldDraw.apply(this, arguments);
- if (!ctx)
- ctx = this.ctx;
-
- // have to redraw ships because normal draw
- // copies the planets over the ships
- // draw ships not ready
- displayLine = -1;
-
- for (var k = 0; k < vgap.ships.length; ++k) {
- var ship = vgap.ships[k];
- this.drawShip(ship, ctx)
- }
-
- };
-
- var oldDrawPlanet = vgapMap.prototype.drawPlanet;
- vgapMap.prototype.drawPlanet = function(planet, ctx, fullrender) {
- oldDrawPlanet.apply(this, arguments);
-
- var x = this.screenX(planet.x);
- var y = this.screenY(planet.y);
- x2 = this.screenX(planet.x + 7.5 * 1.5);
- y2 = this.screenY(planet.y - (-1) * 6 * 1.5);
-
-
- // draw planets not ready
- if (planet.infoturn > 0) {
- if (vgap.player.id == planet.ownerid) {
- if (showBldg) {
- ctx.fillStyle = "lightgreen";
- ctx.fillText("m:" + planet.mines + " f:" + planet.factories + " d:" + planet.defense, x2, y2);
- }
- if (showReady) {
- if (planet.readystatus == 0) {
-
- this.drawCircle(ctx, x, y, 13 * this.zoom, "orange", 2);
- }
-
- var n = vgap.getStarbase(planet.id);
- if (n != null && n.readystatus == 0) {
-
- this.drawCircle(ctx, x, y, 11 * this.zoom, "red", 2);
- }
- }
- if (showProduction) {
- if (planet.buildingstarbase) {
- ctx.fillStyle = "lightgreen";
- ctx.fillText("building starbase", x2, y2);
- }
- else if (planet.isbase) {
- var n = vgap.getStarbase(planet.id);
- if (n != null && n.isbuilding) {
-
- ctx.fillStyle = "lightgreen";
- ctx.fillText(vgap.getHull(n.buildhullid).name, x2, y2);
- }
- }
- }
- if (showNatives && planet.nativeclans > 0) {
- if (planet.nativehappypoints < 30)
- ctx.fillStyle = "red";
- else if (planet.nativehappypoints < 70)
- ctx.fillStyle = "orange";
- else
- ctx.fillStyle = "lightgreen";
-
- nt = checkReady.prototype.nativeTaxAmount(planet, planet.nativetaxrate);
- ns = checkReady.prototype.nativetaxsupport(planet);
- t = Math.min(nt, ns);
-
- ctx.fillText(planet.nativeracename + " $" + t, x2, y2);
- }
- }
- if (showNatives && planet.nativeclans > 0) {
- ctx.fillStyle = "orange";
- ctx.fillText(planet.nativeracename, x2, y2);
- }
- }
- };
-
- var oldDrawShip = vgapMap.prototype.drawShip;
- vgapMap.prototype.drawShip = function(ship, ctx) {
- oldDrawShip.apply(this, arguments);
-
- // draw ships not ready had to redraw in draw()
- // because drawplanet() wrote over them
- if (showReady && ship.readystatus == 0 && vgap.player.id == ship.ownerid) {
- this.drawCircle(ctx, this.screenX(ship.x), this.screenY(ship.y), 16 * this.zoom, "yellow", 2);
- }
-
- // if(showSelected) {
- // var use = vgap.shipScreen.ship;
- // if (use.ownerid != vgap.player.id) {
- // }
-
- if (showHull && selectedShip != null && selectedShip.hullid == ship.hullid)
- this.drawCircle(ctx, this.screenX(ship.x), this.screenY(ship.y), 13 * this.zoom, "lightgreen", 2);
-
- if (showShips) {
- if (vgap.player.id == ship.ownerid)
- ctx.fillStyle = "lightgreen";
- else
- ctx.fillStyle = "red";
- x2 = this.screenX(ship.x + 7.5 * 1.5);
- y2 = this.screenY(ship.y - displayLine++ * 6 * 1.5);
- ctx.fillText(ship.id + ":" + vgap.getHull(ship.hullid).name, x2, y2);
- }
- };
-
- var oldShipSelectorClick = vgapMap.prototype.shipSelectorClick;
- vgapMap.prototype.shipSelectorClick = function(event) {
-
- var e = this.activeShip;
- if (e.readystatus > 0) // can't move ships marked ready
- return;
-
- oldShipSelectorClick.apply(this, arguments);
- };
-
- var oldLoadControls = vgapMap.prototype.loadControls;
- vgapMap.prototype.loadControls = function() {
- oldLoadControls.apply(this, arguments);
-
- checkReady.prototype.loadControls();
- };
- }
-
- var script = document.createElement("script");
- script.type = "application/javascript";
- script.textContent = "(" + wrapper + ")();";
-
- document.body.appendChild(script);