diff options
Diffstat (limited to 'server/Entities/Player.js')
-rw-r--r-- | server/Entities/Player.js | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/server/Entities/Player.js b/server/Entities/Player.js new file mode 100644 index 0000000..6bc0e65 --- /dev/null +++ b/server/Entities/Player.js @@ -0,0 +1,156 @@ +var consts = require('../../client/consts') +const Entity = require('./Entity'); +const Bullet = require('./Bullet'); + + +var Player = function(id){ + var self = Entity.Entity(); + self.id = id; + self.playerName = ""; + self.number = "" + Math.floor(10 * Math.random()); + self.pressingRight = false; + self.pressingLeft = false; + self.pressingUp = false; + self.pressingDown = false; + self.pressingAttack = false; + self.mouseAngle = 0; + self.maxSpeed = 10; + self.hp = 10; + self.hpMax = 10; + self.score = 0; + + var super_update = self.update; + self.update = function(){ + self.updateSpeed(); + super_update(); + if(self.pressingAttack){ + self.shootBullet(self.mouseAngle); + } + } + + self.shootBullet = function(angle){ + var b = Bullet.Bullet(self.id, angle); + b.x = self.x + b.y = self.y + } + + self.updateSpeed = function(){ + if(self.pressingRight){ + self.speedX = self.maxSpeed; + self.dir = consts.DIR_RIGHT; + } + else if(self.pressingLeft){ + self.speedX = -self.maxSpeed; + self.dir = consts.DIR_LEFT; + } + else + self.speedX = 0; + + if(self.pressingUp){ + self.speedY = -self.maxSpeed; + self.dir = consts.DIR_UP; + } + else if(self.pressingDown){ + self.speedY = self.maxSpeed; + self.dir = consts.DIR_DOWN; + } + else + self.speedY = 0; + } + + self.getInitPack = function() { + return { + id:self.id, + playerName:self.playerName, + x:self.x, + y:self.y, + map:self.map, + number:self.number, + hp:self.hp, + hpMax:self.hpMax, + score:self.score, + dir:self.dir, + }; + } + self.getUpdatePack = function() { + return { + id:self.id, + playerName:self.playerName, + x:self.x, + y:self.y, + map:self.map, + score:self.score, + hp:self.hp, + dir:self.dir, + }; + } + Player.list[id] = self; + Entity.initPack.player.push(self.getInitPack()); + return self; +} + +Player.list = {}; + +Player.onConnect = function(socket, pName){ + var player = Player(socket.id); + + player.playerName = pName; + + socket.on('keyPress', function(data){ + if (data.inputId === 'left'){ + player.pressingLeft = data.state; + player.dir = consts.DIR_LEFT; + } + else if (data.inputId === 'right'){ + player.pressingRight = data.state; + player.dir = consts.DIR_RIGHT; + } + else if (data.inputId === 'up'){ + player.pressingUp = data.state; + player.dir = consts.DIR_UP; + } + else if (data.inputId === 'down'){ + player.pressingDown = data.state; + player.dir = consts.DIR_DOWN; + } + else if (data.inputId === 'attack'){ + player.pressingAttack = data.state; + } + else if (data.inputId === 'mouseAngle'){ + player.mouseAngle = data.state; + } + }); + + socket.emit('init',{ + selfId:socket.id, + player:Player.getAllInitPack(), + bullet:Bullet.Bullet.getAllInitPack(), + }); +} + +Player.getAllInitPack = function(){ + var players = []; + for(var i in Player.list) + players.push(Player.list[i].getInitPack()); + return players; +} + +Player.onDisconnect = function(socket){ + delete Player.list[socket.id]; + Entity.removePack.player.push(socket.id); +} + +Player.update = function(){ + var pack = []; + for(var i in Player.list){ + var player = Player.list[i]; + player.update(); + pack.push(player.getUpdatePack()); + } + return pack; + + +} + +module.exports = { Player }; +exports.list = Player.list;
\ No newline at end of file |