hypCircle

shows a modified hyperjump ring and warp 9 circles

2016/04/16のページです。最新版はこちら

スクリプトをインストールするには、Tampermonkey, GreasemonkeyViolentmonkey のような拡張機能のインストールが必要です。

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

スクリプトをインストールするには、TampermonkeyViolentmonkey のような拡張機能のインストールが必要です。

スクリプトをインストールするには、TampermonkeyUserscripts のような拡張機能のインストールが必要です。

このスクリプトをインストールするには、Tampermonkeyなどの拡張機能をインストールする必要があります。

このスクリプトをインストールするには、ユーザースクリプト管理ツールの拡張機能をインストールする必要があります。

(ユーザースクリプト管理ツールは設定済みなのでインストール!)

このスタイルをインストールするには、Stylusなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus などの拡張機能をインストールする必要があります。

このスタイルをインストールするには、Stylus tなどの拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

このスタイルをインストールするには、ユーザースタイル管理用の拡張機能をインストールする必要があります。

(ユーザースタイル管理ツールは設定済みなのでインストール!)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name          hypCircle
// @description   shows a modified hyperjump ring and warp 9 circles
// @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() {
  function hypTools() {

  }
  hypTools.prototype = {

    loadControls : function() {
      // debugger;
      this.putWarpCircles = false;
      this.warpcircles = [];
      this.putMultiTurnCircles = false;
      this.multiturncircles = [];
      this.warp = 81;
      this.addlinestart = false;
      this.addlineend = false;
      this.lines = [];
      this.lineStart = null;

      this.clearData();

      if (vgapMap.prototype.spMenuItem != undefined) {
	vgapMap.prototype.spMenuItem("Hyp Circle", "hypCircle", function() {
	  vgap.map.putHypCircle = true;
	   $("body").css("cursor", "crosshair");
	});

	vgapMap.prototype.spMenuItem("Warp Circle", "warpCircle", function() {
	  hypTools.putWarpCircle = true;
	   $("body").css("cursor", "crosshair");
	});

	vgapMap.prototype.spMenuItem("3 Turn Warp 9", "warpCircle", function() {
	  hypTools.putMultiTurnCircle = true;
	   $("body").css("cursor", "crosshair");
	});

//	vgapMap.prototype.spMenuItem("Add Line", "addLine", function() {
//	  if (hypTools.addlineend) {
//	    hypTools.startlinept.pop();
//	  }
//	  hypTools.addlinestart = true;
//	  hypTools.addlineend = false;
//	});
//
//	vgapMap.prototype.spMenuItem("Delete Line", "deleteLine", function() {
//	  hypTools.deleteline = true;
//	   $("body").css("cursor", "crosshair");
//	});

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

    clearData : function() {
      vgap.map.putHypCircle = false;
      vgap.map.hypcircles = new Array();
      hypTools.putWarpCircle = false;
      hypTools.warpcircles = [];
      hypTools.putMultiTurnCircles = false;
      hypTools.multiturncircles = [];
      hypTools.warp = 81;
      hypTools.addlinestart = false;
      hypTools.addlineend = false;
      hypTools.lines = [];
      hypTools.lineStart = null;
    },

    addWarpCircle : function(a, b) {
      hypTools.warpcircles.push({
	x : a,
	y : b
      });
      $("body").css("cursor", "");
    },

    addMultiTurn : function(a, b) {
      hypTools.multiturncircles.push({
	x : a,
	y : b
      });
      $("body").css("cursor", "");
   },

    addLineStart : function(a, b) {
      hypTools.linestart = {
	x : a,
	y : b
      };
      
      $("body").css("cursor", "crosshair");
   },

   addLineEnd : function(a, b) {
     hypTools.lines.push({
       sx : hypTools.linestart.x,
       sy : hypTools.linestart.y,
       ex : a,
       ey : b
     });
     hypTools.linestart = null;

     hypTools.prototype.writeLines();

     $("body").css("cursor", "");
   },

    writeLines : function () {
      var p = vgap.myplanets[0];
      if (p.note == null)
	p.note = vgap.addNote(p, 1);

      p.note.body = "{\"lines\" :" + JSON.stringify(hypTools.lines) + "}";
console.log(p.note.body);
      
      $("body").css("cursor", "");
    },
    
    deleteLine : function(a, b) {
      d = 9999;
      
      for (i = 0; i<hypTools.lines.length; ++i){
	l = hypTools.lines[i];
	if (l != null) {
	  s = Math.min(Math.dist(l.sx, l.sy, a, b), Math.dist(l.ex, l.ey, a, b));
	  
	  if(d > s) {
	    d = s;
	    id = i;
	  }
	}
      }
	  
      if (id != undefined) {
	delete hypTools.lines[id];
	hypTools.prototype.writeLines();
      }
    },
      
    parsenotes : function() {
      for (var f = 0; f < vgap.myplanets.length; f++) {
	var l = vgap.myplanets[f];
	if (l.note != undefined && l.note.body != "") {
	  try {
	    var jn = JSON.parse(l.note.body
		// , function(h, k) {console.log(h+" "+k)}
	    );
	  } catch (e) {
	    console.log("parse error " + l.id + " " + l.note.body);
	    continue;
	  }

	  if (jn.lines != undefined) {
	    l = jn.lines;

	    for (f = 0; f < l.length; f++) {
	      p = l[f];
	      if (p != null) {
	
		console.log(p);

		hypTools.lines.push({
		  sx : p.sx,
		  sy : p.sy,
		  ex : p.ex,
		  ey : p.ey
		});
	      }
	    }
	  }
	}
      }
    },
  };

  var oldRenderMapTools = vgapMap.prototype.renderMapTools;
  vgapMap.prototype.renderMapTools = function(ctx) {

    h = this.hypcircles;
    this.hypcircles = [];

    oldRenderMapTools.apply(this, arguments);

    this.hypcircles = h;

    for (var d = 0; d < this.hypcircles.length; d++) {
      var c = this.hypcircles[d];

      // planetary hypcircle
      for (var i = 0; i < vgap.planets.length; ++i) {
	var planet = vgap.planets[i];
	var dist = Math.dist(c.x, c.y, planet.x, planet.y);

	if (dist >= 340 && dist <= 360) {
	  this.drawCircle(ctx, this.screenX(planet.x), this.screenY(planet.y), 12 * this.zoom, "cyan", 1);
	} else if (dist >= 338 && dist <= 362) {
	  this.drawCircle(ctx, this.screenX(planet.x), this.screenY(planet.y), 12 * this.zoom, "orange", 1);
	}
      }

      // large hypcircle
      this.drawCircle(ctx, this.screenX(c.x), this.screenY(c.y), 340 * this.zoom, "cyan", 1);
      this.drawCircle(ctx, this.screenX(c.x), this.screenY(c.y), 360 * this.zoom, "cyan", 1);
    }

    for (var d = 0; d < hypTools.warpcircles.length; d++) {
      var c = hypTools.warpcircles[d];
      this.drawCircle(ctx, this.screenX(c.x), this.screenY(c.y), hypTools.warp * this.zoom, "cyan", 1);
    }

    for (var d = 0; d < hypTools.multiturncircles.length; d++) {
      var c = hypTools.multiturncircles[d];
      this.drawCircle(ctx, this.screenX(c.x), this.screenY(c.y), 1 * hypTools.warp * this.zoom, "cyan", 1);
      this.drawCircle(ctx, this.screenX(c.x), this.screenY(c.y), 2 * hypTools.warp * this.zoom, "cyan", 1);
      this.drawCircle(ctx, this.screenX(c.x), this.screenY(c.y), 3 * hypTools.warp * this.zoom, "cyan", 1);
    }

    if (hypTools.linestart) {
      var l = hypTools.linestart;
      this.drawCircle(ctx, this.screenX(l.x), this.screenY(l.y), 1 * this.zoom, "orange", 2);
    }

    for (var d = 0; d < hypTools.lines.length; ++d) {
      var l = hypTools.lines[d];
      if (l != null)
	this.drawLine(ctx, this.screenX(l.sx), this.screenY(l.sy), this.screenX(l.ex), this.screenY(l.ey), "orange", 1);
    }
  };

  var oldClick = vgapMap.prototype.click;
  vgapMap.prototype.click = function(event) {

    if (this.over) {
      a = this.over.x;
      b = this.over.y;
    } else {
      a = this.x;
      b = this.y;
    }

    // snap hypcircle to closest ship or planet
    if (hypTools.putWarpCircle) {
      hypTools.prototype.addWarpCircle(a, b);

      hypTools.putWarpCircle = false;
      $("body").css("cursor", "");
    }

    if (hypTools.addlinestart) {
      hypTools.prototype.addLineStart(a, b);

      hypTools.addlinestart = false;
      hypTools.addlineend = true;
      $("body").css("cursor", "crosshair");
      // return
    } else if (hypTools.addlineend) {
      hypTools.prototype.addLineEnd(a, b);

      hypTools.addlinestart = false;
      hypTools.addlineend = false;
      $("body").css("cursor", "");
    }

    if (hypTools.deleteline) {
      hypTools.prototype.deleteLine(a, b);
      
      $("body").css("cursor", "");
    }

    if (hypTools.putMultiTurnCircle) {
      hypTools.prototype.addMultiTurn(a, b);

      hypTools.putMultiTurnCircle = false;
      $("body").css("cursor", "");
    }

    if (this.putHypCircle) {
      this.hyperjump(a, b);

      this.putHypCircle = false;
      $("body").css("cursor", "");
    }

    oldClick.apply(this, arguments);

    this.draw();
  };
  
  var oldLoad = vgapMap.prototype.load;
  vgapMap.prototype.load = function() {
    oldLoad.apply(this, arguments);
    
    hypTools.prototype.parsenotes();
  };
  
  var oldLoadControls = vgapMap.prototype.loadControls;
  vgapMap.prototype.loadControls = function() {
    oldLoadControls.apply(this, arguments);

    hypTools.prototype.loadControls();
  };
}

var script = document.createElement("script");
script.type = "application/javascript";
script.textContent = "(" + wrapper + ")();";

document.body.appendChild(script);