summaryrefslogtreecommitdiff
path: root/server/Entities/Player.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/Entities/Player.js')
-rw-r--r--server/Entities/Player.js156
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