const worldgen = require("./worldgen.js") const util = require("./util.js") const gridSize = [18, 18]; const perlinScale = 3; var express = require('express'); process.title = "Server" class Player { constructor(id, name, color) { this.id = id; this.name = name; this.color = color; } } class Game { constructor() { this.players = []; this.world = worldgen.generateWorld(gridSize, perlinScale); } addPlayer(id, name) { var color switch(util.randomNumber(1,4)) { case 1: color = "red"; break; case 2: color = "aquamarine"; break; case 3: color = "green"; break; case 4: color = "yellow"; break; } const player = new Player(id, name, color); this.players.push(player); } removePlayer(id) { this.players = this.players.filter(obj => obj.id != id); console.log("removed player - " + id) } getPlayerByID(id) { console.log(this.players) console.log(id) const player = this.players.filter(obj => obj.id == id)[0] return player } } var game = new Game(); var app = express() //Static resources server app.use(express.static(__dirname + '/www/'));var server = app.listen(8082, function () { var port = server.address().port; console.log('Server running at port %s', port); }); var io = require('socket.io')(server);/* Connection events */ io.on('connection', function(client) { console.log('User connected'); client.on('disconnect', function(){ console.log(client.id + ' disconnected.') game.removePlayer(client.id) client.broadcast.emit('playerList', game.players) }) client.on('joinGame', function(data){ game.addPlayer(client.id); console.log(data) console.log(`${client.id} joined the game as ${data.name} requesting to join room: ${data.room}`); client.emit('gameVars', {gridSize: gridSize, world: game.world}) client.broadcast.emit('playerList', game.players) client.emit('playerList', game.players) }) client.on('leaveGame', function(tank){ console.log(client.id + ' disconnected.') game.removePlayer(client.id) client.broadcast.emit('playerList', game.players) }) client.on('clickCanvas', function(data){ console.log(data) const xu = data.tilePosition[0] const yu = data.tilePosition[1] game.world[xu][yu].structure = data.structure game.world[xu][yu].owner = game.getPlayerByID(client.id).color; // console.log(world[xu][yu].owner = game.getPlayerbyID(client.id)) client.broadcast.emit('sync',{world: game.world}) client.emit('sync',{world: game.world}) }) }); function sendMap(client) { client.broadcast.emit('sync',{world: game.world.map}) client.emit('sync',{world: game.world.map}) }