From 4e0d0b3fe4c538afcf347542a5d1b60ae82cfc9b Mon Sep 17 00:00:00 2001 From: jak1 Date: Sun, 5 Sep 2021 11:54:09 +0200 Subject: added player sit(X) added player rotate(Shift) while standing or sitting on the same tile --- client/index.html | 40 +++++++++++++++++++++++++-------- server/Entities/Player.js | 57 ++++++++++++++++++++++++++++++----------------- 2 files changed, 67 insertions(+), 30 deletions(-) diff --git a/client/index.html b/client/index.html index 69e2c86..4dae05f 100644 --- a/client/index.html +++ b/client/index.html @@ -203,6 +203,8 @@ self.hpMax = initPack.hpMax; self.score = initPack.score; self.dir = initPack.dir; + self.shift = false; + self.sit = false; self.drawPlayer = function(){ var x = self.x - Player.list[selfId].x + WIDTH/2; @@ -211,8 +213,16 @@ // 'player' var width = 64; var height = 64; + if (self.sit){ + console.log("sitting") + finalWidth = width * self.dir; + finalHeight = height * 4; + } else { + finalWidth = 0; + finalHeight = height * self.dir; + } ctx.drawImage(Img.player, - 0 /* base sprite */, (height * self.dir), + finalWidth /* base sprite */, finalHeight, width, height, x-width/2, y-height/2, width, height); @@ -299,6 +309,8 @@ p.dir = pack.dir; if(pack.playerName !== undefined) p.playerName = pack.playerName; + if(pack.sit !== undefined) + p.sit = pack.sit; } } for(var i = 0; i < data.bullet.length; i++){ @@ -398,26 +410,36 @@ if (document.activeElement === document.getElementById('ui') || document.activeElement === document.getElementById('game') || document.activeElement === document.getElementById('ctx')){ + // shift + if(event.keyCode === 16) + self.shift = true; + // movement if(event.keyCode === 68 || event.keyCode === 39) // d - socket.emit('keyPress',{inputId: 'right', state: true}); + socket.emit('keyPress',{inputId: 'right', state: true, shift: self.shift}); else if(event.keyCode === 65 || event.keyCode === 37) // a - socket.emit('keyPress',{inputId: 'left', state: true}); + socket.emit('keyPress',{inputId: 'left', state: true, shift: self.shift}); else if(event.keyCode === 83 || event.keyCode === 40) // s - socket.emit('keyPress',{inputId: 'down', state: true}); + socket.emit('keyPress',{inputId: 'down', state: true, shift: self.shift}); else if(event.keyCode === 87 || event.keyCode === 38) // w - socket.emit('keyPress',{inputId: 'up', state: true}); + socket.emit('keyPress',{inputId: 'up', state: true, shift: self.shift}); + else if(event.keyCode === 88) + socket.emit('keyPress',{inputId: 'sit', state: !self.sit, shift: self.shift}); } } document.onkeyup = function(event){ + // shift + if(event.keyCode === 16) + self.shift = false; + // movement if(event.keyCode === 68 || event.keyCode === 39) // d - socket.emit('keyPress',{inputId: 'right', state: false}); + socket.emit('keyPress', {inputId: 'right', state: false, shift: self.shift}); else if(event.keyCode === 65 || event.keyCode === 37) // a - socket.emit('keyPress',{inputId: 'left', state: false}); + socket.emit('keyPress', {inputId: 'left', state: false, shift: self.shift}); else if(event.keyCode === 83 || event.keyCode === 40) // s - socket.emit('keyPress',{inputId: 'down', state: false}); + socket.emit('keyPress', {inputId: 'down', state: false, shift: self.shift}); else if(event.keyCode === 87 || event.keyCode === 38) // w - socket.emit('keyPress',{inputId: 'up', state: false}); + socket.emit('keyPress', {inputId: 'up', state: false, shift: self.shift}); } document.onmousedown = function(event){ diff --git a/server/Entities/Player.js b/server/Entities/Player.js index e83a371..5b9817f 100644 --- a/server/Entities/Player.js +++ b/server/Entities/Player.js @@ -19,6 +19,8 @@ var Player = function(id){ self.dir = 0; self.hpMax = 10; self.score = 0; + self.move = true; + self.sit = false; var super_update = self.update; self.update = function(){ @@ -36,27 +38,30 @@ var Player = function(id){ } self.updateSpeed = function(){ - if(self.pressingRight){ - self.speedX = self.maxSpeed; - self.dir = 3; - } - else if(self.pressingLeft){ - self.speedX = -self.maxSpeed; - self.dir = 1; - } - else - self.speedX = 0; - - if(self.pressingUp){ - self.speedY = -self.maxSpeed; - self.dir = 2; - } - else if(self.pressingDown){ - self.speedY = self.maxSpeed; - self.dir = 0; - } - else - self.speedY = 0; + if(self.pressingRight){ + self.speedX = self.maxSpeed * self.move; + self.dir = 3; + } + else if(self.pressingLeft){ + self.speedX = -self.maxSpeed * self.move; + self.dir = 1; + } + else + self.speedX = 0; + + if(self.pressingUp){ + self.speedY = -self.maxSpeed * self.move; + self.dir = 2; + } + else if(self.pressingDown){ + self.speedY = self.maxSpeed * self.move; + self.dir = 0; + } + else + self.speedY = 0; + // dont sit while moving, in case we dont press shift(rotation/dir) + if(self.pressingAttack + self.pressingDown + self.pressingLeft + self.pressingRight + self.pressingUp != 0 && self.move) + self.sit = false; } self.getInitPack = function() { @@ -71,6 +76,7 @@ var Player = function(id){ hpMax: self.hpMax, score: self.score, dir: self.dir, + sit: self.sit, }; } self.getUpdatePack = function() { @@ -83,6 +89,7 @@ var Player = function(id){ score: self.score, hp: self.hp, dir: self.dir, + sit: self.sit, }; } Player.list[id] = self; @@ -98,6 +105,11 @@ Player.onConnect = function(socket, pName){ player.playerName = pName; socket.on('keyPress', function(data){ + if (data.shift) + player.move = false; + else + player.move = true; + if (data.inputId === 'left'){ player.pressingLeft = data.state; player.dir = 1; @@ -114,6 +126,9 @@ Player.onConnect = function(socket, pName){ player.pressingDown = data.state; player.dir = 0; } + else if(data.inputId === 'sit'){ + player.sit = data.state; + } else if (data.inputId === 'attack'){ player.pressingAttack = data.state; } -- cgit v1.2.3-70-g09d2