Animations are now possible

Need new sprite system to accomodate for it though()
This commit is contained in:
Alexander Bass 2022-06-19 22:39:31 -04:00
parent 90f73caefe
commit c89f24a2a7
6 changed files with 82 additions and 15 deletions

View file

@ -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

View file

@ -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;
}

View file

@ -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));
}

View file

@ -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}`)
}

View file

@ -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){

View file

@ -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"