diff --git a/index.js b/index.js index 72dfd79..1d9d90d 100644 --- a/index.js +++ b/index.js @@ -4,7 +4,7 @@ const log = require("./log.js") const gridSize = [18, 18]; const perlinScale = 3; var express = require('express'); -log.setMode(0) +log.setMode(0); process.title = "Server" setInterval(function(){ updateInfo()},5000) @@ -29,6 +29,7 @@ class Server { if (game === undefined && create) { this.addGame(name); // Oh no.... This cant be good code. + // Coming back to it two months later. Horrible, but I don't know how to fix it. Maybe I'll leave it as an ancient artifact. return this.getGameByName(name); } return game @@ -55,11 +56,18 @@ class Server { } joinClientToGame(room, nick, id, client) { + if (this.getAllIDs().includes(id)) { + return client.illegalAction(22) + } + if (nick.length > 9) { + return client.illegalAction(21) + } const game = this.getGameByName(room, true); if (game.addPlayer(id, nick) == false) { this.removeGame(game) return client.illegalAction(20) } + client.join(game.name) client.game = game; return true @@ -144,7 +152,7 @@ io.on('connection', function(client) { client.emit('inGame', true) }) client.on('leaveGame', function(tank){ - log.log(celient.id + ' disconnected.') + log.log(client.id + ' disconnected.') client.game.removePlayer(client.id) io.to(client.game.name).emit('playerList', client.game.players) }) @@ -155,6 +163,7 @@ io.on('connection', function(client) { const room = client.game.name const xu = util.clamp(data.tilePosition[0], 0, gridSize[0]) const yu = util.clamp(data.tilePosition[1], 0, gridSize[1]) + if (!Number.isInteger(xu) || !Number.isInteger(yu)) return client.illegalAction(23) client.game.world[xu][yu].structure = data.structure diff --git a/www/scripts/display/draw.js b/www/scripts/display/draw.js index cdb8704..d6f97aa 100644 --- a/www/scripts/display/draw.js +++ b/www/scripts/display/draw.js @@ -3,6 +3,7 @@ import {tileArray} from './tileRenderer.js'; import { cursor } from '../interface/game/mouse.js' import { ctx, hctx } from './html.js'; import { game } from '../game/game.js' +import * as animation from './visualLoop.js' export function render() { renderTiles() @@ -14,7 +15,7 @@ export function renderTiles() { // DRAW THE IMAGE TO THE CANVAS. const tileSize = game.tileSize; for(x = 0; x < gridSize[0]; x++){ for(y = 0; y < gridSize[1]; y++){ - const xu = x*tileSize; + const xu = x*tileSize + animation.get(); const yu = y*tileSize; const tempWorld = game.world; // Draw buildings @@ -43,6 +44,7 @@ export function renderTiles() { // DRAW THE IMAGE TO THE CANVAS. break; case (4): ctx.drawImage(tileArray[34], xu,yu) + break; } diff --git a/www/scripts/display/visualLoop.js b/www/scripts/display/visualLoop.js new file mode 100644 index 0000000..84662b0 --- /dev/null +++ b/www/scripts/display/visualLoop.js @@ -0,0 +1,30 @@ +import {render } from "./draw.js" +var RUNNING = false +var animationStage = 0; +export function start() { + if (!RUNNING) { + RUNNING = true + loop(); + } +} + +export function stop() { +RUNNING = false +} + +export function get() { + return animationStage +} + +async function loop() { + if (RUNNING === true) + setTimeout(function(){ + if (animationStage < 2) { + animationStage = animationStage + 1; + } else { + animationStage = 0; + } + render() + loop(); + }, (250)); + } diff --git a/www/scripts/interface/common/illegalaction.js b/www/scripts/interface/common/illegalaction.js new file mode 100644 index 0000000..ddb2b18 --- /dev/null +++ b/www/scripts/interface/common/illegalaction.js @@ -0,0 +1,29 @@ +export function illegalAction(data) { + let action + + switch (data) { + case 1: + action = "You must be in game to do this." + break; + case 20: + action = "That name is already taken." + break; + case 21: + action = "That name is too long." + break; + case 22: + action = "You are already in a game." + break; + case 23: + action = "Invalid Placement location." + break; + case 100: + action = "Malformed Packet" + break; + default: + action = "Unknown action." + } + console.log(`Illegal Action. ${action}`) + alert(`Illegal Action, ${action}`) + +} diff --git a/www/scripts/net/netcode.js b/www/scripts/net/netcode.js index 684aa13..c47f76a 100644 --- a/www/scripts/net/netcode.js +++ b/www/scripts/net/netcode.js @@ -3,6 +3,9 @@ import * as status from "/scripts/net/status.js" import {game} from "/scripts/game/game.js" import {render} from "/scripts/display/draw.js" import { changeScene } from "/scripts/interface/scene.js" +import { illegalAction } from "/scripts/interface/common/illegalaction.js" +import * as animation from '../display/visualLoop.js' + export var socket = io.connect(env.IP_ADDRESS); export function joinGame(data){ @@ -26,33 +29,27 @@ socket.on('disconnect', function(data){ socket.on('illegalAction', function(data){ let action + illegalAction(data) switch (data) { case 1: action = "You must be in game to do this." changeScene("mainmenu"); game.reset(); - break; - case 20: - action = "That name is already taken." - break; - case 23: - action = "Invalid Placement location." - break; - default: - action = "Unknown action." + break; } -console.log(`Illegal Action. ${action}`) -alert(`Illegal Action, ${action}`) + }) socket.on('playerList', function(data){ console.log(data) + }); socket.on('inGame', function(data){ if (!game.status) {changeScene("game")} game.status = true; + animation.start(); }) socket.on('sync', function (sync){ diff --git a/www/scripts/script.js b/www/scripts/script.js index 3bcc8d8..8e0cd9d 100644 --- a/www/scripts/script.js +++ b/www/scripts/script.js @@ -1,4 +1,4 @@ -import { render } from './display/draw.js'; +import './display/draw.js'; import './game/game.js' import './interface/mainmenu/menu.js' import "/scripts/net/netcode.js"