const worldgen = require("./worldgen.js") const util = require("./util.js") const gridSize = [18, 18]; const perlinScale = 3; var express = require('express'); class Server { constructor(){ this.games = [] } addGame(name) { let roomNames = [] for (let i = 0; i < this.games.length; i++) { roomNames.push(this.games[i].name) } if (!roomNames.includes(name)) { const game = new Game([18,18], name) this.games.push(game) console.log("added game - " + game.name) } else { console.log("tried to make room already taken") } } getGameByName(name, mode) { var game = this.games.filter(obj => obj.name == name)[0] console.log(name, mode, game) console.log(game == undefined && mode) if (game == undefined && mode) { this.addGame(name) return this.games.filter(obj => obj.name == name)[0] } return game; } removeGame(name) { this.players = this.players.filter(obj => obj.name != name); console.log("removed goom - " + name) } } class Player { constructor(id, color) { this.id = id; this.color = color; } } class Game { constructor() { this.players = []; this.world = worldgen.generateWorld(gridSize, perlinScale); } addPlayer(id) { 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, 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(tank){ game.addPlayer(client.id); console.log(client.id + ' joined the game'); 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){ 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}) }