summaryrefslogblamecommitdiff
path: root/server/Entities/Player.js
blob: 828635568c6f1ed92061cb79309763a41de484f2 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

















                                                      
                 




















                                              
                         


                                         
                         





                                         
                         


                                        
                         






                                   









                                        



                                     







                                        
















                                                    
                           


                                              
                           


                                           
                           


                                             
                           









































                                                   
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.dir = 0;
    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 = 4;
        }
        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;
    }

    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 = 1;
        }
        else if (data.inputId === 'right'){
            player.pressingRight = data.state;
            player.dir = 4;
        }
        else if (data.inputId === 'up'){
            player.pressingUp = data.state;
            player.dir = 2;
        }
        else if (data.inputId === 'down'){
            player.pressingDown = data.state;
            player.dir = 0;
        }
        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;