forked from ilikecats/papercats
move consts to config.json
This commit is contained in:
parent
dad3583c68
commit
32449da6fb
13
config.json
13
config.json
@ -2,5 +2,16 @@
|
|||||||
"hostname": "0.0.0.0",
|
"hostname": "0.0.0.0",
|
||||||
"http_port": 8080,
|
"http_port": 8080,
|
||||||
"ws_port": 8081,
|
"ws_port": 8081,
|
||||||
"bots": []
|
"bots": [],
|
||||||
|
// DO NOT EDIT THE FOLLOWING SETTINGS
|
||||||
|
// UNLESS YOU KNOW WHAT YOU ARE DOING
|
||||||
|
"consts": {
|
||||||
|
"GRID_SIZE": 80,
|
||||||
|
"CELL_WIDTH": 40,
|
||||||
|
"SPEED": 5,
|
||||||
|
"BORDER_WIDTH": 20,
|
||||||
|
"MAX_PLAYERS": 81,
|
||||||
|
"PREFIXES": "Angry Baby Crazy Diligent Excited Fat Greedy Hungry Interesting Japanese Kind Little Magic Naïve Old Powerful Quiet Rich Superman THU Undefined Valuable Wifeless Xiangbuchulai Young Zombie",
|
||||||
|
"NAMES": "Alice Bob Carol Dave Eve Francis Grace Hans Isabella Jason Kate Louis Margaret Nathan Olivia Paul Queen Richard Susan Thomas Uma Vivian Winnie Xander Yasmine Zach"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
File diff suppressed because one or more lines are too long
@ -4,16 +4,14 @@ if (process.argv.length < 3) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO: add a land claiming algo (with coefficient parameters)
|
//TODO: add a land claiming algo (with coefficient parameters)
|
||||||
//TODO: add weight to the max land area and last land area, and also the number
|
//TODO: add weight to the max land area and last land area, and also the number of kills
|
||||||
//of kills
|
|
||||||
//TODO: genetic gene pooling
|
//TODO: genetic gene pooling
|
||||||
|
|
||||||
var core = require("../core");
|
var core = require("../core");
|
||||||
var client = require("../game-client");
|
var client = require("../game-client");
|
||||||
|
var consts = require("../../config.json").consts;
|
||||||
|
|
||||||
var GRID_SIZE = core.GRID_SIZE;
|
var MOVES = [[-1, 0], [0, 1], [1, 0], [0, -1]];
|
||||||
var CELL_WIDTH = core.CELL_WIDTH;
|
|
||||||
var MOVES = [[-1, 0], [0, 1], [1, 0], [0, -1]]
|
|
||||||
|
|
||||||
var AGGRESSIVE = Math.random();
|
var AGGRESSIVE = Math.random();
|
||||||
var THRESHOLD = 10;
|
var THRESHOLD = 10;
|
||||||
@ -51,7 +49,7 @@ var DIST_TYPES = {
|
|||||||
}
|
}
|
||||||
}, edge: {
|
}, edge: {
|
||||||
check: function(loc) {
|
check: function(loc) {
|
||||||
return loc.row <= 1 || loc.col <= 1 || loc.row >= GRID_SIZE - 1 || loc.col >= GRID_SIZE - 1
|
return loc.row <= 1 || loc.col <= 1 || loc.row >= consts.GRID_SIZE - 1 || loc.col >= consts.GRID_SIZE - 1
|
||||||
},
|
},
|
||||||
coeff: function() {
|
coeff: function() {
|
||||||
return coeffs[4];
|
return coeffs[4];
|
||||||
@ -124,7 +122,7 @@ function tail(player, loc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function traverseGrid(dir) {
|
function traverseGrid(dir) {
|
||||||
steps = new Array(GRID_SIZE * GRID_SIZE);
|
steps = new Array(consts.GRID_SIZE * consts.GRID_SIZE);
|
||||||
for (var i in steps) {
|
for (var i in steps) {
|
||||||
steps[i] = -1;
|
steps[i] = -1;
|
||||||
}
|
}
|
||||||
@ -135,8 +133,8 @@ function traverseGrid(dir) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var row = user.row, col = user.col;
|
var row = user.row, col = user.col;
|
||||||
var minRow = Math.max(0, row - 10), maxRow = Math.min(GRID_SIZE, row + 10);
|
var minRow = Math.max(0, row - 10), maxRow = Math.min(consts.GRID_SIZE, row + 10);
|
||||||
var minCol = Math.max(0, col - 10), maxCol = Math.min(GRID_SIZE, col + 10);
|
var minCol = Math.max(0, col - 10), maxCol = Math.min(consts.GRID_SIZE, col + 10);
|
||||||
|
|
||||||
var proj = 0;
|
var proj = 0;
|
||||||
for (var i = 1; i >= -1; i-=2) {
|
for (var i = 1; i >= -1; i-=2) {
|
||||||
@ -154,7 +152,7 @@ function traverseGrid(dir) {
|
|||||||
loc.row += user.row;
|
loc.row += user.row;
|
||||||
loc.col += user.col;
|
loc.col += user.col;
|
||||||
|
|
||||||
if (loc.row < 0 || loc.row >= GRID_SIZE || loc.col < 0 || loc.col >= GRID_SIZE) continue;
|
if (loc.row < 0 || loc.row >= consts.GRID_SIZE || loc.col < 0 || loc.col >= consts.GRID_SIZE) continue;
|
||||||
if (DIST_TYPES[distType].check(loc)) distWeights[distType] += dist;
|
if (DIST_TYPES[distType].check(loc)) distWeights[distType] += dist;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,9 +162,9 @@ function traverseGrid(dir) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function printGrid() {
|
function printGrid() {
|
||||||
var chars = new core.Grid(GRID_SIZE);
|
var chars = new core.Grid(consts.GRID_SIZE);
|
||||||
for (var r = 0; r < GRID_SIZE; r++) {
|
for (var r = 0; r < consts.GRID_SIZE; r++) {
|
||||||
for (var c = 0; c < GRID_SIZE; c++) {
|
for (var c = 0; c < consts.GRID_SIZE; c++) {
|
||||||
if (tail(user, {row: r, col: c})) chars.set(r, c, "t");
|
if (tail(user, {row: r, col: c})) chars.set(r, c, "t");
|
||||||
else {
|
else {
|
||||||
var owner = grid.get(r, c);
|
var owner = grid.get(r, c);
|
||||||
@ -181,9 +179,9 @@ function printGrid() {
|
|||||||
chars.set(user.row, user.col, "^>V<"[user.currentHeading]);
|
chars.set(user.row, user.col, "^>V<"[user.currentHeading]);
|
||||||
|
|
||||||
var str = "";
|
var str = "";
|
||||||
for (var r = 0; r < GRID_SIZE; r++) {
|
for (var r = 0; r < consts.GRID_SIZE; r++) {
|
||||||
str += "\n";
|
str += "\n";
|
||||||
for (var c = 0; c < GRID_SIZE; c++) {
|
for (var c = 0; c < consts.GRID_SIZE; c++) {
|
||||||
str += chars.get(r, c);
|
str += chars.get(r, c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,8 @@ if (process.argv.length < 3) {
|
|||||||
|
|
||||||
var core = require("../core");
|
var core = require("../core");
|
||||||
var client = require("../game-client");
|
var client = require("../game-client");
|
||||||
|
var consts = require("../../config.json").consts;
|
||||||
|
|
||||||
var GRID_SIZE = core.GRID_SIZE;
|
|
||||||
var CELL_WIDTH = core.CELL_WIDTH;
|
|
||||||
var MOVES = [[-1, 0], [0, 1], [1, 0], [0, -1]];
|
var MOVES = [[-1, 0], [0, 1], [1, 0], [0, -1]];
|
||||||
|
|
||||||
var startFrame = -1;
|
var startFrame = -1;
|
||||||
@ -50,9 +49,9 @@ function update(frame) {
|
|||||||
//the original code (i.e. deobfuscating) and made more efficient in some
|
//the original code (i.e. deobfuscating) and made more efficient in some
|
||||||
//areas (and some tweaks), otherwise, the original logic is about the same.
|
//areas (and some tweaks), otherwise, the original logic is about the same.
|
||||||
var row = user.row, col = user.col, dir = user.currentHeading;
|
var row = user.row, col = user.col, dir = user.currentHeading;
|
||||||
var thres = (.05 + .1 * Math.random()) * GRID_SIZE * GRID_SIZE;
|
var thres = (.05 + .1 * Math.random()) * consts.GRID_SIZE * consts.GRID_SIZE;
|
||||||
|
|
||||||
if (row < 0 || col < 0 || row >= GRID_SIZE || col >= GRID_SIZE) return;
|
if (row < 0 || col < 0 || row >= consts.GRID_SIZE || col >= consts.GRID_SIZE) return;
|
||||||
|
|
||||||
if (grid.get(row, col) === user) {
|
if (grid.get(row, col) === user) {
|
||||||
//When we are inside our territory
|
//When we are inside our territory
|
||||||
@ -66,7 +65,7 @@ function update(frame) {
|
|||||||
var nr = MOVES[nd][0] * S + row;
|
var nr = MOVES[nd][0] * S + row;
|
||||||
var nc = MOVES[nd][1] * S + col;
|
var nc = MOVES[nd][1] * S + col;
|
||||||
|
|
||||||
if (nr < 0 || nc < 0 || nr >= GRID_SIZE || nc >= GRID_SIZE) {
|
if (nr < 0 || nc < 0 || nr >= consts.GRID_SIZE || nc >= consts.GRID_SIZE) {
|
||||||
if (S > 1) weights[nd]--;
|
if (S > 1) weights[nd]--;
|
||||||
else weights[nd] = -9999;
|
else weights[nd] = -9999;
|
||||||
}
|
}
|
||||||
@ -132,7 +131,7 @@ function update(frame) {
|
|||||||
var nr = MOVES[nd][0] * S + row;
|
var nr = MOVES[nd][0] * S + row;
|
||||||
var nc = MOVES[nd][1] * S + col;
|
var nc = MOVES[nd][1] * S + col;
|
||||||
|
|
||||||
if (nr < 0 || nc < 0 || nr >= GRID_SIZE || nc >= GRID_SIZE) {
|
if (nr < 0 || nc < 0 || nr >= consts.GRID_SIZE || nc >= consts.GRID_SIZE) {
|
||||||
if (S > 1) weights[nd]--;
|
if (S > 1) weights[nd]--;
|
||||||
else weights[nd] = -9999;
|
else weights[nd] = -9999;
|
||||||
}
|
}
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
function constant(val) {
|
|
||||||
return {
|
|
||||||
value: val,
|
|
||||||
enumerable: true
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
var consts = {
|
|
||||||
GRID_SIZE: constant(80),
|
|
||||||
CELL_WIDTH: constant(40),
|
|
||||||
SPEED: constant(5),
|
|
||||||
BORDER_WIDTH: constant(20),
|
|
||||||
MAX_PLAYERS: constant(81),
|
|
||||||
PREFIXES: constant("Angry Baby Crazy Diligent Excited Fat Greedy Hungry Interesting Japanese Kind Little Magic Naïve Old Powerful Quiet Rich Superman THU Undefined Valuable Wifeless Xiangbuchulai Young Zombie".split(" ")),
|
|
||||||
NAMES: constant("Alice Bob Carol Dave Eve Francis Grace Hans Isabella Jason Kate Louis Margaret Nathan Olivia Paul Queen Richard Susan Thomas Uma Vivian Winnie Xander Yasmine Zach".split(" "))
|
|
||||||
};
|
|
||||||
|
|
||||||
Object.defineProperties(module.exports, consts);
|
|
@ -1,7 +1,4 @@
|
|||||||
var consts = require("./consts");
|
var consts = require("../../config.json").consts;
|
||||||
var CELL_WIDTH = consts.CELL_WIDTH;
|
|
||||||
|
|
||||||
//TODO: remove constants
|
|
||||||
exports.initPlayer = function(grid, player) {
|
exports.initPlayer = function(grid, player) {
|
||||||
for (var dr = -1; dr <= 1; dr++) {
|
for (var dr = -1; dr <= 1; dr++) {
|
||||||
for (var dc = -1; dc <= 1; dc++) {
|
for (var dc = -1; dc <= 1; dc++) {
|
||||||
@ -97,11 +94,11 @@ exports.updateFrame = function(grid, players, dead, notifyKill) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function squaresIntersect(a, b) {
|
function squaresIntersect(a, b) {
|
||||||
return (a < b) ? (b < a + CELL_WIDTH) : (a < b + CELL_WIDTH);
|
return (a < b) ? (b < a + consts.CELL_WIDTH) : (a < b + consts.CELL_WIDTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
function area(player) {
|
function area(player) {
|
||||||
var xDest = player.col * CELL_WIDTH;
|
var xDest = player.col * consts.CELL_WIDTH;
|
||||||
var yDest = player.row * CELL_WIDTH;
|
var yDest = player.row * consts.CELL_WIDTH;
|
||||||
return (player.posX === xDest) ? Math.abs(player.posY - yDest) : Math.abs(player.posX - xDest);
|
return (player.posX === xDest) ? Math.abs(player.posY - yDest) : Math.abs(player.posX - xDest);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
var core = require("./core");
|
var core = require("./core");
|
||||||
var consts = require("./consts");
|
|
||||||
|
|
||||||
exports.Color = require("./color");
|
exports.Color = require("./color");
|
||||||
exports.Grid = require("./grid");
|
exports.Grid = require("./grid");
|
||||||
@ -7,10 +6,3 @@ exports.Player = require("./player");
|
|||||||
|
|
||||||
exports.initPlayer = core.initPlayer;
|
exports.initPlayer = core.initPlayer;
|
||||||
exports.updateFrame = core.updateFrame;
|
exports.updateFrame = core.updateFrame;
|
||||||
|
|
||||||
for (var prop in consts) {
|
|
||||||
Object.defineProperty(exports, prop, {
|
|
||||||
enumerable: true,
|
|
||||||
value: consts[prop]
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
var Stack = require("./stack");
|
var Stack = require("./stack");
|
||||||
var Color = require("./color");
|
var Color = require("./color");
|
||||||
var Grid = require("./grid");
|
var Grid = require("./grid");
|
||||||
var consts = require("./consts");
|
var consts = require("../../config.json").consts;
|
||||||
|
|
||||||
var GRID_SIZE = consts.GRID_SIZE;
|
|
||||||
var CELL_WIDTH = consts.CELL_WIDTH;
|
|
||||||
var NEW_PLAYER_LAG = 60; //Wait for a second at least
|
var NEW_PLAYER_LAG = 60; //Wait for a second at least
|
||||||
|
|
||||||
function defineGetter(getter) {
|
function defineGetter(getter) {
|
||||||
@ -127,7 +125,7 @@ function render2(data, ctx) {
|
|||||||
for (var r = 0; r < data.tailGrid.length; r++) {
|
for (var r = 0; r < data.tailGrid.length; r++) {
|
||||||
if (!data.tailGrid[r]) continue;
|
if (!data.tailGrid[r]) continue;
|
||||||
for (var c = 0; c < data.tailGrid[r].length; c++) {
|
for (var c = 0; c < data.tailGrid[r].length; c++) {
|
||||||
if (data.tailGrid[r][c]) ctx.fillRect(c * CELL_WIDTH, r * CELL_WIDTH, CELL_WIDTH, CELL_WIDTH);
|
if (data.tailGrid[r][c]) ctx.fillRect(c * consts.CELL_WIDTH, r * consts.CELL_WIDTH, consts.CELL_WIDTH, consts.CELL_WIDTH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -171,9 +169,9 @@ function renderCorner(ctx, cornerStart, dir1, dir2) {
|
|||||||
var b = walk(a, null, dir1, 1);
|
var b = walk(a, null, dir1, 1);
|
||||||
|
|
||||||
var triangle = new Path2D();
|
var triangle = new Path2D();
|
||||||
triangle.moveTo(cornerStart[1] * CELL_WIDTH, cornerStart[0] * CELL_WIDTH);
|
triangle.moveTo(cornerStart[1] * consts.CELL_WIDTH, cornerStart[0] * consts.CELL_WIDTH);
|
||||||
triangle.lineTo(a[1] * CELL_WIDTH, a[0] * CELL_WIDTH);
|
triangle.lineTo(a[1] * consts.CELL_WIDTH, a[0] * consts.CELL_WIDTH);
|
||||||
triangle.lineTo(b[1] * CELL_WIDTH, b[0] * CELL_WIDTH);
|
triangle.lineTo(b[1] * consts.CELL_WIDTH, b[0] * consts.CELL_WIDTH);
|
||||||
triangle.closePath();
|
triangle.closePath();
|
||||||
for (var i = 0; i < 2; i++) {
|
for (var i = 0; i < 2; i++) {
|
||||||
ctx.fill(triangle);
|
ctx.fill(triangle);
|
||||||
@ -194,13 +192,13 @@ function walk(from, ret, orient, dist) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function fillTailRect(ctx, start, end) {
|
function fillTailRect(ctx, start, end) {
|
||||||
var x = start[1] * CELL_WIDTH;
|
var x = start[1] * consts.CELL_WIDTH;
|
||||||
var y = start[0] * CELL_WIDTH;
|
var y = start[0] * consts.CELL_WIDTH;
|
||||||
var width = (end[1] - start[1]) * CELL_WIDTH;
|
var width = (end[1] - start[1]) * consts.CELL_WIDTH;
|
||||||
var height = (end[0] - start[0]) * CELL_WIDTH;
|
var height = (end[0] - start[0]) * consts.CELL_WIDTH;
|
||||||
|
|
||||||
if (width === 0) width += CELL_WIDTH;
|
if (width === 0) width += consts.CELL_WIDTH;
|
||||||
if (height === 0) height += CELL_WIDTH;
|
if (height === 0) height += consts.CELL_WIDTH;
|
||||||
|
|
||||||
if (width < 0) {
|
if (width < 0) {
|
||||||
x += width;
|
x += width;
|
||||||
@ -260,7 +258,7 @@ function floodFill(data, grid, row, col, been) {
|
|||||||
if (grid.isOutOfBounds(row, col) || been.get(row, col) || onTail(start) || grid.get(row, col) === data.player) return;
|
if (grid.isOutOfBounds(row, col) || been.get(row, col) || onTail(start) || grid.get(row, col) === data.player) return;
|
||||||
//Avoid allocating too many resources
|
//Avoid allocating too many resources
|
||||||
var coords = [];
|
var coords = [];
|
||||||
var filled = new Stack(GRID_SIZE * GRID_SIZE + 1);
|
var filled = new Stack(consts.GRID_SIZE * consts.GRID_SIZE + 1);
|
||||||
var surrounded = true;
|
var surrounded = true;
|
||||||
|
|
||||||
coords.push(start);
|
coords.push(start);
|
||||||
@ -370,11 +368,11 @@ function nearestInteger(positive, val) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function calcRow(data) {
|
function calcRow(data) {
|
||||||
return nearestInteger(data.currentHeading === 2 /*DOWN*/, data.posY / CELL_WIDTH);
|
return nearestInteger(data.currentHeading === 2 /*DOWN*/, data.posY / consts.CELL_WIDTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
function calcCol(data) {
|
function calcCol(data) {
|
||||||
return nearestInteger(data.currentHeading === 1 /*RIGHT*/, data.posX / CELL_WIDTH);
|
return nearestInteger(data.currentHeading === 1 /*RIGHT*/, data.posX / consts.CELL_WIDTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Instance methods
|
//Instance methods
|
||||||
@ -384,24 +382,24 @@ Player.prototype.render = function(ctx, fade) {
|
|||||||
//Render player.
|
//Render player.
|
||||||
fade = fade || 1;
|
fade = fade || 1;
|
||||||
ctx.fillStyle = this.shadowColor.deriveAlpha(fade).rgbString();
|
ctx.fillStyle = this.shadowColor.deriveAlpha(fade).rgbString();
|
||||||
ctx.fillRect(this.posX, this.posY, CELL_WIDTH, CELL_WIDTH);
|
ctx.fillRect(this.posX, this.posY, consts.CELL_WIDTH, consts.CELL_WIDTH);
|
||||||
|
|
||||||
var mid = CELL_WIDTH / 2;
|
var mid = consts.CELL_WIDTH / 2;
|
||||||
var grd = ctx.createRadialGradient(this.posX + mid, this.posY + mid - SHADOW_OFFSET, 1, this.posX + mid, this.posY + mid - SHADOW_OFFSET, CELL_WIDTH);
|
var grd = ctx.createRadialGradient(this.posX + mid, this.posY + mid - SHADOW_OFFSET, 1, this.posX + mid, this.posY + mid - SHADOW_OFFSET, consts.CELL_WIDTH);
|
||||||
//grd.addColorStop(0, this.baseColor.deriveAlpha(fade).rgbString());
|
//grd.addColorStop(0, this.baseColor.deriveAlpha(fade).rgbString());
|
||||||
//grd.addColorStop(1, new Color(0, 0, 1, fade).rgbString());
|
//grd.addColorStop(1, new Color(0, 0, 1, fade).rgbString());
|
||||||
//ctx.fillStyle = grd;
|
//ctx.fillStyle = grd;
|
||||||
ctx.fillStyle = this.shadowColor.deriveLumination(.2).rgbString();
|
ctx.fillStyle = this.shadowColor.deriveLumination(.2).rgbString();
|
||||||
ctx.fillRect(this.posX - 1, this.posY - SHADOW_OFFSET, CELL_WIDTH + 2, CELL_WIDTH);
|
ctx.fillRect(this.posX - 1, this.posY - SHADOW_OFFSET, consts.CELL_WIDTH + 2, consts.CELL_WIDTH);
|
||||||
|
|
||||||
//Render name
|
//Render name
|
||||||
ctx.fillStyle = this.shadowColor.deriveAlpha(fade).rgbString();
|
ctx.fillStyle = this.shadowColor.deriveAlpha(fade).rgbString();
|
||||||
ctx.textAlign = "center";
|
ctx.textAlign = "center";
|
||||||
|
|
||||||
var yoff = -SHADOW_OFFSET * 2;
|
var yoff = -SHADOW_OFFSET * 2;
|
||||||
if (this.row === 0) yoff = SHADOW_OFFSET * 2 + CELL_WIDTH;
|
if (this.row === 0) yoff = SHADOW_OFFSET * 2 + consts.CELL_WIDTH;
|
||||||
ctx.font = "18px Changa";
|
ctx.font = "18px Changa";
|
||||||
ctx.fillText(this.name, this.posX + CELL_WIDTH / 2, this.posY + yoff);
|
ctx.fillText(this.name, this.posX + consts.CELL_WIDTH / 2, this.posY + yoff);
|
||||||
};
|
};
|
||||||
|
|
||||||
function move(data) {
|
function move(data) {
|
||||||
@ -411,7 +409,7 @@ function move(data) {
|
|||||||
}
|
}
|
||||||
//Move to new position.
|
//Move to new position.
|
||||||
var heading = this.heading;
|
var heading = this.heading;
|
||||||
if (this.posX % CELL_WIDTH !== 0 || this.posY % CELL_WIDTH !== 0) heading = data.currentHeading;
|
if (this.posX % consts.CELL_WIDTH !== 0 || this.posY % consts.CELL_WIDTH !== 0) heading = data.currentHeading;
|
||||||
else data.currentHeading = heading;
|
else data.currentHeading = heading;
|
||||||
switch (heading) {
|
switch (heading) {
|
||||||
case 0: data.posY -= SPEED; break; //UP
|
case 0: data.posY -= SPEED; break; //UP
|
||||||
@ -432,7 +430,7 @@ function move(data) {
|
|||||||
this.tail.reposition(row, col);
|
this.tail.reposition(row, col);
|
||||||
}
|
}
|
||||||
//If we are completely in a new cell (not in our safe zone), we add to the tail.
|
//If we are completely in a new cell (not in our safe zone), we add to the tail.
|
||||||
else if (this.posX % CELL_WIDTH === 0 && this.posY % CELL_WIDTH === 0) this.tail.addTail(heading);
|
else if (this.posX % consts.CELL_WIDTH === 0 && this.posY % consts.CELL_WIDTH === 0) this.tail.addTail(heading);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Player;
|
module.exports = Player;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
var io = require("socket.io-client");
|
var io = require("socket.io-client");
|
||||||
var core = require("./core");
|
var core = require("./core");
|
||||||
var Player = core.Player;
|
var consts = require("../config.json").consts;
|
||||||
var running = false;
|
var running = false;
|
||||||
var user, socket, frame;
|
var user, socket, frame;
|
||||||
var players, allPlayers;
|
var players, allPlayers;
|
||||||
@ -11,7 +11,7 @@ var deadFrames = 0;
|
|||||||
var requesting = -1; //frame that we are requesting at
|
var requesting = -1; //frame that we are requesting at
|
||||||
var frameCache = []; //Frames after our request
|
var frameCache = []; //Frames after our request
|
||||||
var allowAnimation = true;
|
var allowAnimation = true;
|
||||||
var grid = new core.Grid(core.GRID_SIZE, function(row, col, before, after) {
|
var grid = new core.Grid(consts.GRID_SIZE, function(row, col, before, after) {
|
||||||
invokeRenderer("updateGrid", [row, col, before, after]);
|
invokeRenderer("updateGrid", [row, col, before, after]);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -36,8 +36,8 @@ function connectGame(url, name, callback) {
|
|||||||
running = true;
|
running = true;
|
||||||
user = null;
|
user = null;
|
||||||
deadFrames = 0;
|
deadFrames = 0;
|
||||||
var prefixes = core.PREFIXES;
|
var prefixes = consts.PREFIXES.split(" ");
|
||||||
var names = core.NAMES;
|
var names = consts.NAMES.split(" ");
|
||||||
name = name || [prefixes[Math.floor(Math.random() * prefixes.length)], names[Math.floor(Math.random() * names.length)]].join(" ");
|
name = name || [prefixes[Math.floor(Math.random() * prefixes.length)], names[Math.floor(Math.random() * names.length)]].join(" ");
|
||||||
//Socket connection
|
//Socket connection
|
||||||
io.j = [];
|
io.j = [];
|
||||||
@ -58,7 +58,7 @@ function connectGame(url, name, callback) {
|
|||||||
reset();
|
reset();
|
||||||
//Load players.
|
//Load players.
|
||||||
data.players.forEach(function(p) {
|
data.players.forEach(function(p) {
|
||||||
var pl = new Player(grid, p);
|
var pl = new core.Player(grid, p);
|
||||||
addPlayer(pl);
|
addPlayer(pl);
|
||||||
});
|
});
|
||||||
user = allPlayers[data.num];
|
user = allPlayers[data.num];
|
||||||
@ -170,7 +170,7 @@ function processFrame(data) {
|
|||||||
if (data.newPlayers) {
|
if (data.newPlayers) {
|
||||||
data.newPlayers.forEach(function(p) {
|
data.newPlayers.forEach(function(p) {
|
||||||
if (p.num === user.num) return;
|
if (p.num === user.num) return;
|
||||||
var pl = new Player(grid, p);
|
var pl = new core.Player(grid, p);
|
||||||
addPlayer(pl);
|
addPlayer(pl);
|
||||||
core.initPlayer(grid, pl);
|
core.initPlayer(grid, pl);
|
||||||
});
|
});
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
var core = require("./core");
|
var core = require("./core");
|
||||||
var GRID_SIZE = core.GRID_SIZE;
|
var consts = require("../config.json").consts;
|
||||||
var CELL_WIDTH = core.CELL_WIDTH;
|
|
||||||
var MAX_PLAYERS = core.MAX_PLAYERS;
|
|
||||||
var SATS = [192, 150, 100].map(function(val) {
|
var SATS = [192, 150, 100].map(function(val) {
|
||||||
return val / 240;
|
return val / 240;
|
||||||
});
|
});
|
||||||
@ -35,21 +33,21 @@ function Game(id) {
|
|||||||
var frameLocs = [];
|
var frameLocs = [];
|
||||||
var frame = 0;
|
var frame = 0;
|
||||||
var filled = 0;
|
var filled = 0;
|
||||||
var grid = new core.Grid(GRID_SIZE, function(row, col, before, after) {
|
var grid = new core.Grid(consts.GRID_SIZE, function(row, col, before, after) {
|
||||||
if (!!after ^ !!before) {
|
if (!!after ^ !!before) {
|
||||||
if (after) filled++;
|
if (after) filled++;
|
||||||
else filled--;
|
else filled--;
|
||||||
if (filled === GRID_SIZE * GRID_SIZE) log("FULL GAME");
|
if (filled === consts.GRID_SIZE * consts.GRID_SIZE) log("FULL GAME");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.addPlayer = function(client, name) {
|
this.addPlayer = function(client, name) {
|
||||||
if (players.length >= MAX_PLAYERS) return false;
|
if (players.length >= consts.MAX_PLAYERS) return false;
|
||||||
var start = findEmpty(grid);
|
var start = findEmpty(grid);
|
||||||
if (!start) return false;
|
if (!start) return false;
|
||||||
var params = {
|
var params = {
|
||||||
posX: start.col * CELL_WIDTH,
|
posX: start.col * consts.CELL_WIDTH,
|
||||||
posY: start.row * CELL_WIDTH,
|
posY: start.row * consts.CELL_WIDTH,
|
||||||
currentHeading: Math.floor(Math.random() * 4),
|
currentHeading: Math.floor(Math.random() * 4),
|
||||||
name: name,
|
name: name,
|
||||||
num: nextInd,
|
num: nextInd,
|
||||||
|
@ -2,18 +2,15 @@
|
|||||||
|
|
||||||
var core = require("./core");
|
var core = require("./core");
|
||||||
var client = require("./game-client");
|
var client = require("./game-client");
|
||||||
|
var consts = require("../config.json").consts;
|
||||||
|
|
||||||
var GRID_SIZE = core.GRID_SIZE;
|
|
||||||
var CELL_WIDTH = core.CELL_WIDTH;
|
|
||||||
var SPEED = core.SPEED;
|
|
||||||
var BORDER_WIDTH = core.BORDER_WIDTH;
|
|
||||||
var SHADOW_OFFSET = 5;
|
var SHADOW_OFFSET = 5;
|
||||||
var ANIMATE_FRAMES = 24;
|
var ANIMATE_FRAMES = 24;
|
||||||
var BOUNCE_FRAMES = [8, 4];
|
var BOUNCE_FRAMES = [8, 4];
|
||||||
var DROP_HEIGHT = 24;
|
var DROP_HEIGHT = 24;
|
||||||
var DROP_SPEED = 2;
|
var DROP_SPEED = 2;
|
||||||
var MIN_BAR_WIDTH = 65;
|
var MIN_BAR_WIDTH = 65;
|
||||||
var BAR_HEIGHT = SHADOW_OFFSET + CELL_WIDTH;
|
var BAR_HEIGHT = SHADOW_OFFSET + consts.CELL_WIDTH;
|
||||||
var BAR_WIDTH = 400;
|
var BAR_WIDTH = 400;
|
||||||
|
|
||||||
var canvas, canvasWidth, canvasHeight, gameWidth, gameHeight, ctx, offctx, offscreenCanvas;
|
var canvas, canvasWidth, canvasHeight, gameWidth, gameHeight, ctx, offctx, offscreenCanvas;
|
||||||
@ -45,7 +42,7 @@ function updateSize() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
animateGrid = new core.Grid(GRID_SIZE);
|
animateGrid = new core.Grid(consts.GRID_SIZE);
|
||||||
playerPortion = [];
|
playerPortion = [];
|
||||||
portionsRolling = [];
|
portionsRolling = [];
|
||||||
barProportionRolling = [];
|
barProportionRolling = [];
|
||||||
@ -61,34 +58,34 @@ reset();
|
|||||||
//Paint methods
|
//Paint methods
|
||||||
function paintGridBorder(ctx) {
|
function paintGridBorder(ctx) {
|
||||||
ctx.fillStyle = "lightgray";
|
ctx.fillStyle = "lightgray";
|
||||||
var gridWidth = CELL_WIDTH * GRID_SIZE;
|
var gridWidth = consts.CELL_WIDTH * consts.GRID_SIZE;
|
||||||
|
|
||||||
ctx.fillRect(-BORDER_WIDTH, 0, BORDER_WIDTH, gridWidth);
|
ctx.fillRect(-consts.BORDER_WIDTH, 0, consts.BORDER_WIDTH, gridWidth);
|
||||||
ctx.fillRect(-BORDER_WIDTH, -BORDER_WIDTH, gridWidth + BORDER_WIDTH * 2, BORDER_WIDTH);
|
ctx.fillRect(-consts.BORDER_WIDTH, -consts.BORDER_WIDTH, gridWidth + consts.BORDER_WIDTH * 2, consts.BORDER_WIDTH);
|
||||||
ctx.fillRect(gridWidth, 0, BORDER_WIDTH, gridWidth);
|
ctx.fillRect(gridWidth, 0, consts.BORDER_WIDTH, gridWidth);
|
||||||
ctx.fillRect(-BORDER_WIDTH, gridWidth, gridWidth + BORDER_WIDTH * 2, BORDER_WIDTH);
|
ctx.fillRect(-consts.BORDER_WIDTH, gridWidth, gridWidth + consts.BORDER_WIDTH * 2, consts.BORDER_WIDTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
function paintGrid(ctx) {
|
function paintGrid(ctx) {
|
||||||
//Paint background
|
//Paint background
|
||||||
ctx.fillStyle = "rgb(211, 225, 237)";
|
ctx.fillStyle = "rgb(211, 225, 237)";
|
||||||
ctx.fillRect(0, 0, CELL_WIDTH * GRID_SIZE, CELL_WIDTH * GRID_SIZE);
|
ctx.fillRect(0, 0, consts.CELL_WIDTH * consts.GRID_SIZE, consts.CELL_WIDTH * consts.GRID_SIZE);
|
||||||
paintGridBorder(ctx);
|
paintGridBorder(ctx);
|
||||||
|
|
||||||
//paintGridLines(ctx);
|
//paintGridLines(ctx);
|
||||||
//Get viewing limits
|
//Get viewing limits
|
||||||
var offsetX = (offset[0] - BORDER_WIDTH);
|
var offsetX = (offset[0] - consts.BORDER_WIDTH);
|
||||||
var offsetY = (offset[1] - BORDER_WIDTH);
|
var offsetY = (offset[1] - consts.BORDER_WIDTH);
|
||||||
var minRow = Math.max(Math.floor(offsetY / CELL_WIDTH), 0);
|
var minRow = Math.max(Math.floor(offsetY / consts.CELL_WIDTH), 0);
|
||||||
var minCol = Math.max(Math.floor(offsetX / CELL_WIDTH), 0);
|
var minCol = Math.max(Math.floor(offsetX / consts.CELL_WIDTH), 0);
|
||||||
var maxRow = Math.min(Math.ceil((offsetY + gameHeight / zoom) / CELL_WIDTH), grid.size);
|
var maxRow = Math.min(Math.ceil((offsetY + gameHeight / zoom) / consts.CELL_WIDTH), grid.size);
|
||||||
var maxCol = Math.min(Math.ceil((offsetX + gameWidth / zoom) / CELL_WIDTH), grid.size);
|
var maxCol = Math.min(Math.ceil((offsetX + gameWidth / zoom) / consts.CELL_WIDTH), grid.size);
|
||||||
|
|
||||||
//Paint occupied areas. (and fading ones)
|
//Paint occupied areas. (and fading ones)
|
||||||
for (var r = minRow; r < maxRow; r++) {
|
for (var r = minRow; r < maxRow; r++) {
|
||||||
for (var c = minCol; c < maxCol; c++) {
|
for (var c = minCol; c < maxCol; c++) {
|
||||||
var p = grid.get(r, c);
|
var p = grid.get(r, c);
|
||||||
var x = c * CELL_WIDTH, y = r * CELL_WIDTH, baseColor, shadowColor;
|
var x = c * consts.CELL_WIDTH, y = r * consts.CELL_WIDTH, baseColor, shadowColor;
|
||||||
var animateSpec = animateGrid.get(r, c);
|
var animateSpec = animateGrid.get(r, c);
|
||||||
if (client.allowAnimation && animateSpec) {
|
if (client.allowAnimation && animateSpec) {
|
||||||
if (animateSpec.before) { //fading animation
|
if (animateSpec.before) { //fading animation
|
||||||
@ -111,10 +108,10 @@ function paintGrid(ctx) {
|
|||||||
(!bottomAnimate || (bottomAnimate.after && bottomAnimate.before));
|
(!bottomAnimate || (bottomAnimate.after && bottomAnimate.before));
|
||||||
if (hasBottom && ((!!bottomAnimate ^ !!animateSpec) || bottomEmpty)) {
|
if (hasBottom && ((!!bottomAnimate ^ !!animateSpec) || bottomEmpty)) {
|
||||||
ctx.fillStyle = shadowColor.rgbString();
|
ctx.fillStyle = shadowColor.rgbString();
|
||||||
ctx.fillRect(x, y + CELL_WIDTH, CELL_WIDTH + 1, SHADOW_OFFSET);
|
ctx.fillRect(x, y + consts.CELL_WIDTH, consts.CELL_WIDTH + 1, SHADOW_OFFSET);
|
||||||
}
|
}
|
||||||
ctx.fillStyle = baseColor.rgbString();
|
ctx.fillStyle = baseColor.rgbString();
|
||||||
ctx.fillRect(x, y, CELL_WIDTH + 1, CELL_WIDTH + 1);
|
ctx.fillRect(x, y, consts.CELL_WIDTH + 1, consts.CELL_WIDTH + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!client.allowAnimation) return;
|
if (!client.allowAnimation) return;
|
||||||
@ -123,7 +120,7 @@ function paintGrid(ctx) {
|
|||||||
for (var r = 0; r < grid.size; r++) {
|
for (var r = 0; r < grid.size; r++) {
|
||||||
for (var c = 0; c < grid.size; c++) {
|
for (var c = 0; c < grid.size; c++) {
|
||||||
animateSpec = animateGrid.get(r, c);
|
animateSpec = animateGrid.get(r, c);
|
||||||
x = c * CELL_WIDTH, y = r * CELL_WIDTH;
|
x = c * consts.CELL_WIDTH, y = r * consts.CELL_WIDTH;
|
||||||
if (animateSpec && client.allowAnimation) {
|
if (animateSpec && client.allowAnimation) {
|
||||||
var viewable = r >= minRow && r < maxRow && c >= minCol && c < maxCol;
|
var viewable = r >= minRow && r < maxRow && c >= minCol && c < maxCol;
|
||||||
if (animateSpec.after && viewable) {
|
if (animateSpec.after && viewable) {
|
||||||
@ -133,9 +130,9 @@ function paintGrid(ctx) {
|
|||||||
shadowColor = animateSpec.after.shadowColor;
|
shadowColor = animateSpec.after.shadowColor;
|
||||||
baseColor = animateSpec.after.lightBaseColor.deriveLumination(-(offsetBounce / DROP_HEIGHT) * .1);
|
baseColor = animateSpec.after.lightBaseColor.deriveLumination(-(offsetBounce / DROP_HEIGHT) * .1);
|
||||||
ctx.fillStyle = shadowColor.rgbString();
|
ctx.fillStyle = shadowColor.rgbString();
|
||||||
ctx.fillRect(x, y + CELL_WIDTH, CELL_WIDTH, SHADOW_OFFSET);
|
ctx.fillRect(x, y + consts.CELL_WIDTH, consts.CELL_WIDTH, SHADOW_OFFSET);
|
||||||
ctx.fillStyle = baseColor.rgbString();
|
ctx.fillStyle = baseColor.rgbString();
|
||||||
ctx.fillRect(x, y, CELL_WIDTH + 1, CELL_WIDTH + 1);
|
ctx.fillRect(x, y, consts.CELL_WIDTH + 1, consts.CELL_WIDTH + 1);
|
||||||
}
|
}
|
||||||
animateSpec.frame++;
|
animateSpec.frame++;
|
||||||
if (animateSpec.frame >= ANIMATE_FRAMES) animateGrid.set(r, c, null);
|
if (animateSpec.frame >= ANIMATE_FRAMES) animateGrid.set(r, c, null);
|
||||||
@ -153,7 +150,7 @@ function paintUIBar(ctx) {
|
|||||||
ctx.fillStyle = "white";
|
ctx.fillStyle = "white";
|
||||||
ctx.font = "24px Changa";
|
ctx.font = "24px Changa";
|
||||||
barOffset = (user && user.name) ? (ctx.measureText(user.name).width + 20) : 0;
|
barOffset = (user && user.name) ? (ctx.measureText(user.name).width + 20) : 0;
|
||||||
ctx.fillText(user ? user.name : "", 5, CELL_WIDTH - 5);
|
ctx.fillText(user ? user.name : "", 5, consts.CELL_WIDTH - 5);
|
||||||
|
|
||||||
//Draw filled bar
|
//Draw filled bar
|
||||||
ctx.fillStyle = "rgba(180, 180, 180, .3)";
|
ctx.fillStyle = "rgba(180, 180, 180, .3)";
|
||||||
@ -162,20 +159,20 @@ function paintUIBar(ctx) {
|
|||||||
var userPortions = portionsRolling[user.num] ? portionsRolling[user.num].lag : 0;
|
var userPortions = portionsRolling[user.num] ? portionsRolling[user.num].lag : 0;
|
||||||
var barSize = Math.ceil((BAR_WIDTH - MIN_BAR_WIDTH) * userPortions + MIN_BAR_WIDTH);
|
var barSize = Math.ceil((BAR_WIDTH - MIN_BAR_WIDTH) * userPortions + MIN_BAR_WIDTH);
|
||||||
ctx.fillStyle = user ? user.baseColor.rgbString() : "";
|
ctx.fillStyle = user ? user.baseColor.rgbString() : "";
|
||||||
ctx.fillRect(barOffset, 0, barSize, CELL_WIDTH);
|
ctx.fillRect(barOffset, 0, barSize, consts.CELL_WIDTH);
|
||||||
ctx.fillStyle = user ? user.shadowColor.rgbString() : "";
|
ctx.fillStyle = user ? user.shadowColor.rgbString() : "";
|
||||||
ctx.fillRect(barOffset, CELL_WIDTH, barSize, SHADOW_OFFSET);
|
ctx.fillRect(barOffset, consts.CELL_WIDTH, barSize, SHADOW_OFFSET);
|
||||||
|
|
||||||
//TODO: dont reset kill count and zoom when we request frames.
|
//TODO: dont reset kill count and zoom when we request frames.
|
||||||
//Percentage
|
//Percentage
|
||||||
ctx.fillStyle = "white";
|
ctx.fillStyle = "white";
|
||||||
ctx.font = "18px Changa";
|
ctx.font = "18px Changa";
|
||||||
ctx.fillText((userPortions * 100).toFixed(3) + "%", 5 + barOffset, CELL_WIDTH - 5);
|
ctx.fillText((userPortions * 100).toFixed(3) + "%", 5 + barOffset, consts.CELL_WIDTH - 5);
|
||||||
|
|
||||||
//Number of kills
|
//Number of kills
|
||||||
var killsText = "Kills: " + client.kills;
|
var killsText = "Kills: " + client.kills;
|
||||||
var killsOffset = 20 + BAR_WIDTH + barOffset;
|
var killsOffset = 20 + BAR_WIDTH + barOffset;
|
||||||
ctx.fillText(killsText, killsOffset, CELL_WIDTH - 5);
|
ctx.fillText(killsText, killsOffset, consts.CELL_WIDTH - 5);
|
||||||
|
|
||||||
//Calcuate rank
|
//Calcuate rank
|
||||||
var sorted = [];
|
var sorted = [];
|
||||||
@ -190,7 +187,7 @@ function paintUIBar(ctx) {
|
|||||||
return val.player === user
|
return val.player === user
|
||||||
});
|
});
|
||||||
ctx.fillText("Rank: " + (rank === -1 ? "--" : rank + 1) + " of " + sorted.length,
|
ctx.fillText("Rank: " + (rank === -1 ? "--" : rank + 1) + " of " + sorted.length,
|
||||||
ctx.measureText(killsText).width + killsOffset + 20, CELL_WIDTH - 5);
|
ctx.measureText(killsText).width + killsOffset + 20, consts.CELL_WIDTH - 5);
|
||||||
|
|
||||||
//Rolling the leaderboard bars
|
//Rolling the leaderboard bars
|
||||||
if (sorted.length > 0) {
|
if (sorted.length > 0) {
|
||||||
@ -216,14 +213,14 @@ function paintUIBar(ctx) {
|
|||||||
ctx.fillStyle = "rgba(10, 10, 10, .3)";
|
ctx.fillStyle = "rgba(10, 10, 10, .3)";
|
||||||
ctx.fillRect(barX - 10, barY + 10 - offset, barSize + 10, BAR_HEIGHT + offset);
|
ctx.fillRect(barX - 10, barY + 10 - offset, barSize + 10, BAR_HEIGHT + offset);
|
||||||
ctx.fillStyle = player.baseColor.rgbString();
|
ctx.fillStyle = player.baseColor.rgbString();
|
||||||
ctx.fillRect(barX, barY, barSize, CELL_WIDTH);
|
ctx.fillRect(barX, barY, barSize, consts.CELL_WIDTH);
|
||||||
ctx.fillStyle = player.shadowColor.rgbString();
|
ctx.fillStyle = player.shadowColor.rgbString();
|
||||||
ctx.fillRect(barX, barY + CELL_WIDTH, barSize, SHADOW_OFFSET);
|
ctx.fillRect(barX, barY + consts.CELL_WIDTH, barSize, SHADOW_OFFSET);
|
||||||
ctx.fillStyle = "black";
|
ctx.fillStyle = "black";
|
||||||
ctx.fillText(name, barX - nameWidth - 15, barY + 27);
|
ctx.fillText(name, barX - nameWidth - 15, barY + 27);
|
||||||
var percentage = (portionsRolling[player.num].lag * 100).toFixed(3) + "%";
|
var percentage = (portionsRolling[player.num].lag * 100).toFixed(3) + "%";
|
||||||
ctx.fillStyle = "white";
|
ctx.fillStyle = "white";
|
||||||
ctx.fillText(percentage, barX + 5, barY + CELL_WIDTH - 5);
|
ctx.fillText(percentage, barX + 5, barY + consts.CELL_WIDTH - 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -240,7 +237,7 @@ function paint(ctx) {
|
|||||||
|
|
||||||
//Zoom in/out based on player stats
|
//Zoom in/out based on player stats
|
||||||
ctx.scale(zoom, zoom);
|
ctx.scale(zoom, zoom);
|
||||||
ctx.translate(-offset[0] + BORDER_WIDTH, -offset[1] + BORDER_WIDTH);
|
ctx.translate(-offset[0] + consts.BORDER_WIDTH, -offset[1] + consts.BORDER_WIDTH);
|
||||||
|
|
||||||
paintGrid(ctx);
|
paintGrid(ctx);
|
||||||
client.getPlayers().forEach(function (p) {
|
client.getPlayers().forEach(function (p) {
|
||||||
@ -274,7 +271,7 @@ function update() {
|
|||||||
if (client.allowAnimation) {
|
if (client.allowAnimation) {
|
||||||
var delta = animateTo[i] - offset[i];
|
var delta = animateTo[i] - offset[i];
|
||||||
var dir = Math.sign(delta);
|
var dir = Math.sign(delta);
|
||||||
var mag = Math.min(SPEED, Math.abs(delta));
|
var mag = Math.min(consts.SPEED, Math.abs(delta));
|
||||||
offset[i] += dir * mag;
|
offset[i] += dir * mag;
|
||||||
}
|
}
|
||||||
else offset[i] = animateTo[i];
|
else offset[i] = animateTo[i];
|
||||||
@ -284,7 +281,7 @@ function update() {
|
|||||||
//Calculate player portions
|
//Calculate player portions
|
||||||
client.getPlayers().forEach(function(player) {
|
client.getPlayers().forEach(function(player) {
|
||||||
var roll = portionsRolling[player.num];
|
var roll = portionsRolling[player.num];
|
||||||
roll.value = playerPortion[player.num] / GRID_SIZE / GRID_SIZE;
|
roll.value = playerPortion[player.num] / consts.GRID_SIZE / consts.GRID_SIZE;
|
||||||
roll.update();
|
roll.update();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -296,9 +293,9 @@ function update() {
|
|||||||
|
|
||||||
//Helper methods
|
//Helper methods
|
||||||
function centerOnPlayer(player, pos) {
|
function centerOnPlayer(player, pos) {
|
||||||
var xOff = Math.floor(player.posX - (gameWidth / zoom - CELL_WIDTH) / 2);
|
var xOff = Math.floor(player.posX - (gameWidth / zoom - consts.CELL_WIDTH) / 2);
|
||||||
var yOff = Math.floor(player.posY - (gameHeight / zoom - CELL_WIDTH) / 2);
|
var yOff = Math.floor(player.posY - (gameHeight / zoom - consts.CELL_WIDTH) / 2);
|
||||||
var gridWidth = grid.size * CELL_WIDTH + BORDER_WIDTH * 2;
|
var gridWidth = grid.size * consts.CELL_WIDTH + consts.BORDER_WIDTH * 2;
|
||||||
pos[0] = xOff; //Math.max(Math.min(xOff, gridWidth + (BAR_WIDTH + 100) / zoom - gameWidth / zoom), 0);
|
pos[0] = xOff; //Math.max(Math.min(xOff, gridWidth + (BAR_WIDTH + 100) / zoom - gameWidth / zoom), 0);
|
||||||
pos[1] = yOff; //Math.max(Math.min(yOff, gridWidth - gameHeight / zoom), 0);
|
pos[1] = yOff; //Math.max(Math.min(yOff, gridWidth - gameHeight / zoom), 0);
|
||||||
}
|
}
|
||||||
@ -343,7 +340,7 @@ function Rolling(value, frames) {
|
|||||||
module.exports = exports = {
|
module.exports = exports = {
|
||||||
addPlayer: function(player) {
|
addPlayer: function(player) {
|
||||||
playerPortion[player.num] = 0;
|
playerPortion[player.num] = 0;
|
||||||
portionsRolling[player.num] = new Rolling(9 / GRID_SIZE / GRID_SIZE, ANIMATE_FRAMES);
|
portionsRolling[player.num] = new Rolling(9 / consts.GRID_SIZE / consts.GRID_SIZE, ANIMATE_FRAMES);
|
||||||
barProportionRolling[player.num] = new Rolling(0, ANIMATE_FRAMES);
|
barProportionRolling[player.num] = new Rolling(0, ANIMATE_FRAMES);
|
||||||
},
|
},
|
||||||
disconnect: function() {
|
disconnect: function() {
|
||||||
|
Loading…
Reference in New Issue
Block a user