mirror of
https://github.com/simon987/Much-Assembly-Required-Frontend.git
synced 2025-04-10 14:26:44 +00:00
211 lines
6.5 KiB
TypeScript
211 lines
6.5 KiB
TypeScript
// Typescript V2.4.1
|
|
|
|
let RENDERER_WIDTH = document.getElementById("game").clientWidth * window.devicePixelRatio;
|
|
let RENDERER_HEIGHT = (window.innerHeight / 1.40) * window.devicePixelRatio;
|
|
|
|
let DEBUG: boolean = true;
|
|
|
|
let config = {
|
|
portalTint: 0xff43c8,
|
|
tileTint: 0xFFFFFF,
|
|
wallTint: 0xDDDDDD,
|
|
vaultWallTint: 0x3F2D2A,
|
|
vaultFloorTint: 0x2B1E1C,
|
|
oreTint: 0xF3F3F3,
|
|
cubotHoverTint: 0x00FF00,
|
|
cubotTint: 0xFFFFFF,
|
|
textFill: "#FFFFFF",
|
|
textStroke: "#9298a8",
|
|
biomassTint: 0x63B85F,
|
|
biomassHoverTint: 0x00FF00,
|
|
tileHoverTint: 0x00FF00,
|
|
itemIron: 0x434341,
|
|
textIron: "#434341",
|
|
itemCopper: 0xC87D38,
|
|
textCopper: "#C87D38",
|
|
hologramFill: "#0aced6",
|
|
hologramStroke: "#12FFB0",
|
|
copperFill: "#C87D38",
|
|
plainSprite: "tiles/tile",
|
|
wallSprite: "tiles/bigTile",
|
|
wallSprite2: "tiles/bigTile2",
|
|
walkDuration: 800, //walk animation duration in ms
|
|
holoStyle: (fill: string) => {
|
|
return {
|
|
fontSize: 32,
|
|
fill: fill ? fill : config.hologramFill,
|
|
stroke: config.hologramStroke,
|
|
strokeThickness: 1,
|
|
font: "fixedsys"
|
|
}
|
|
},
|
|
kbBufferX: 350, ///Position of the keyboard buffer fill on screen
|
|
kbBufferY: 20,
|
|
arrowTextStyle: {
|
|
fontSize: 32,
|
|
fill: "#ffffff",
|
|
stroke: "#9298a8",
|
|
strokeThickness: 1,
|
|
font: "fixedsys"
|
|
},
|
|
lowEnergy: 100, //Low energy threshold to change color
|
|
lowEnergyTint: 0xCC0000,
|
|
bigMessageFill: "#ff803d",
|
|
arrowTint: 0xFFFFFF,
|
|
arrowHoverTint: 0x00FF00,
|
|
selfUsernameColor: 0xFB4D0A, //Color of own Cubot's username.
|
|
otherCubotAlpha: 0.6,
|
|
defaultWorldSize: 16 //Will fallback to this when server does not provide world width
|
|
|
|
};
|
|
|
|
|
|
class Util {
|
|
|
|
//todo: find a more elegant way of doing this. Maybe this is related: https://github.com/lewster32/phaser-plugin-isometric/issues/7
|
|
static getIsoY(y: number) {
|
|
return Util.getIsoX(y);
|
|
}
|
|
|
|
static getIsoX(x: number) {
|
|
return (x * 71.5)
|
|
}
|
|
|
|
static getDeltaX(direction: Direction) {
|
|
switch (direction) {
|
|
case Direction.NORTH:
|
|
case Direction.SOUTH:
|
|
return 0;
|
|
case Direction.EAST:
|
|
return 1;
|
|
case Direction.WEST:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
static getDeltaY(direction: Direction) {
|
|
|
|
switch (direction) {
|
|
case Direction.EAST:
|
|
case Direction.WEST:
|
|
return 0;
|
|
case Direction.NORTH:
|
|
return -1;
|
|
case Direction.SOUTH:
|
|
return 1;
|
|
}
|
|
|
|
}
|
|
|
|
static itemColor(item) {
|
|
|
|
switch (item) {
|
|
case 1:
|
|
return config.biomassTint;
|
|
case 3:
|
|
return config.itemIron;
|
|
case 4:
|
|
return config.itemCopper;
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
class Debug {
|
|
|
|
public static setTileAt(x, y, newTile) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "setTileAt", x: x, y: y, newTile: newTile,
|
|
worldX: mar.client.worldX, worldY: mar.client.worldY, dimension: mar.client.dimension});
|
|
|
|
mar.client.requestTerrain(); //Reload terrain
|
|
}
|
|
|
|
public static createWorld(x, y, dimension) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "createWorld", worldX: x, worldY: y, dimension:dimension});
|
|
window.setTimeout(mar.client.requestTerrain, 250)
|
|
}
|
|
|
|
public static createWorldHex(x, y, dimension) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "createWorld",
|
|
worldX: parseInt(x, 16), worldY: parseInt(y, 16), dimension:dimension});
|
|
}
|
|
|
|
public static goTo(worldX, worldY, dimension) {
|
|
mar.client.worldX = worldX;
|
|
mar.client.worldY = worldY;
|
|
mar.client.dimension = dimension;
|
|
mar.client.requestTerrain(); //Reload terrain
|
|
}
|
|
|
|
public static goToHex(worldX, worldY, dimension) {
|
|
mar.client.worldX = parseInt(worldX, 16);
|
|
mar.client.worldY = parseInt(worldY, 16);
|
|
mar.client.dimension = dimension;
|
|
mar.client.requestTerrain();
|
|
}
|
|
|
|
public static killAll(x, y) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "killAll", x: x, y: y,
|
|
worldX: mar.client.worldX, worldY: mar.client.worldY, dimension: mar.client.dimension});
|
|
}
|
|
|
|
public static objInfo(x, y) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "objInfo", x: x, y: y,
|
|
worldX: mar.client.worldX, worldY: mar.client.worldY, dimension: mar.client.dimension});
|
|
}
|
|
|
|
public static userInfo(username) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "userInfo", username: username});
|
|
}
|
|
|
|
public static moveObj(objectId, x, y) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "moveObj", objectId: objectId, x: x, y: y});
|
|
mar.client.requestObjects();
|
|
}
|
|
|
|
public static tpObj(objectId, x, y, worldX, worldY, dimension) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "tpObj", objectId: objectId, x: x, y: y, worldX: worldX,
|
|
worldY: worldY, dimension: dimension});
|
|
mar.client.requestObjects();
|
|
}
|
|
|
|
public static tpObjHex(objectId, x, y, worldX, worldY, dimension) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "tpObj", objectId: objectId, x: x, y: y, worldX: parseInt(worldX, 16),
|
|
worldY: parseInt(worldY, 16), dimension: dimension});
|
|
mar.client.requestObjects();
|
|
}
|
|
|
|
public static spawnObj(data) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "spawnObj", data: data,
|
|
worldX: mar.client.worldX, worldY: mar.client.worldY, dimension: mar.client.dimension});
|
|
}
|
|
|
|
public static comPortMsg(objectId, message) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "comPortMsg", objectId: objectId, message: message});
|
|
}
|
|
|
|
public static healObj(objectId, amount) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "healObj", objectId: objectId, amount: amount});
|
|
}
|
|
|
|
public static damageObj(objectId, amount) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "damageObj", objectId: objectId, amount: amount});
|
|
}
|
|
|
|
public static chargeShield(objectId, amount) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "chargeShield", objectId: objectId, amount: amount});
|
|
}
|
|
|
|
public static setEnergy(objectId, amount) {
|
|
mar.client.sendDebugCommand({t:"debug", command: "setEnergy", objectId: objectId, amount: amount});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
DEBUG = false; // todo remove
|
|
|
|
let mar = new MarGame();
|
|
|