checkReady

draw a ring around planets and ships that are not marked ready

2016-03-13 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

You will need to install an extension such as Tampermonkey to install this script.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==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;

	function checkReady() {
	}
	checkReady.prototype = {

		loadControls : function() {
			// debugger;

			this.clearData();

			vgapMap.prototype.spMenuItem("Check Ready", "checkReady",
					function() {
						showReady = !showReady;
					});

			vgapMap.prototype.spMenuItem("Clear", "_massClear", function() {
				checkReady.prototype.clearData();
			});
		},

		clearData : function() {
			showReady = false;
		},
	};

	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 planes over the ships
		// draw ships not ready
		for (var n = 0; n < vgap.ships.length; n++) {
			var E = vgap.ships[n];
			this.drawShip(E, 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);

		// draw planets not ready
		if (planet.infoturn > 0) {
			if (showReady && planet.readystatus == 0
					&& vgap.player.id == planet.ownerid) {
				this.drawCircle(ctx, x, y, 11 * this.zoom, "yellow", 2);
			}
		}
	};

	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),
					14 * this.zoom, "orange", 2);
		}
		// if (warnings && ship.ownerid) {
		// if (ship.dist > Math.pow(ship.warp, 2)) {
		// this.drawCircle(ctx, this.screenX(ship.x), this.screenY(ship.y), 14 *
		// this.zoom, "red", 2);
		// }
		// // < required neutronium
		// }
	};

	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);