🏠 Home 

VPA-Keyboard

For planets.nu -- Add VPA-key strokes, and commands


Install this script?
// ==UserScript==
// @name        VPA-Keyboard
// @author      Quapla
// @copyright   Basecode: Kero van Gelder, 2016 - latest: Quapla
// @license     Lesser Gnu Public License, version 3
// @downloadURL
// @description For planets.nu -- Add VPA-key strokes, and commands
// @namespace   quapla/VPA-Keyboard
// @include     http://planets.nu/*
// @include     http://play.planets.nu/*
// @include     http://test.planets.nu/*
// @version     1.0.8
// @grant       none
// ==/UserScript==
// Reference:   Kero van Gelder's Keyboard: http://chmeee.org/ext/planets.nu/Keyboard.user.js
// Changes by Quapla:
// Use Arrows to select ships
// --> LEFT/RIGHT numerical previous/next
// --> UP/DOWN previous/next at same position as planet -> base -> ships (numerical) -> again planet
// --> '#' sets all ships at position "ready" and moves to next ship (not ready yet)
// --> ' ' toggles move mode to set waypoints with cursors, use SHIFT for 81LY
sharedContent.prototype.planetSurvey_ori = sharedContent.prototype.planetSurvey;
sharedContent.prototype.planetSurvey = function (planetId) {
vgap.currentPlanetSurvey = planetId;
this.planetSurvey_ori(planetId);
}
sharedContent.prototype.editNote_ori = sharedContent.prototype.editNote;
sharedContent.prototype.editNote = function (noteId, noteType) {
vgap.currentNoteId = noteId;
vgap.currentNoteType = noteType;
this.editNote_ori(noteId, noteType);
$("#EditNote").focus();
}
vgapShipScreen.prototype.shipMission_ori = vgapShipScreen.prototype.shipMission;
vgapShipScreen.prototype.shipMission = function () {
this.shipMissionOpen = true;
this.shipMission_ori();
}
vgapShipScreen.prototype.selectMission_ori = vgapShipScreen.prototype.selectMission;
vgapShipScreen.prototype.selectMission = function (missionId) {
this.selectMission_ori(missionId);
this.shipMissionOpen = false;
}
vgapShipScreen.prototype.primaryEnemy_ori = vgapShipScreen.prototype.primaryEnemy;
vgapShipScreen.prototype.primaryEnemy = function () {
this.primaryEnemyOpen = true;
this.primaryEnemy_ori();
}
vgapShipScreen.prototype.selectEnemy_ori = vgapShipScreen.prototype.selectEnemy;
vgapShipScreen.prototype.selectEnemy = function (enemyId) {
this.selectEnemy_ori(enemyId);
this.primaryEnemyOpen = false;
}
vgaPlanets.prototype.closeMore_ori = vgaPlanets.prototype.closeMore;
vgaPlanets.prototype.closeMore = function (callback) {
vgap.closeMore_ori(callback);
this.primaryEnemyOpen = false;
vgap.currentPlanetSurvey = null;
vgap.shipScreen.shipMissionOpen = false;
}
vgapMap.prototype.selectPlanet_ori = vgapMap.prototype.selectPlanet;
vgapMap.prototype.selectPlanet = function (planet) {
vgaPlanets.prototype.Quapla_Move = false;
this.selectPlanet_ori(planet);
}
vgapMap.prototype.selectShip_ori = vgapMap.prototype.selectShip;
vgapMap.prototype.selectShip = function (ship) {
vgaPlanets.prototype.Quapla_Move = false;
this.selectShip_ori(ship);
}
vgapMap.prototype.drawPlanetNames = function (e, f) {
if (vgap.map.planetnames) {
for (var a = 0; a < vgap.planets.length; a++) {
var c = vgap.planets[a];
if (this.isVisible(c.x, c.y, this.planetRad(c))) {
var show = c.id + "- " + c.name;
var ctx = vgap.map.ctx;
ctx.textAlign = "center";
//ctx.fillStyle = color;
ctx.fillText(show, this.screenX(c.x), (this.screenY(c.y)-10));
}
}
} else {
//$(".PlanetName").remove()
vgapMap.prototype.reload();
}
/*	drawPlanetNames : function (x, y) {
for (var i = 0; i < vgap.planets.length; i++) {
var planet = vgap.planets[i];
var left = this.screenX(planet.x) + 10;
var top = this.screenY(planet.y) - 15;
$("<div class='PlanetName' style='left:" + left + "px;top:" + top + "px;'>" + planet.id + ": " + planet.name + "</div>").appendTo(this.mapCover);
}
*/
}
var hotkey_ori = vgaPlanets.prototype.hotkey;
vgaPlanets.prototype.hotkey = function (event) {
//console.log("KC: "+event.keyCode);
if (vgap.shipScreen.primaryEnemyOpen) {
var enemy = 0;
if (event.keyCode >= 48 && event.keyCode <= 57)
enemy = event.keyCode - 48;
if (event.keyCode >= 65 && event.keyCode <= 90)
enemy = event.keyCode - 65 + 10;
if (enemy <= vgap.players.length) {
vgap.shipScreen.selectEnemy(enemy);
return;
}
}
if (vgap.shipScreen.shipMissionOpen) {
var missionId = -1;
if (event.keyCode == 67)
missionId = 9; // 'c', Cloak
else if (event.keyCode == 69)
missionId = 0; // 'e', Explore
else if (event.keyCode == 73)
missionId = 7; // 'i', Intercept
else if (event.keyCode == 75)
missionId = 3; // 'k', Kill
else if (event.keyCode == 76)
missionId = 2; // 'l', Lay Mines
else if (event.keyCode == 77)
missionId = 1; // 'm', Mine Sweep
else if (event.keyCode == 83 && event.shiftKey)
missionId = 8; // 'S', Special / Super Spy
else if (event.keyCode == 83)
missionId = 4; // 's', Sensor Sweep
else if (event.keyCode == 84)
missionId = 6; // 't', Tow
if (missionId >= 0) {
vgap.shipScreen.selectMission(missionId);
return;
}
}
if (vgap.editNoteOpen) {
if (event.keyCode == 13 && event.ctrlKey) {
this.saveNote(vgap.currentNoteId, vgap.currentNoteType);
return;
}
}
if (event.keyCode == 27) {
if (this.findObjectFeatureActivated)
vgap.map.hideFindObjectFeature();
else if (vgap.moreOpen)
this.closeMore();
else if (this.lcOpen)
this.deselectAll();
return;
}
/*	TAB not working properly in browsers
if (event.keyCode == 9) { //TAB}
if (event.shiftKey) vgap.map.zoomout()
else vgap.map.zoomin()
return;
}
*/
if (vgap.hotkeysOn) {
switch (event.keyCode) {
case 8:
if ((this.starbaseScreenOpen || this.planetScreenOpen || this.shipScreenOpen) && !this.moreOpen) {
vgap.rPrev();
return;
}
case 78: // 'n'
if (event.shiftKey) {
if (this.planetScreenOpen) {
shtml.editNote(vgap.planetScreen.planet.id, 1);
return;
} else if (vgap.currentPlanetSurvey > 0) { // ship screen is open, but unowned planet is selected
shtml.editNote(vgap.currentPlanetSurvey, 1);
return
} else if (this.shipScreenOpen) {
shtml.editNote(vgap.shipScreen.ship.id, 2);
return;
} else if (this.starbaseScreenOpen) {
shtml.editNote(vgap.starbaseScreen.starbase.id, 3);
return;
}
}
break;
case 88: // 'x'
this.map.clearTools();
return;
case 90: // 'z'
this.map.zoomFarInOrOut_OnWaypointOrPlanet();
return;
case 32: //space bar
if (this.planetScreenOpen || this.shipScreenOpen) {
vgaPlanets.prototype.Quapla_Move = !vgaPlanets.prototype.Quapla_Move;
return;
}
//case 188: // '<' if (event.shiftKey)
case 38: // Arrow up
if (vgaPlanets.prototype.Quapla_Move)
if (event.shiftKey)
this.map.moveSelect(0, 81);
else
this.map.moveSelect(0, 1);
else
vgap.unrotateActiveObject();
return;
// case 190: // '>'
case 40: // Arrow-Down if (event.shiftKey)
if (vgaPlanets.prototype.Quapla_Move)
if (event.shiftKey)
this.map.moveSelect(0, -81);
else
this.map.moveSelect(0, -1);
else
vgap.rotateActiveObject();
return;
case 39: // Arrow right // if (ev.keyCode == 39 && this.shipScreenOpen || this.planetScreenOpen)
if (vgaPlanets.prototype.Quapla_Move)
if (event.shiftKey)
this.map.moveSelect(81, 0);
else
this.map.moveSelect(1, 0);
else
this.rNext();
return;
case 37: // Arrow left // if (ev.keyCode == 39 && this.shipScreenOpen || this.planetScreenOpen)
if (vgaPlanets.prototype.Quapla_Move)
if (event.shiftKey)
this.map.moveSelect(-81, 0);
else
this.map.moveSelect(-1, 0);
else
this.rPrev();
return;
case 163: // '#' set ships/planet ready "Firefox"
case 191: // Opera
{
var item = 0;
var item2 = 0;
if (this.planetScreenOpen) {
var item = vgap.planetScreen.planet.id;
vgap.planetScreen.planet.readystatus = 1;
} else if (this.starbaseScreenOpen) {
item = vgap.starbaseScreen.starbase.id;
vgap.starbaseScreen.starbase.readystatus = 1;
} else if (this.shipScreenOpen) {
var ship = vgap.shipScreen.ship;
item = ship.id;
ship.readystatus = 1; // Set ready
var ships = vgap.shipsAt(ship.x, ship.y)
var index = ships.indexOf(ship);
for (var i = 0; i < ships.length; i++) {
if (ships[i].ownerid == vgap.player.id)
if (ships[i].readystatus == 0)
ships[i].readystatus = 1;
}
}
do {
this.rNext();
if (this.planetScreenOpen) {
if (vgap.planetScreen.planet.readystatus < 1)
break; // This is the next "unready" one...
item2 = vgap.planetScreen.planet.id;
} else if (this.starbaseScreenOpen) {
if (vgap.starbaseScreen.starbase.readystatus < 1)
break;
item2 = vgap.starbaseScreen.starbase.id;
} else if (this.shipScreenOpen) {
if (vgap.shipScreen.ship.readystatus < 1)
break;
item2 = vgap.shipScreen.ship.id;
}
} while (item != item2); // until
return;
}
case 80: // 'P' && (!this.planetScreenOpen && !this.starbaseScreenOpen))
case 112: // 'p'
{
vgap.map.planetnames = !vgap.map.planetnames;
vgap.map.drawPlanetNames();
return;
}
} // End Case
}
hotkey_ori.apply(this, arguments);
//this.hotkey_ori(event);
}
vgapMap.prototype.zoomFarInOrOut_OnWaypointOrPlanet = function () {
var zoomedOut = (this.zoom < 29);
if (zoomedOut) {
this.zoomFactorBeforeZoomingInDeeply = this.zoom;
this.setZoom(42);
} else {
this.setZoom(this.zoomFactorBeforeZoomingInDeeply);
}
var x,
y;
if (this.activeShip) {
x = this.activeShip.targetx;
y = this.activeShip.targety;
} else if (this.activePlanet) {
x = this.activePlanet.x;
y = this.activePlanet.y;
} else {
x = this.centerX;
y = this.centerY;
}
this.centerX = x;
this.centerY = y;
this.canvas.x = x - $(window).width() / 2 / this.zoom;
this.canvas.y = y - $(window).height() / 2 / this.zoom;
this.draw();
}
vgaPlanets.prototype.rotateActiveObject = function () {
if (vgap.planetScreenOpen) {
var planet = vgap.map.activePlanet;
if (planet.isbase) {
vgap.map.selectStarbase(planet.id);
} else {
var ships = vgap.shipsAt(planet.x, planet.y);
if (ships.length > 0)
vgap.map.selectShip(ships[0].id);
// else only a planet
}
} else if (vgap.starbaseScreenOpen) {
var planet = vgap.map.activePlanet;
var ships = vgap.shipsAt(planet.x, planet.y);
if (ships.length > 0) {
vgap.map.selectShip(ships[0].id);
} else {
vgap.map.selectPlanet(planet.id);
}
} else if (vgap.shipScreenOpen) {
var ship = vgap.map.activeShip;
var ships = vgap.shipsAt(ship.x, ship.y)
var index = ships.indexOf(ship);
if (index == ships.length - 1) {
var planet = vgap.planetAt(ship.x, ship.y)
if (planet) {
vgap.map.selectPlanet(planet.id);
} else if (ships.length > 1) {
vgap.map.selectShip(ships[0].id);
} // else Cannot rotate 1 ship
} else {
vgap.map.selectShip(ships[index + 1].id);
}
}
}
vgaPlanets.prototype.unrotateActiveObject = function () {
if (vgap.planetScreenOpen) {
var planet = vgap.map.activePlanet;
var ships = vgap.shipsAt(planet.x, planet.y);
if (ships.length > 0) {
vgap.map.selectShip(ships[ships.length - 1].id);
} else if (planet.isbase) {
vgap.map.selectStarbase(planet.id);
} // else only a planet
} else if (vgap.starbaseScreenOpen) {
var planet = vgap.map.activePlanet;
vgap.map.selectPlanet(planet.id);
} else if (vgap.shipScreenOpen) {
var ship = vgap.map.activeShip;
var ships = vgap.shipsAt(ship.x, ship.y)
var index = ships.indexOf(ship);
if (index == 0) {
var planet = vgap.planetAt(ship.x, ship.y)
if (planet) {
if (planet.isbase) {
vgap.map.selectStarbase(planet.id);
} else {
vgap.map.selectPlanet(planet.id);
}
} else {
if (ships.length > 1)
vgap.map.selectShip(ships[ships.length - 1].id);
}
} else {
vgap.map.selectShip(ships[index - 1].id);
}
}
}