mirror of
https://github.com/simon987/Much-Assembly-Required-Frontend.git
synced 2025-12-15 23:59:04 +00:00
Visual improvements, Added Radio Tower, String literals
This commit is contained in:
@@ -17,13 +17,16 @@ var colorScheme = {
|
||||
tileHoverTint: 0x00FF00,
|
||||
itemIron: 0x434341,
|
||||
itemCopper: 0xC87D38,
|
||||
hologramFill: "#FFFFFF",
|
||||
hologramStroke: "#9298a8",
|
||||
hologramFill: "#0aced6",
|
||||
hologramStroke: "#12FFB0",
|
||||
hologramAlpha: 0.9
|
||||
};
|
||||
|
||||
var mar = {};
|
||||
mar.kbBuffer = [];
|
||||
mar.kbBufferText = "";
|
||||
mar.animationFrames = {};
|
||||
mar.controlledUnitVisible = false;
|
||||
|
||||
CUBOT_WALK_FRAMES = {
|
||||
south: 240,
|
||||
@@ -39,6 +42,7 @@ HARVESTER_WALK_FRAMES = {
|
||||
east: 287
|
||||
};
|
||||
|
||||
LOW_ENERGY = 100;
|
||||
|
||||
|
||||
if (fullscreen) {
|
||||
@@ -216,7 +220,6 @@ function Word(terrain) {
|
||||
//Update/Create the object
|
||||
var existingObject = self.getObject(response[i].i);
|
||||
|
||||
|
||||
if (existingObject !== null) {
|
||||
//Object already exists
|
||||
existingObject.updated = true;
|
||||
@@ -236,9 +239,19 @@ function Word(terrain) {
|
||||
//Delete not updated objects (see above comments)
|
||||
for (var i = 0; i < self.objects.length; i++) {
|
||||
if (!self.objects[i].updated) {
|
||||
// console.log("DEBUG: removed " + self.objects[i].id);
|
||||
|
||||
|
||||
//Check if the object we are removing is our controlledUnit, if so, follow it
|
||||
if (mar.client.username !== "guest") {
|
||||
if (self.objects[i].type === 1 && self.objects[i].username === mar.client.username) {
|
||||
findMyRobot();
|
||||
console.log("Following Cubot " + mar.client.username)
|
||||
}
|
||||
}
|
||||
|
||||
self.objects[i].destroy();
|
||||
|
||||
dispatchTileLeave(self.objects[i].tileX, self.objects[i].tileY);
|
||||
self.objects.splice(i, 1);
|
||||
}
|
||||
}
|
||||
@@ -254,6 +267,7 @@ function updateGameObject(object, responseObj) {
|
||||
if (object.type === 1) {
|
||||
|
||||
object.action = responseObj.action;
|
||||
object.energy = responseObj.energy;
|
||||
|
||||
//Update location
|
||||
if ((object.tileX !== responseObj.x || object.tileY !== responseObj.y)) {
|
||||
@@ -278,6 +292,13 @@ function updateGameObject(object, responseObj) {
|
||||
|
||||
}
|
||||
|
||||
//Battery indication
|
||||
if (object.energy <= LOW_ENERGY) {
|
||||
object.tint = 0xFF0000;
|
||||
} else {
|
||||
object.tint = 0xFFFFFF;
|
||||
}
|
||||
|
||||
//Update direction
|
||||
switch (object.direction) {
|
||||
case DIR_NORTH:
|
||||
@@ -299,7 +320,9 @@ function updateGameObject(object, responseObj) {
|
||||
object.hologram.destroy();
|
||||
}
|
||||
|
||||
if (responseObj.holo !== 0) {
|
||||
|
||||
if (responseObj.holoMode === 1) {
|
||||
//Hex
|
||||
object.hologram = game.make.text(0, 32, "0x" + ("0000" + Number(responseObj.holo).toString(16).toUpperCase()).slice(-4), {
|
||||
fontSize: 32,
|
||||
fill: colorScheme.hologramFill,
|
||||
@@ -307,9 +330,29 @@ function updateGameObject(object, responseObj) {
|
||||
strokeThickness: 1,
|
||||
font: "fixedsys"
|
||||
});
|
||||
|
||||
object.hologram.alpha = colorScheme.hologramAlpha;
|
||||
object.hologram.anchor.set(0.5, 0);
|
||||
object.addChild(object.hologram);
|
||||
|
||||
game.add.tween(object.hologram).to({tint: 0xFFFFF0, alpha: colorScheme.hologramAlpha - 0.1},
|
||||
mar.client.tickLength, Phaser.Easing.Bounce.In, true);
|
||||
|
||||
} else if (responseObj.holoMode === 2) {
|
||||
//String
|
||||
object.hologram = game.make.text(0, 32, responseObj.holoStr, {
|
||||
fontSize: 27,
|
||||
fill: colorScheme.hologramFill,
|
||||
stroke: colorScheme.hologramStroke,
|
||||
strokeThickness: 1,
|
||||
font: "fixedsys"
|
||||
});
|
||||
object.hologram.alpha = colorScheme.hologramAlpha;
|
||||
object.hologram.anchor.set(0.5, 0);
|
||||
object.addChild(object.hologram);
|
||||
|
||||
game.add.tween(object.hologram).to({tint: 0xFFFFF0, alpha: colorScheme.hologramAlpha - 0.1},
|
||||
mar.client.tickLength, Phaser.Easing.Bounce.In, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -423,6 +466,7 @@ function createGameObject(objData) {
|
||||
cubot.heldItem = objData.heldItem;
|
||||
cubot.direction = objData.direction;
|
||||
cubot.action = objData.action;
|
||||
cubot.energy = objData.energy;
|
||||
|
||||
cubot.inventory = createInventory([cubot.heldItem]);
|
||||
cubot.addChild(cubot.inventory);
|
||||
@@ -436,17 +480,29 @@ function createGameObject(objData) {
|
||||
cubot.onTileHover = function () {
|
||||
game.add.tween(this).to({isoZ: 45}, 200, Phaser.Easing.Quadratic.InOut, true);
|
||||
game.add.tween(this.scale).to({x: 1.2, y: 1.2}, 200, Phaser.Easing.Linear.None, true);
|
||||
this.tint = colorScheme.cubotHoverTint;
|
||||
|
||||
if (this.tint !== 0xFF0000) {
|
||||
this.tint = colorScheme.cubotHoverTint;
|
||||
}
|
||||
|
||||
};
|
||||
cubot.onTileOut = function () {
|
||||
document.body.style.cursor = 'default';
|
||||
|
||||
game.add.tween(this).to({isoZ: 15}, 400, Phaser.Easing.Bounce.Out, true);
|
||||
game.add.tween(this.scale).to({x: 1, y: 1}, 200, Phaser.Easing.Linear.None, true);
|
||||
this.tint = colorScheme.cubotTint;
|
||||
|
||||
if (this.tint !== 0xFF0000) {
|
||||
this.tint = colorScheme.cubotTint;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
//Battery indication
|
||||
if (cubot.energy <= LOW_ENERGY) {
|
||||
cubot.tint = 0xFF0000;
|
||||
}
|
||||
|
||||
cubot.animations.add("walk_w", mar.animationFrames.walk_w, true);
|
||||
cubot.animations.add("walk_s", mar.animationFrames.walk_s, true);
|
||||
cubot.animations.add("walk_e", mar.animationFrames.walk_e, true);
|
||||
@@ -475,6 +531,7 @@ function createGameObject(objData) {
|
||||
|
||||
|
||||
|
||||
|
||||
var username = game.make.text(0, -24, cubot.username, {
|
||||
fontSize: 22,
|
||||
fill: colorScheme.textFill,
|
||||
@@ -484,6 +541,11 @@ function createGameObject(objData) {
|
||||
});
|
||||
username.alpha = 0.85;
|
||||
username.anchor.set(0.5, 0);
|
||||
if (cubot.username === mar.client.username) {
|
||||
username.tint = 0xFB4D0A;
|
||||
} else {
|
||||
cubot.alpha = 0.6;
|
||||
}
|
||||
cubot.addChild(username);
|
||||
|
||||
if (objData.holo !== 0) {
|
||||
@@ -657,6 +719,52 @@ function createGameObject(objData) {
|
||||
};
|
||||
|
||||
return factory;
|
||||
} else if (objData.t === 4) {
|
||||
//Radio tower
|
||||
var radioTower = game.add.isoSprite(getIsoX(objData.x), getIsoY(objData.y), 15, "sheet", "objects/RadioTower", isoGroup);
|
||||
radioTower.anchor.set(0.5, 0.64);
|
||||
|
||||
radioTower.id = objData.i;
|
||||
radioTower.type = 4;
|
||||
radioTower.tileX = objData.x;
|
||||
radioTower.tileY = objData.y;
|
||||
|
||||
|
||||
radioTower.hoverText = game.make.text(0, 0, "Radio Tower", {
|
||||
fontSize: 22,
|
||||
fill: colorScheme.textFill,
|
||||
stroke: colorScheme.textStroke,
|
||||
strokeThickness: 2,
|
||||
font: "fixedsys"
|
||||
});
|
||||
radioTower.hoverText.alpha = 0;
|
||||
radioTower.hoverText.anchor.set(0.5, 0);
|
||||
radioTower.addChild(radioTower.hoverText);
|
||||
|
||||
radioTower.isAt = function (x, y) {
|
||||
return this.tileX === x && this.tileY === y;
|
||||
};
|
||||
|
||||
radioTower.onTileHover = function () {
|
||||
game.tweens.removeFrom(this);
|
||||
game.add.tween(this).to({isoZ: 45}, 200, Phaser.Easing.Quadratic.InOut, true);
|
||||
game.add.tween(this.scale).to({x: 1.15, y: 1.15}, 200, Phaser.Easing.Linear.None, true);
|
||||
this.tint = colorScheme.cubotHoverTint;
|
||||
|
||||
game.add.tween(this.hoverText).to({alpha: 0.9}, 200, Phaser.Easing.Quadratic.In, true);
|
||||
radioTower.hoverText.visible = true;
|
||||
};
|
||||
radioTower.onTileOut = function () {
|
||||
game.tweens.removeFrom(this);
|
||||
game.add.tween(this).to({isoZ: 15}, 400, Phaser.Easing.Bounce.Out, true);
|
||||
game.add.tween(this.scale).to({x: 1, y: 1}, 200, Phaser.Easing.Linear.None, true);
|
||||
this.tint = colorScheme.cubotTint;
|
||||
|
||||
game.add.tween(this.hoverText).to({alpha: 0}, 200, Phaser.Easing.Quadratic.Out, true);
|
||||
};
|
||||
|
||||
return radioTower;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -703,8 +811,11 @@ function codeResponseListener(message) {
|
||||
* Listens for user info responses from the server
|
||||
*/
|
||||
function userInfoListener(message) {
|
||||
|
||||
|
||||
if (message.t === "userInfo") {
|
||||
|
||||
//Create new world / Find my robot
|
||||
console.log(message);
|
||||
|
||||
mar.worldX = message.worldX;
|
||||
@@ -726,9 +837,31 @@ function terrainListener(message) {
|
||||
} else {
|
||||
mar.world = new Word(message.terrain);
|
||||
console.log("Gameloop started");
|
||||
|
||||
//Handle keypresses
|
||||
game.input.keyboard.onDownCallback = function (event) {
|
||||
|
||||
//If the game has focus
|
||||
if (document.activeElement === document.getElementById("game")) {
|
||||
if ((event.keyCode >= 37 && event.keyCode <= 40) || event.keyCode === 116 || event.keyCode === 32) {
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
if (mar.client.username !== "guest" && mar.kbBuffer.length <= 16) {
|
||||
mar.client.sendKeypress(event.keyCode);
|
||||
|
||||
//Locally update the buffer
|
||||
mar.kbBuffer.push(event.keyCode);
|
||||
mar.kbBufferText = formattedKeyBuffer(mar.kbBuffer);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
//Grab focus when clicked (For chrome, Opera)
|
||||
game.input.onDown.add(function () {
|
||||
document.getElementById("game").focus();
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -752,14 +885,10 @@ function tickListener(message) {
|
||||
mar.client.socket.send(JSON.stringify({t: "object", x: mar.worldX, y: mar.worldY}));
|
||||
|
||||
//Update key buffer display
|
||||
// if(game.textLayer){
|
||||
// if(message.keys !== undefined){
|
||||
// console.log(message.keys);
|
||||
//
|
||||
// game.kbBuffer = message.keys;
|
||||
// game.keyboardBuffer.text = formattedKeyBuffer(game.kbBuffer);
|
||||
// }
|
||||
// }
|
||||
if (message.keys !== undefined) {
|
||||
mar.kbBuffer = message.keys;
|
||||
mar.kbBufferText = formattedKeyBuffer(mar.kbBuffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -870,12 +999,6 @@ var GameClient = function (callback) {
|
||||
}
|
||||
};
|
||||
|
||||
this.request = function (key) {
|
||||
if (key !== 0) {
|
||||
this.socket.send(JSON.stringify({t: "k", k: key}));
|
||||
}
|
||||
};
|
||||
|
||||
this.requestFloppy = function () {
|
||||
document.getElementById("floppyDown").innerHTML = "<i class=\"fa fa-cog fa-spin fa-fw\"></i>";
|
||||
this.socket.send(JSON.stringify({t: "floppyDown"}));
|
||||
@@ -1035,6 +1158,10 @@ BasicGame.Boot.prototype = {
|
||||
if (debugTile) {
|
||||
game.debug.text(debugTile, 10, 40);
|
||||
}
|
||||
|
||||
if (mar.client.username !== "guest") {
|
||||
game.debug.text(mar.kbBufferText, 210, 20);
|
||||
}
|
||||
// game.debug.text(debugObj, 32, 190);
|
||||
|
||||
// game.debug.text(game.time.fps || '--', 2, 14, "#a7aebe");
|
||||
@@ -1398,6 +1525,38 @@ function getIsoY(tileY) {
|
||||
return (tileY * 71.5)
|
||||
}
|
||||
|
||||
function findMyRobot() {
|
||||
|
||||
if (mar.client.username === "guest") {
|
||||
alert("You are not logged in!");
|
||||
} else {
|
||||
mar.client.requestUserInfo()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function formattedKeyBuffer(kbBuffer) {
|
||||
|
||||
var str = "KB: ";
|
||||
|
||||
for (var i = 0; i < 16; i++) {
|
||||
|
||||
if (kbBuffer[i] !== undefined) {
|
||||
|
||||
str += kbBuffer[i].toString(16) + " ";
|
||||
|
||||
} else {
|
||||
|
||||
str += "__ ";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
|
||||
|
||||
game.state.add('Boot', BasicGame.Boot);
|
||||
|
||||
game.state.start('Boot');
|
||||
|
||||
76
mar/phaser/mar.min.js
vendored
76
mar/phaser/mar.min.js
vendored
@@ -1,50 +1,56 @@
|
||||
DIR_NORTH=0;DIR_EAST=1;DIR_SOUTH=2;DIR_WEST=3;WORLD_HEIGHT=WORLD_WIDTH=16;var colorScheme={tileTint:16777215,wallTint:14540253,cubotHoverTint:65280,cubotTint:16777215,textFill:"#FFFFFF",textStroke:"#9298a8",biomassTint:6535263,biomassHoverTint:65280,tileHoverTint:65280,itemIron:4408129,itemCopper:13139256,hologramFill:"#FFFFFF",hologramStroke:"#9298a8",hologramAlpha:.9},mar={animationFrames:{}};CUBOT_WALK_FRAMES={south:240,north:194,west:254,east:164};
|
||||
HARVESTER_WALK_FRAMES={south:347,north:317,west:377,east:287};fullscreen?(RENDERER_WIDTH=window.innerWidth-4,RENDERER_HEIGHT=window.innerHeight-4):(RENDERER_WIDTH=document.getElementById("game").clientWidth,RENDERER_HEIGHT=window.innerHeight/1.25);var game=new Phaser.Game(RENDERER_WIDTH,RENDERER_HEIGHT,Phaser.AUTO,"game",null,!0,!1);
|
||||
function dispatchTileLeave(a,b){for(var c=0;c<mar.world.tiles.length;c++){var d=mar.world.tiles[c].tileX,e=mar.world.tiles[c].tileY;mar.world.tiles[c].isWall&&(d===a&&e-1===b||d-1===a&&e-1===b||d-1===a&&e===b)&&1!==mar.world.tiles[c].alpha&&game.add.tween(mar.world.tiles[c]).to({alpha:1},175,Phaser.Easing.Quadratic.In,!0)}}
|
||||
function dispatchTileEnter(a,b){for(var c=0;c<mar.world.tiles.length;c++){var d=mar.world.tiles[c].tileX,e=mar.world.tiles[c].tileY;mar.world.tiles[c].isWall&&(d===a&&e-1===b||d-1===a&&e-1===b||d-1===a&&e===b)&&game.add.tween(mar.world.tiles[c]).to({alpha:.6},300,Phaser.Easing.Quadratic.In,!0)}}
|
||||
function Word(a){var b=this;b.tiles=[];b.objects=[];setupWorldArrows();this.setTerrain=function(a){for(var d=0;d<WORLD_HEIGHT;d++)for(var c=0;c<WORLD_HEIGHT;c++){var f=a[c*WORLD_WIDTH+d];if(1===f)f=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/bigTile",isoGroup),f.baseZ=0,f.baseTint=colorScheme.wallTint,f.anchor.set(.5,.2),f.isWall=!0;else{if(2===f)f=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/tile",isoGroup),g=game.make.text(0,16,"Iron",{fontSize:22,fill:"#434341",stroke:"#FFFFFF",
|
||||
strokeThickness:1,font:"fixedsys"}),g.alpha=.6,g.anchor.set(.5,0),f.addChild(g),f.baseZ=0,f.baseTint=15987699;else if(3===f){f=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/tile",isoGroup);var g=game.make.text(0,16,"Copper",{fontSize:22,fill:"#C87D38",stroke:"#FFFFFF",strokeThickness:1,font:"fixedsys"});g.alpha=.6;g.anchor.set(.5,0);f.addChild(g);f.baseZ=0;f.baseTint=15987699}else f=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/tile",isoGroup),f.baseZ=0,f.baseTint=colorScheme.tileTint;
|
||||
f.anchor.set(.5,0)}f.isTile=!0;f.tileX=d;f.tileY=c;f.tint=f.baseTint;b.tiles.push(f)}};this.setTerrain(a);this.update=function(a){for(var b=0;b<mar.world.objects.length;b++)mar.world.objects[b].destroy();for(b=0;b<mar.world.tiles.length;b++)mar.world.tiles[b].destroy();mar.world.objects=[];mar.world.tiles=[];this.setTerrain(a);game.iso.topologicalSort(isoGroup)};this.getObject=function(a){for(var c=0;c<b.objects.length;c++)if(b.objects[c].id===a)return b.objects[c];return null};this.updateObjects=
|
||||
function(a){for(c=0;c<b.objects.length;c++)b.objects[c].updated=!1;for(var c=0;c<a.length;c++){var e=b.getObject(a[c].i);null!==e?(e.updated=!0,updateGameObject(e,a[c])):(e=createGameObject(a[c]),e.updated=!0,b.objects.push(e))}for(c=0;c<b.objects.length;c++)b.objects[c].updated||(b.objects[c].destroy(),b.objects.splice(c,1))}}
|
||||
function updateGameObject(a,b){a.direction=b.direction;if(1===a.type){a.action=b.action;if(a.tileX!==b.x||a.tileY!==b.y)dispatchTileLeave(a.tileX,a.tileY),a.tileX=b.x,a.tileY=b.y,cubotWalk(a,a.direction,void 0,CUBOT_WALK_FRAMES);a.heldItem!==b.heldItem&&(void 0!==a.inventory&&a.inventory.destroy(),a.inventory=createInventory([b.heldItem]),a.addChild(a.inventory),a.heldItem=b.heldItem);switch(a.direction){case DIR_NORTH:a.animations.frame=194;break;case DIR_EAST:a.animations.frame=164;break;case DIR_SOUTH:a.animations.frame=
|
||||
240;break;case DIR_WEST:a.animations.frame=254}void 0!==a.hologram&&a.hologram.destroy();0!==b.holo&&(a.hologram=game.make.text(0,32,"0x"+("0000"+Number(b.holo).toString(16).toUpperCase()).slice(-4),{fontSize:32,fill:colorScheme.hologramFill,stroke:colorScheme.hologramStroke,strokeThickness:1,font:"fixedsys"}),a.hologram.alpha=colorScheme.hologramAlpha,a.hologram.anchor.set(.5,0),a.addChild(a.hologram));1===a.action&&cubotDig(a,a.direction)}else if(10===a.type){a.action=b.action;if(a.tileX!==b.x||
|
||||
a.tileY!==b.y)dispatchTileLeave(a.tileX,a.tileY),a.tileX=b.x,a.tileY=b.y,cubotWalk(a,a.direction,void 0,HARVESTER_WALK_FRAMES);switch(a.direction){case DIR_NORTH:a.animations.frame=HARVESTER_WALK_FRAMES.north;break;case DIR_EAST:a.animations.frame=HARVESTER_WALK_FRAMES.east;break;case DIR_SOUTH:a.animations.frame=HARVESTER_WALK_FRAMES.south;break;case DIR_WEST:a.animations.frame=HARVESTER_WALK_FRAMES.west}}}
|
||||
DIR_NORTH=0;DIR_EAST=1;DIR_SOUTH=2;DIR_WEST=3;WORLD_HEIGHT=WORLD_WIDTH=16;var colorScheme={tileTint:16777215,wallTint:14540253,cubotHoverTint:65280,cubotTint:16777215,textFill:"#FFFFFF",textStroke:"#9298a8",biomassTint:6535263,biomassHoverTint:65280,tileHoverTint:65280,itemIron:4408129,itemCopper:13139256,hologramFill:"#0aced6",hologramStroke:"#12FFB0",hologramAlpha:.9},mar={kbBuffer:[],kbBufferText:"",animationFrames:{},controlledUnitVisible:!1};CUBOT_WALK_FRAMES={south:240,north:194,west:254,east:164};
|
||||
HARVESTER_WALK_FRAMES={south:347,north:317,west:377,east:287};LOW_ENERGY=100;fullscreen?(RENDERER_WIDTH=window.innerWidth-4,RENDERER_HEIGHT=window.innerHeight-4):(RENDERER_WIDTH=document.getElementById("game").clientWidth,RENDERER_HEIGHT=window.innerHeight/1.25);var game=new Phaser.Game(RENDERER_WIDTH,RENDERER_HEIGHT,Phaser.AUTO,"game",null,!0,!1);
|
||||
function dispatchTileLeave(a,b){for(var c=0;c<mar.world.tiles.length;c++){var d=mar.world.tiles[c].tileX,f=mar.world.tiles[c].tileY;mar.world.tiles[c].isWall&&(d===a&&f-1===b||d-1===a&&f-1===b||d-1===a&&f===b)&&1!==mar.world.tiles[c].alpha&&game.add.tween(mar.world.tiles[c]).to({alpha:1},175,Phaser.Easing.Quadratic.In,!0)}}
|
||||
function dispatchTileEnter(a,b){for(var c=0;c<mar.world.tiles.length;c++){var d=mar.world.tiles[c].tileX,f=mar.world.tiles[c].tileY;mar.world.tiles[c].isWall&&(d===a&&f-1===b||d-1===a&&f-1===b||d-1===a&&f===b)&&game.add.tween(mar.world.tiles[c]).to({alpha:.6},300,Phaser.Easing.Quadratic.In,!0)}}
|
||||
function Word(a){var b=this;b.tiles=[];b.objects=[];setupWorldArrows();this.setTerrain=function(a){for(var d=0;d<WORLD_HEIGHT;d++)for(var c=0;c<WORLD_HEIGHT;c++){var e=a[c*WORLD_WIDTH+d];if(1===e)e=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/bigTile",isoGroup),e.baseZ=0,e.baseTint=colorScheme.wallTint,e.anchor.set(.5,.2),e.isWall=!0;else{if(2===e)e=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/tile",isoGroup),g=game.make.text(0,16,"Iron",{fontSize:22,fill:"#434341",stroke:"#FFFFFF",
|
||||
strokeThickness:1,font:"fixedsys"}),g.alpha=.6,g.anchor.set(.5,0),e.addChild(g),e.baseZ=0,e.baseTint=15987699;else if(3===e){e=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/tile",isoGroup);var g=game.make.text(0,16,"Copper",{fontSize:22,fill:"#C87D38",stroke:"#FFFFFF",strokeThickness:1,font:"fixedsys"});g.alpha=.6;g.anchor.set(.5,0);e.addChild(g);e.baseZ=0;e.baseTint=15987699}else e=game.add.isoSprite(getIsoX(d),getIsoY(c),0,"sheet","tiles/tile",isoGroup),e.baseZ=0,e.baseTint=colorScheme.tileTint;
|
||||
e.anchor.set(.5,0)}e.isTile=!0;e.tileX=d;e.tileY=c;e.tint=e.baseTint;b.tiles.push(e)}};this.setTerrain(a);this.update=function(a){for(var b=0;b<mar.world.objects.length;b++)mar.world.objects[b].destroy();for(b=0;b<mar.world.tiles.length;b++)mar.world.tiles[b].destroy();mar.world.objects=[];mar.world.tiles=[];this.setTerrain(a);game.iso.topologicalSort(isoGroup)};this.getObject=function(a){for(var c=0;c<b.objects.length;c++)if(b.objects[c].id===a)return b.objects[c];return null};this.updateObjects=
|
||||
function(a){for(c=0;c<b.objects.length;c++)b.objects[c].updated=!1;for(var c=0;c<a.length;c++){var f=b.getObject(a[c].i);null!==f?(f.updated=!0,updateGameObject(f,a[c])):(f=createGameObject(a[c]),f.updated=!0,b.objects.push(f))}for(c=0;c<b.objects.length;c++)b.objects[c].updated||("guest"!==mar.client.username&&1===b.objects[c].type&&b.objects[c].username===mar.client.username&&(findMyRobot(),console.log("Following Cubot "+mar.client.username)),b.objects[c].destroy(),dispatchTileLeave(b.objects[c].tileX,
|
||||
b.objects[c].tileY),b.objects.splice(c,1))}}
|
||||
function updateGameObject(a,b){a.direction=b.direction;if(1===a.type){a.action=b.action;a.energy=b.energy;if(a.tileX!==b.x||a.tileY!==b.y)dispatchTileLeave(a.tileX,a.tileY),a.tileX=b.x,a.tileY=b.y,cubotWalk(a,a.direction,void 0,CUBOT_WALK_FRAMES);a.heldItem!==b.heldItem&&(void 0!==a.inventory&&a.inventory.destroy(),a.inventory=createInventory([b.heldItem]),a.addChild(a.inventory),a.heldItem=b.heldItem);a.tint=a.energy<=LOW_ENERGY?16711680:16777215;switch(a.direction){case DIR_NORTH:a.animations.frame=194;
|
||||
break;case DIR_EAST:a.animations.frame=164;break;case DIR_SOUTH:a.animations.frame=240;break;case DIR_WEST:a.animations.frame=254}void 0!==a.hologram&&a.hologram.destroy();1===b.holoMode?(a.hologram=game.make.text(0,32,"0x"+("0000"+Number(b.holo).toString(16).toUpperCase()).slice(-4),{fontSize:32,fill:colorScheme.hologramFill,stroke:colorScheme.hologramStroke,strokeThickness:1,font:"fixedsys"}),a.hologram.alpha=colorScheme.hologramAlpha,a.hologram.anchor.set(.5,0),a.addChild(a.hologram),game.add.tween(a.hologram).to({tint:16777200,
|
||||
alpha:colorScheme.hologramAlpha-.1},mar.client.tickLength,Phaser.Easing.Bounce.In,!0)):2===b.holoMode&&(a.hologram=game.make.text(0,32,b.holoStr,{fontSize:27,fill:colorScheme.hologramFill,stroke:colorScheme.hologramStroke,strokeThickness:1,font:"fixedsys"}),a.hologram.alpha=colorScheme.hologramAlpha,a.hologram.anchor.set(.5,0),a.addChild(a.hologram),game.add.tween(a.hologram).to({tint:16777200,alpha:colorScheme.hologramAlpha-.1},mar.client.tickLength,Phaser.Easing.Bounce.In,!0));1===a.action&&cubotDig(a,
|
||||
a.direction)}else if(10===a.type){a.action=b.action;if(a.tileX!==b.x||a.tileY!==b.y)dispatchTileLeave(a.tileX,a.tileY),a.tileX=b.x,a.tileY=b.y,cubotWalk(a,a.direction,void 0,HARVESTER_WALK_FRAMES);switch(a.direction){case DIR_NORTH:a.animations.frame=HARVESTER_WALK_FRAMES.north;break;case DIR_EAST:a.animations.frame=HARVESTER_WALK_FRAMES.east;break;case DIR_SOUTH:a.animations.frame=HARVESTER_WALK_FRAMES.south;break;case DIR_WEST:a.animations.frame=HARVESTER_WALK_FRAMES.west}}}
|
||||
function itemColor(a){switch(a){case 1:return colorScheme.biomassTint;case 3:return colorScheme.itemIron;case 4:return colorScheme.itemCopper}}function createInventory(a){var b=game.make.group();switch(a.length){case 0:return b;case 1:if(0!==a[0]){var c=game.make.sprite(0,0,"sheet","inventory/inv1x1");c.anchor.set(.5,.1);c.alpha=.5;var d=game.make.sprite(0,0,"sheet","inventory/item");d.anchor.set(.5,.1);d.tint=itemColor(a[0]);b.addChild(c);b.addChild(d)}return b}for(b=0;b<a.length;b++);}
|
||||
function createGameObject(a){if(1===a.t){var b=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),15,"sheet",null,isoGroup);b.anchor.set(.5,0);b.inputEnabled=!0;b.events.onInputDown.add(function(){debugObj="Cubot: "+b.tileX+", "+b.tileY});b.events.onInputOver.add(function(){document.body.style.cursor="pointer"});b.events.onInputOut.add(function(){document.body.style.cursor="default"});b.id=a.i;b.type=1;b.tileX=a.x;b.tileY=a.y;b.username=a.parent;b.heldItem=a.heldItem;b.direction=a.direction;b.action=a.action;
|
||||
b.inventory=createInventory([b.heldItem]);b.addChild(b.inventory);dispatchTileEnter(a.x,a.y);b.isAt=function(a,b){return this.tileX===a&&this.tileY===b};b.onTileHover=function(){game.add.tween(this).to({isoZ:45},200,Phaser.Easing.Quadratic.InOut,!0);game.add.tween(this.scale).to({x:1.2,y:1.2},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotHoverTint};b.onTileOut=function(){document.body.style.cursor="default";game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,
|
||||
y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotTint};b.animations.add("walk_w",mar.animationFrames.walk_w,!0);b.animations.add("walk_s",mar.animationFrames.walk_s,!0);b.animations.add("walk_e",mar.animationFrames.walk_e,!0);b.animations.add("walk_n",mar.animationFrames.walk_n,!0);b.animations.add("dig_w",mar.animationFrames.dig_w,!1);b.animations.add("dig_s",mar.animationFrames.dig_s,!1);b.animations.add("dig_e",mar.animationFrames.dig_e,!1);b.animations.add("dig_n",mar.animationFrames.dig_n,
|
||||
!1);b.queuedAnims=[];switch(b.direction){case DIR_NORTH:b.animations.frame=194;break;case DIR_EAST:b.animations.frame=164;break;case DIR_SOUTH:b.animations.frame=240;break;case DIR_WEST:b.animations.frame=254}var c=game.make.text(0,-24,b.username,{fontSize:22,fill:colorScheme.textFill,stroke:colorScheme.textStroke,strokeThickness:2,font:"fixedsys"});c.alpha=.85;c.anchor.set(.5,0);b.addChild(c);0!==a.holo&&(b.hologram=game.make.text(0,32,"0x"+("0000"+Number(a.holo).toString(16).toUpperCase()).slice(-4),
|
||||
{fontSize:32,fill:colorScheme.hologramFill,stroke:colorScheme.hologramStroke,strokeThickness:1,font:"fixedsys"}),b.hologram.alpha=colorScheme.hologramAlpha,b.hologram.anchor.set(.5,0),b.addChild(b.hologram));return b}if(2===a.t){var d=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),10,"sheet",1,isoGroup);d.animations.add("idle",mar.animationFrames.biomassIdle,!0);d.anchor.set(.5,0);d.type=2;d.tileX=a.x;d.tileY=a.y;d.id=a.i;d.tint=colorScheme.biomassTint;d.hoverText=game.make.text(0,0,"Biomass",{fontSize:22,
|
||||
fill:colorScheme.textFill,stroke:colorScheme.textStroke,strokeThickness:2,font:"fixedsys"});d.hoverText.alpha=0;d.hoverText.anchor.set(.5,0);d.addChild(d.hoverText);d.isAt=function(a,b){return this.tileX===a&&this.tileY===b};d.isAt=function(a,b){return this.tileX===a&&this.tileY===b};d.onTileHover=function(){game.tweens.removeFrom(this);document.body.style.cursor="pointer";game.add.tween(this).to({isoZ:45},200,Phaser.Easing.Quadratic.InOut,!0);this.tint=colorScheme.biomassHoverTint;game.add.tween(this.scale).to({x:1.2,
|
||||
y:1.2},200,Phaser.Easing.Linear.None,!0);game.add.tween(this.hoverText).to({alpha:.9},200,Phaser.Easing.Quadratic.In,!0);d.hoverText.visible=!0};d.onTileOut=function(){game.tweens.removeFrom(this);document.body.style.cursor="default";game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.biomassTint;game.add.tween(this.hoverText).to({alpha:0},200,Phaser.Easing.Quadratic.Out,!0)};d.animations.play("idle",
|
||||
45,!0);return d}if(10===a.t){c=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),15,"sheet",null,isoGroup);c.anchor.set(.5,0);c.id=a.i;c.type=10;c.tileX=a.x;c.tileY=a.y;c.direction=a.direction;c.action=a.action;dispatchTileEnter(a.x,a.y);c.isAt=function(a,b){return this.tileX===a&&this.tileY===b};c.onTileHover=function(){game.add.tween(this).to({isoZ:45},200,Phaser.Easing.Quadratic.InOut,!0);game.add.tween(this.scale).to({x:1.2,y:1.2},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotHoverTint};
|
||||
c.onTileOut=function(){game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotTint};c.animations.add("walk_w",mar.animationFrames.harvester_walk_w,!0);c.animations.add("walk_s",mar.animationFrames.harvester_walk_s,!0);c.animations.add("walk_e",mar.animationFrames.harvester_walk_e,!0);c.animations.add("walk_n",mar.animationFrames.harvester_walk_n,!0);c.queuedAnims=[];switch(c.direction){case DIR_NORTH:c.animations.frame=
|
||||
HARVESTER_WALK_FRAMES.north;break;case DIR_EAST:c.animations.frame=HARVESTER_WALK_FRAMES.east;break;case DIR_SOUTH:c.animations.frame=HARVESTER_WALK_FRAMES.south;break;case DIR_WEST:c.animations.frame=HARVESTER_WALK_FRAMES.west}return c}if(3===a.t){var e=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),15,"sheet","objects/factory",isoGroup);e.anchor.set(.5,.25);e.id=a.i;e.type=3;e.tileX=a.x;e.tileY=a.y;e.hoverText=game.make.text(0,0,"Factory",{fontSize:22,fill:colorScheme.textFill,stroke:colorScheme.textStroke,
|
||||
strokeThickness:2,font:"fixedsys"});e.hoverText.alpha=0;e.hoverText.anchor.set(.5,0);e.addChild(e.hoverText);e.isAt=function(a,b){return(this.tileX===a||this.tileX+1===a)&&(this.tileY+1===b||this.tileY===b)};e.onTileHover=function(){game.tweens.removeFrom(this);game.add.tween(this).to({isoZ:25},200,Phaser.Easing.Quadratic.InOut,!0);game.add.tween(this.scale).to({x:1.06,y:1.06},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotHoverTint;game.add.tween(this.hoverText).to({alpha:.9},200,Phaser.Easing.Quadratic.In,
|
||||
!0);e.hoverText.visible=!0};e.onTileOut=function(){game.tweens.removeFrom(this);game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotTint;game.add.tween(this.hoverText).to({alpha:0},200,Phaser.Easing.Quadratic.Out,!0)};return e}}function manhanttanDistance(a,b,c,d){return Math.abs(a-c)+Math.abs(b-d)}function codeListener(a){"code"===a.t&&ace.edit("editor").setValue(a.code)}
|
||||
function authListener(a){"auth"===a.t&&("ok"===a.m?(console.log("Auth successful"),mar.client.requestUserInfo()):alert("Authentication failed. Please make sure you are logged in and reload the page."))}function codeResponseListener(a){"codeResponse"===a.t&&alert("Uploaded and assembled "+a.bytes+" bytes")}function userInfoListener(a){"userInfo"===a.t&&(console.log(a),mar.worldX=a.worldX,mar.worldY=a.worldY,mar.maxWidth=a.maxWidth,mar.client.requestTerrain())}
|
||||
function terrainListener(a){"terrain"===a.t&&(void 0!==mar.world?(mar.client.socket.send(JSON.stringify({t:"object",x:mar.worldX,y:mar.worldY})),mar.world.update(a.terrain)):(mar.world=new Word(a.terrain),console.log("Gameloop started")))}function objectListener(a){"object"===a.t&&mar.world.updateObjects(a.objects)}
|
||||
function floppyListener(a){document.getElementById("floppyDown").innerHTML='<i class="fa fa-long-arrow-down" aria-hidden="true"></i> <i class="fa fa-floppy-o" aria-hidden="true"></i>';a=new Blob([a.data],{type:"application/octet-stream"});saveAs(a,"floppy.bin")}function tickListener(a){"tick"===a.t&&mar.client.socket.send(JSON.stringify({t:"object",x:mar.worldX,y:mar.worldY}))}
|
||||
var GameClient=function(a){var b=this,c=[],d=new XMLHttpRequest;d.open("GET","./getServerInfo.php",!0);d.onreadystatechange=function(){4===d.readyState&&200===d.status&&(console.log("Received server info "+d.responseText),setTimeout(function(){var e=JSON.parse(d.responseText);console.log(e.address);b.socket=new WebSocket(e.address);b.username=e.username;b.tickLength=e.tickLength;b.serverName=e.serverName;mar.client.socket.binaryType="arraybuffer";b.socket.onopen=function(){b.socket.send(e.token);
|
||||
c.push(authListener);c.push(userInfoListener);c.push(terrainListener);c.push(tickListener);c.push(objectListener);c.push(codeListener);c.push(codeResponseListener);mar.client.socket.onmessage=function(a){try{var b=JSON.parse(a.data)}catch(h){console.log(h),floppyListener(a)}for(a=0;a<c.length;a++)c[a](b)};b.reloadCode();void 0!==a&&a()};b.socket.onerror=function(a){alert("Can't connect to game server at address "+e.address);console.log(a)};b.socket.onclose=function(a){alert("Disconnected from server");
|
||||
b.energy=a.energy;b.inventory=createInventory([b.heldItem]);b.addChild(b.inventory);dispatchTileEnter(a.x,a.y);b.isAt=function(a,b){return this.tileX===a&&this.tileY===b};b.onTileHover=function(){game.add.tween(this).to({isoZ:45},200,Phaser.Easing.Quadratic.InOut,!0);game.add.tween(this.scale).to({x:1.2,y:1.2},200,Phaser.Easing.Linear.None,!0);16711680!==this.tint&&(this.tint=colorScheme.cubotHoverTint)};b.onTileOut=function(){document.body.style.cursor="default";game.add.tween(this).to({isoZ:15},
|
||||
400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,y:1},200,Phaser.Easing.Linear.None,!0);16711680!==this.tint&&(this.tint=colorScheme.cubotTint)};b.energy<=LOW_ENERGY&&(b.tint=16711680);b.animations.add("walk_w",mar.animationFrames.walk_w,!0);b.animations.add("walk_s",mar.animationFrames.walk_s,!0);b.animations.add("walk_e",mar.animationFrames.walk_e,!0);b.animations.add("walk_n",mar.animationFrames.walk_n,!0);b.animations.add("dig_w",mar.animationFrames.dig_w,!1);b.animations.add("dig_s",
|
||||
mar.animationFrames.dig_s,!1);b.animations.add("dig_e",mar.animationFrames.dig_e,!1);b.animations.add("dig_n",mar.animationFrames.dig_n,!1);b.queuedAnims=[];switch(b.direction){case DIR_NORTH:b.animations.frame=194;break;case DIR_EAST:b.animations.frame=164;break;case DIR_SOUTH:b.animations.frame=240;break;case DIR_WEST:b.animations.frame=254}var c=game.make.text(0,-24,b.username,{fontSize:22,fill:colorScheme.textFill,stroke:colorScheme.textStroke,strokeThickness:2,font:"fixedsys"});c.alpha=.85;c.anchor.set(.5,
|
||||
0);b.username===mar.client.username?c.tint=16469258:b.alpha=.6;b.addChild(c);0!==a.holo&&(b.hologram=game.make.text(0,32,"0x"+("0000"+Number(a.holo).toString(16).toUpperCase()).slice(-4),{fontSize:32,fill:colorScheme.hologramFill,stroke:colorScheme.hologramStroke,strokeThickness:1,font:"fixedsys"}),b.hologram.alpha=colorScheme.hologramAlpha,b.hologram.anchor.set(.5,0),b.addChild(b.hologram));return b}if(2===a.t){var d=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),10,"sheet",1,isoGroup);d.animations.add("idle",
|
||||
mar.animationFrames.biomassIdle,!0);d.anchor.set(.5,0);d.type=2;d.tileX=a.x;d.tileY=a.y;d.id=a.i;d.tint=colorScheme.biomassTint;d.hoverText=game.make.text(0,0,"Biomass",{fontSize:22,fill:colorScheme.textFill,stroke:colorScheme.textStroke,strokeThickness:2,font:"fixedsys"});d.hoverText.alpha=0;d.hoverText.anchor.set(.5,0);d.addChild(d.hoverText);d.isAt=function(a,b){return this.tileX===a&&this.tileY===b};d.isAt=function(a,b){return this.tileX===a&&this.tileY===b};d.onTileHover=function(){game.tweens.removeFrom(this);
|
||||
document.body.style.cursor="pointer";game.add.tween(this).to({isoZ:45},200,Phaser.Easing.Quadratic.InOut,!0);this.tint=colorScheme.biomassHoverTint;game.add.tween(this.scale).to({x:1.2,y:1.2},200,Phaser.Easing.Linear.None,!0);game.add.tween(this.hoverText).to({alpha:.9},200,Phaser.Easing.Quadratic.In,!0);d.hoverText.visible=!0};d.onTileOut=function(){game.tweens.removeFrom(this);document.body.style.cursor="default";game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,
|
||||
y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.biomassTint;game.add.tween(this.hoverText).to({alpha:0},200,Phaser.Easing.Quadratic.Out,!0)};d.animations.play("idle",45,!0);return d}if(10===a.t){c=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),15,"sheet",null,isoGroup);c.anchor.set(.5,0);c.id=a.i;c.type=10;c.tileX=a.x;c.tileY=a.y;c.direction=a.direction;c.action=a.action;dispatchTileEnter(a.x,a.y);c.isAt=function(a,b){return this.tileX===a&&this.tileY===b};c.onTileHover=function(){game.add.tween(this).to({isoZ:45},
|
||||
200,Phaser.Easing.Quadratic.InOut,!0);game.add.tween(this.scale).to({x:1.2,y:1.2},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotHoverTint};c.onTileOut=function(){game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotTint};c.animations.add("walk_w",mar.animationFrames.harvester_walk_w,!0);c.animations.add("walk_s",mar.animationFrames.harvester_walk_s,!0);c.animations.add("walk_e",
|
||||
mar.animationFrames.harvester_walk_e,!0);c.animations.add("walk_n",mar.animationFrames.harvester_walk_n,!0);c.queuedAnims=[];switch(c.direction){case DIR_NORTH:c.animations.frame=HARVESTER_WALK_FRAMES.north;break;case DIR_EAST:c.animations.frame=HARVESTER_WALK_FRAMES.east;break;case DIR_SOUTH:c.animations.frame=HARVESTER_WALK_FRAMES.south;break;case DIR_WEST:c.animations.frame=HARVESTER_WALK_FRAMES.west}return c}if(3===a.t){var f=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),15,"sheet","objects/factory",
|
||||
isoGroup);f.anchor.set(.5,.25);f.id=a.i;f.type=3;f.tileX=a.x;f.tileY=a.y;f.hoverText=game.make.text(0,0,"Factory",{fontSize:22,fill:colorScheme.textFill,stroke:colorScheme.textStroke,strokeThickness:2,font:"fixedsys"});f.hoverText.alpha=0;f.hoverText.anchor.set(.5,0);f.addChild(f.hoverText);f.isAt=function(a,b){return(this.tileX===a||this.tileX+1===a)&&(this.tileY+1===b||this.tileY===b)};f.onTileHover=function(){game.tweens.removeFrom(this);game.add.tween(this).to({isoZ:25},200,Phaser.Easing.Quadratic.InOut,
|
||||
!0);game.add.tween(this.scale).to({x:1.06,y:1.06},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotHoverTint;game.add.tween(this.hoverText).to({alpha:.9},200,Phaser.Easing.Quadratic.In,!0);f.hoverText.visible=!0};f.onTileOut=function(){game.tweens.removeFrom(this);game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotTint;game.add.tween(this.hoverText).to({alpha:0},200,Phaser.Easing.Quadratic.Out,
|
||||
!0)};return f}if(4===a.t){var e=game.add.isoSprite(getIsoX(a.x),getIsoY(a.y),15,"sheet","objects/RadioTower",isoGroup);e.anchor.set(.5,.64);e.id=a.i;e.type=4;e.tileX=a.x;e.tileY=a.y;e.hoverText=game.make.text(0,0,"Radio Tower",{fontSize:22,fill:colorScheme.textFill,stroke:colorScheme.textStroke,strokeThickness:2,font:"fixedsys"});e.hoverText.alpha=0;e.hoverText.anchor.set(.5,0);e.addChild(e.hoverText);e.isAt=function(a,b){return this.tileX===a&&this.tileY===b};e.onTileHover=function(){game.tweens.removeFrom(this);
|
||||
game.add.tween(this).to({isoZ:45},200,Phaser.Easing.Quadratic.InOut,!0);game.add.tween(this.scale).to({x:1.15,y:1.15},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotHoverTint;game.add.tween(this.hoverText).to({alpha:.9},200,Phaser.Easing.Quadratic.In,!0);e.hoverText.visible=!0};e.onTileOut=function(){game.tweens.removeFrom(this);game.add.tween(this).to({isoZ:15},400,Phaser.Easing.Bounce.Out,!0);game.add.tween(this.scale).to({x:1,y:1},200,Phaser.Easing.Linear.None,!0);this.tint=colorScheme.cubotTint;
|
||||
game.add.tween(this.hoverText).to({alpha:0},200,Phaser.Easing.Quadratic.Out,!0)};return e}}function manhanttanDistance(a,b,c,d){return Math.abs(a-c)+Math.abs(b-d)}function codeListener(a){"code"===a.t&&ace.edit("editor").setValue(a.code)}function authListener(a){"auth"===a.t&&("ok"===a.m?(console.log("Auth successful"),mar.client.requestUserInfo()):alert("Authentication failed. Please make sure you are logged in and reload the page."))}
|
||||
function codeResponseListener(a){"codeResponse"===a.t&&alert("Uploaded and assembled "+a.bytes+" bytes")}function userInfoListener(a){"userInfo"===a.t&&(console.log(a),mar.worldX=a.worldX,mar.worldY=a.worldY,mar.maxWidth=a.maxWidth,mar.client.requestTerrain())}
|
||||
function terrainListener(a){"terrain"===a.t&&(void 0!==mar.world?(mar.client.socket.send(JSON.stringify({t:"object",x:mar.worldX,y:mar.worldY})),mar.world.update(a.terrain)):(mar.world=new Word(a.terrain),console.log("Gameloop started"),game.input.keyboard.onDownCallback=function(a){document.activeElement===document.getElementById("game")&&((37<=a.keyCode&&40>=a.keyCode||116===a.keyCode||32===a.keyCode)&&a.preventDefault(),"guest"!==mar.client.username&&16>=mar.kbBuffer.length&&(mar.client.sendKeypress(a.keyCode),
|
||||
mar.kbBuffer.push(a.keyCode),mar.kbBufferText=formattedKeyBuffer(mar.kbBuffer)))},game.input.onDown.add(function(){document.getElementById("game").focus()})))}function objectListener(a){"object"===a.t&&mar.world.updateObjects(a.objects)}function floppyListener(a){document.getElementById("floppyDown").innerHTML='<i class="fa fa-long-arrow-down" aria-hidden="true"></i> <i class="fa fa-floppy-o" aria-hidden="true"></i>';a=new Blob([a.data],{type:"application/octet-stream"});saveAs(a,"floppy.bin")}
|
||||
function tickListener(a){"tick"===a.t&&(mar.client.socket.send(JSON.stringify({t:"object",x:mar.worldX,y:mar.worldY})),void 0!==a.keys&&(mar.kbBuffer=a.keys,mar.kbBufferText=formattedKeyBuffer(mar.kbBuffer)))}
|
||||
var GameClient=function(a){var b=this,c=[],d=new XMLHttpRequest;d.open("GET","./getServerInfo.php",!0);d.onreadystatechange=function(){4===d.readyState&&200===d.status&&(console.log("Received server info "+d.responseText),setTimeout(function(){var f=JSON.parse(d.responseText);console.log(f.address);b.socket=new WebSocket(f.address);b.username=f.username;b.tickLength=f.tickLength;b.serverName=f.serverName;mar.client.socket.binaryType="arraybuffer";b.socket.onopen=function(){b.socket.send(f.token);
|
||||
c.push(authListener);c.push(userInfoListener);c.push(terrainListener);c.push(tickListener);c.push(objectListener);c.push(codeListener);c.push(codeResponseListener);mar.client.socket.onmessage=function(a){try{var b=JSON.parse(a.data)}catch(h){console.log(h),floppyListener(a)}for(a=0;a<c.length;a++)c[a](b)};b.reloadCode();void 0!==a&&a()};b.socket.onerror=function(a){alert("Can't connect to game server at address "+f.address);console.log(a)};b.socket.onclose=function(a){alert("Disconnected from server");
|
||||
console.log(a)}},100))};d.send(null);this.requestUserInfo=function(){this.socket.send(JSON.stringify({t:"userInfo"}))};this.requestTerrain=function(){this.socket.send(JSON.stringify({t:"terrain",x:mar.worldX,y:mar.worldY}))};this.uploadCode=function(a){console.log("Uploaded code");this.socket.send(JSON.stringify({t:"uploadCode",code:a}))};this.reloadCode=function(){this.socket.send(JSON.stringify({t:"codeRequest"}))};this.sendKeypress=function(a){0!==a&&this.socket.send(JSON.stringify({t:"k",k:a}))};
|
||||
this.request=function(a){0!==a&&this.socket.send(JSON.stringify({t:"k",k:a}))};this.requestFloppy=function(){document.getElementById("floppyDown").innerHTML='<i class="fa fa-cog fa-spin fa-fw"></i>';this.socket.send(JSON.stringify({t:"floppyDown"}))};this.notifyFloppyUp=function(){this.socket.send(JSON.stringify({t:"floppyUp"}))}};function dispatchTileHover(a,b){for(var c in mar.world.objects){var d=mar.world.objects[c];if(d.isAt(a,b))d.onTileHover()}}
|
||||
function dispatchTileOut(a,b){for(var c in mar.world.objects){var d=mar.world.objects[c];if(d.isAt(a,b))d.onTileOut()}}var count=0,BasicGame=function(a){};BasicGame.Boot=function(a){};var isoGroup,cursorPos,cursor,debugTile,debugObj,objectsGroup,cursors,tmpLine;
|
||||
this.requestFloppy=function(){document.getElementById("floppyDown").innerHTML='<i class="fa fa-cog fa-spin fa-fw"></i>';this.socket.send(JSON.stringify({t:"floppyDown"}))};this.notifyFloppyUp=function(){this.socket.send(JSON.stringify({t:"floppyUp"}))}};function dispatchTileHover(a,b){for(var c in mar.world.objects){var d=mar.world.objects[c];if(d.isAt(a,b))d.onTileHover()}}function dispatchTileOut(a,b){for(var c in mar.world.objects){var d=mar.world.objects[c];if(d.isAt(a,b))d.onTileOut()}}
|
||||
var count=0,BasicGame=function(a){};BasicGame.Boot=function(a){};var isoGroup,cursorPos,cursor,debugTile,debugObj,objectsGroup,cursors,tmpLine;
|
||||
BasicGame.Boot.prototype={preload:function(){game.load.atlasJSONHash("sheet","./mar/sprites.png","./mar/sprites.json");game.time.advancedTiming=!0;game.plugins.add(new Phaser.Plugin.Isometric(game));game.iso.anchor.setTo(.5,0);game.world.setBounds(0,0,2200,1100);game.camera.x=280;game.camera.y=90;game.stage.disableVisibilityChange=!0},create:function(){isoGroup=game.add.group();objectsGroup=game.add.group();initialiseAnimations();this.spawnTiles();cursorPos=new Phaser.Plugin.Isometric.Point3;cursors=
|
||||
game.input.keyboard.createCursorKeys()},update:function(){game.iso.unproject(game.input.activePointer.position,cursorPos);isoGroup.forEach(function(a){if(a.isTile){var b=a.isoBounds.containsXY(cursorPos.x,cursorPos.y);!a.selected&&b?(a.selected=!0,a.tint=colorScheme.tileHoverTint,debugTile=a.tileX+", "+a.tileY,dispatchTileHover(a.tileX,a.tileY),game.add.tween(a).to({isoZ:a.baseZ+8},200,Phaser.Easing.Quadratic.InOut,!0)):a.selected&&!b&&(dispatchTileOut(a.tileX,a.tileY),a.selected=!1,a.tint=a.baseTint,
|
||||
game.add.tween(a).to({isoZ:a.baseZ},200,Phaser.Easing.Quadratic.InOut,!0))}});this.game.input.activePointer.isDown?(this.game.origDragPoint&&(this.game.camera.x+=this.game.origDragPoint.x-this.game.input.activePointer.position.x,this.game.camera.y+=this.game.origDragPoint.y-this.game.input.activePointer.position.y),this.game.origDragPoint=this.game.input.activePointer.position.clone()):this.game.origDragPoint=null;count++;0===count%10&&game.iso.topologicalSort(isoGroup)},render:function(){void 0!==
|
||||
mar.worldX?game.debug.text("World: ("+Number(mar.worldX).toString(16)+", "+Number(mar.worldY).toString(16)+")",10,20):game.debug.text("World: (?,?)",10,20);debugTile&&game.debug.text(debugTile,10,40);void 0!==tmpLine&&(game.debug.geom(tmpLine),game.debug.lineInfo(tmpLine,32,32))},spawnTiles:function(){mar.client=new GameClient}};
|
||||
mar.worldX?game.debug.text("World: ("+Number(mar.worldX).toString(16)+", "+Number(mar.worldY).toString(16)+")",10,20):game.debug.text("World: (?,?)",10,20);debugTile&&game.debug.text(debugTile,10,40);"guest"!==mar.client.username&&game.debug.text(mar.kbBufferText,210,20);void 0!==tmpLine&&(game.debug.geom(tmpLine),game.debug.lineInfo(tmpLine,32,32))},spawnTiles:function(){mar.client=new GameClient}};
|
||||
function setupWorldArrows(){var a=game.make.isoSprite(528,-10,10,"sheet","ui/arrow_north",isoGroup);a.inputEnabled=!0;a.events.onInputDown.add(function(){0===mar.worldY?mar.worldY=mar.maxWidth:mar.worldY--;mar.client.requestTerrain()});a.events.onInputOver.add(function(){a.tint=65280;document.body.style.cursor="pointer"});a.events.onInputOut.add(function(){a.tint=16777215;document.body.style.cursor="default"});isoGroup.addChild(a);var b=game.make.isoSprite(1115,587,10,"sheet","ui/arrow_east",isoGroup);
|
||||
b.inputEnabled=!0;b.events.onInputDown.add(function(){mar.worldX===mar.maxWidth?mar.worldX=0:mar.worldX++;mar.client.requestTerrain()});b.events.onInputOver.add(function(){b.tint=65280;document.body.style.cursor="pointer"});b.events.onInputOut.add(function(){b.tint=16777215;document.body.style.cursor="default"});isoGroup.addChild(b);var c=game.make.isoSprite(528,1170,10,"sheet","ui/arrow_south",isoGroup);c.inputEnabled=!0;c.events.onInputDown.add(function(){mar.worldY===mar.maxWidth?mar.worldY=0:
|
||||
mar.worldY++;mar.client.requestTerrain()});c.events.onInputOver.add(function(){c.tint=65280;document.body.style.cursor="pointer"});c.events.onInputOut.add(function(){c.tint=16777215;document.body.style.cursor="default"});isoGroup.addChild(c);var d=game.make.isoSprite(-60,587,10,"sheet","ui/arrow_west",isoGroup);d.inputEnabled=!0;d.events.onInputDown.add(function(){0===mar.worldX?mar.worldX=mar.maxWidth:mar.worldX--;mar.client.requestTerrain()});d.events.onInputOver.add(function(){d.tint=65280;document.body.style.cursor=
|
||||
"pointer"});d.events.onInputOut.add(function(){d.tint=16777215;document.body.style.cursor="default"});isoGroup.addChild(d)}function cubotDig(a,b,c){b===DIR_NORTH?a.animations.play("dig_n",45):b===DIR_EAST?a.animations.play("dig_e",45):b===DIR_SOUTH?a.animations.play("dig_s",45):b===DIR_WEST&&a.animations.play("dig_w",45)}
|
||||
function cubotWalk(a,b,c,d){var e;if(b===DIR_SOUTH)var f=function(b){a.animations.play("walk_s",60,!0);e=game.add.tween(a).to({isoX:getIsoX(a.tileX),isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,a.tileY);e.onComplete.add(function(){a.animations.stop();a.animations.frame=d.south;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})};else b===DIR_NORTH?
|
||||
f=function(b){a.animations.play("walk_n",60,!0);e=game.add.tween(a).to({isoX:getIsoX(a.tileX),isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,a.tileY);e.onComplete.add(function(){a.animations.stop();a.animations.frame=d.north;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})}:b===DIR_WEST?f=function(b){a.animations.play("walk_w",60,!0);e=game.add.tween(a).to({isoX:getIsoX(a.tileX),
|
||||
isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,a.tileY);e.onComplete.add(function(){a.animations.stop();a.animations.frame=d.west;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})}:b===DIR_EAST&&(f=function(b){a.animations.play("walk_e",60,!0);e=game.add.tween(a).to({isoX:getIsoX(a.tileX),isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,
|
||||
a.tileY);e.onComplete.add(function(){a.animations.stop();a.animations.frame=d.east;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})});a.animations.currentAnim.isPlaying?(a.queuedAnims.push(f),console.log("Queued Animation")):f(800)}
|
||||
function cubotWalk(a,b,c,d){var f;if(b===DIR_SOUTH)var e=function(b){a.animations.play("walk_s",60,!0);f=game.add.tween(a).to({isoX:getIsoX(a.tileX),isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,a.tileY);f.onComplete.add(function(){a.animations.stop();a.animations.frame=d.south;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})};else b===DIR_NORTH?
|
||||
e=function(b){a.animations.play("walk_n",60,!0);f=game.add.tween(a).to({isoX:getIsoX(a.tileX),isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,a.tileY);f.onComplete.add(function(){a.animations.stop();a.animations.frame=d.north;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})}:b===DIR_WEST?e=function(b){a.animations.play("walk_w",60,!0);f=game.add.tween(a).to({isoX:getIsoX(a.tileX),
|
||||
isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,a.tileY);f.onComplete.add(function(){a.animations.stop();a.animations.frame=d.west;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})}:b===DIR_EAST&&(e=function(b){a.animations.play("walk_e",60,!0);f=game.add.tween(a).to({isoX:getIsoX(a.tileX),isoY:getIsoY(a.tileY)},b,Phaser.Easing.Linear.None,!0);dispatchTileEnter(a.tileX,
|
||||
a.tileY);f.onComplete.add(function(){a.animations.stop();a.animations.frame=d.east;a.onTileOut();a.isoX=getIsoX(a.tileX);a.isoY=getIsoY(a.tileY);void 0!==c&&c();for(var b=0;b<a.queuedAnims.length;b++)a.queuedAnims[b](500),a.queuedAnims.splice(b,1)})});a.animations.currentAnim.isPlaying?(a.queuedAnims.push(e),console.log("Queued Animation")):e(800)}
|
||||
function initialiseAnimations(){mar.animationFrames.walk_e_start=[];for(var a=0;10>a;a++)mar.animationFrames.walk_e_start.push("cubot/walk_e/"+("0000"+a).slice(-4));mar.animationFrames.walk_e=[];for(a=10;30>a;a++)mar.animationFrames.walk_e.push("cubot/walk_e/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_e_start=[];for(a=0;10>a;a++)mar.animationFrames.harvester_walk_e_start.push("harvester/walk_e/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_e=[];for(a=10;30>a;a++)mar.animationFrames.harvester_walk_e.push("harvester/walk_e/"+
|
||||
("0000"+a).slice(-4));mar.animationFrames.walk_n_start=[];for(a=0;10>a;a++)mar.animationFrames.walk_n_start.push("cubot/walk_n/"+("0000"+a).slice(-4));mar.animationFrames.walk_n=[];for(a=10;30>a;a++)mar.animationFrames.walk_n.push("cubot/walk_n/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_n_start=[];for(a=0;10>a;a++)mar.animationFrames.harvester_walk_n_start.push("harvester/walk_n/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_n=[];for(a=10;30>a;a++)mar.animationFrames.harvester_walk_n.push("harvester/walk_n/"+
|
||||
("0000"+a).slice(-4));mar.animationFrames.walk_s_start=[];for(a=0;10>a;a++)mar.animationFrames.walk_s_start.push("cubot/walk_s/"+("0000"+a).slice(-4));mar.animationFrames.walk_s=[];for(a=10;30>a;a++)mar.animationFrames.walk_s.push("cubot/walk_s/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_s_start=[];for(a=0;10>a;a++)mar.animationFrames.harvester_walk_s_start.push("harvester/walk_s/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_s=[];for(a=10;30>a;a++)mar.animationFrames.harvester_walk_s.push("harvester/walk_s/"+
|
||||
("0000"+a).slice(-4));mar.animationFrames.walk_w_start=[];for(a=0;10>a;a++)mar.animationFrames.walk_w_start.push("cubot/walk_w/"+("0000"+a).slice(-4));mar.animationFrames.walk_w=[];for(a=10;30>a;a++)mar.animationFrames.walk_w.push("cubot/walk_w/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_w_start=[];for(a=0;10>a;a++)mar.animationFrames.harvester_walk_w_start.push("harvester/walk_w/"+("0000"+a).slice(-4));mar.animationFrames.harvester_walk_w=[];for(a=10;30>a;a++)mar.animationFrames.harvester_walk_w.push("harvester/walk_w/"+
|
||||
("0000"+a).slice(-4));mar.animationFrames.dig_e=[];for(a=1;41>=a;a++)mar.animationFrames.dig_e.push("cubot/dig_e/"+("0000"+a).slice(-4));mar.animationFrames.dig_n=[];for(a=1;41>=a;a++)mar.animationFrames.dig_n.push("cubot/dig_n/"+("0000"+a).slice(-4));mar.animationFrames.dig_s=[];for(a=1;41>=a;a++)mar.animationFrames.dig_s.push("cubot/dig_s/"+("0000"+a).slice(-4));mar.animationFrames.dig_w=[];for(a=1;41>=a;a++)mar.animationFrames.dig_w.push("cubot/dig_w/"+("0000"+a).slice(-4));mar.animationFrames.biomassIdle=
|
||||
[];for(a=1;60>a;a++)mar.animationFrames.biomassIdle.push("objects/biomass/idle/"+("0000"+a).slice(-4))}function getIsoX(a){return 71.5*a}function getIsoY(a){return 71.5*a}game.state.add("Boot",BasicGame.Boot);game.state.start("Boot");
|
||||
[];for(a=1;60>a;a++)mar.animationFrames.biomassIdle.push("objects/biomass/idle/"+("0000"+a).slice(-4))}function getIsoX(a){return 71.5*a}function getIsoY(a){return 71.5*a}function findMyRobot(){"guest"===mar.client.username?alert("You are not logged in!"):mar.client.requestUserInfo()}function formattedKeyBuffer(a){for(var b="KB: ",c=0;16>c;c++)b=void 0!==a[c]?b+(a[c].toString(16)+" "):b+"__ ";return b}game.state.add("Boot",BasicGame.Boot);game.state.start("Boot");
|
||||
|
||||
Reference in New Issue
Block a user