UNPKG

gamelet-cli

Version:

Download project from code.gamelet.com, edit/test in vscode and sync back to server.

140 lines 10.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Player = void 0; const ArrayUtil_1 = require("./../utils/ArrayUtil"); const gameroomService_1 = require("../services/gameroomService"); const StringUtil_1 = require("../utils/StringUtil"); const events_1 = require("events"); const playerService_1 = require("../services/playerService"); const MonitorManager_1 = require("../managers/MonitorManager"); const clientService_1 = require("../services/clientService"); class Player extends events_1.EventEmitter { constructor(code, socket, client, user, _networkDelay) { super(); this.code = code; this.socket = socket; this.client = client; this.user = user; this._networkDelay = _networkDelay; this.gamezones = []; // timestamp in seconds this.loginTime = 0; // timestamp in milliseconds this._lastMsgTime = 0; this._cheats = 0; this._locale = 'en'; this._lastMsgTime = Date.now(); this.loginTime = Math.floor(this._lastMsgTime / 1000); this.setupServiceCall(gameroomService_1.gameroomService); this.setupServiceCall(clientService_1.clientService); this.setupServiceCall(playerService_1.playerService); MonitorManager_1.monitorManager.eventPlayerConneced(this); socket.on('disconnect', () => this.onDisconnected()); let gameroomManager = gameroomService_1.gameroomService._getManager(); gameroomManager.enterGamezone(this, gameroomManager.getClientZone(this.client).code); } onDisconnected() { if (this.gameroom) { this.gameroom.removePlayer(this); } this.gamezones.slice().forEach(zone => zone.removePlayer(this)); this.emit(Player.EVENT.DISCONNECTED, this); MonitorManager_1.monitorManager.eventPlayerDisconnected(this); } addCheat() { this._cheats++; } get cheats() { return this._cheats; } setNetworkDelay(value) { this._networkDelay = value; } setLocale(value) { this._locale = value; } get networkDelay() { return this._networkDelay; } get lastMsgTime() { return this._lastMsgTime; } get locale() { return this._locale; } setupServiceCall(service) { this.socket.on(service.name, (method, params, cb) => { this._lastMsgTime = Date.now(); service._execute(this, method, params) .then(result => { cb({ data: result }); }) .catch(err => { cb({ error: StringUtil_1.StringUtil.errorToString(err) }); }); }); } get clientUserKey() { return this.client.project.code + '/' + this.user.username; } disconnect() { if (this.socket.disconnected) { this.onDisconnected(); } else { this.socket.disconnect(true); } } toVo() { let json = { code: this.code, user: this.user, loginTime: this.loginTime, networkDelay: this.networkDelay, locale: this._locale, }; if (this.socket.disconnected) { json.disconnected = true; } return json; } toMonitorPlayer() { return Object.assign(this.toVo(), { msgVer: this.client.msgVersion, lastMsgTime: this.lastMsgTime }); } send(msg) { if (this.socket.connected) { return new Promise(resolve => { MonitorManager_1.monitorManager.logOutgoing(this.client.project.code, 'player', 'player.send', [this.code, msg.type, msg.params]); msg.send(this.socket, response => { resolve(response); }); }); } return Promise.reject('not connected'); } getGameroom() { return this.gameroom; } setGameroom(gameroom) { if (this.gameroom) { let oldRoom = this.gameroom; this.gameroom = null; oldRoom.removePlayer(this); } this.gameroom = gameroom; } addGamezone(gamezone) { ArrayUtil_1.ArrayUtil.addUniqueElement(this.gamezones, gamezone); } removeGamezone(gamezone) { ArrayUtil_1.ArrayUtil.removeElement(this.gamezones, gamezone); } } exports.Player = Player; Player.EVENT = { DISCONNECTED: 'disconnected', }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9QbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsb0RBQWlEO0FBQ2pELGlFQUE4RDtBQUc5RCxvREFBaUQ7QUFDakQsbUNBQXNDO0FBQ3RDLDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFDNUQsNkRBQTBEO0FBRzFELE1BQWEsTUFBTyxTQUFRLHFCQUFZO0lBb0JwQyxZQUFtQixJQUFZLEVBQVMsTUFBdUIsRUFBUyxNQUFjLEVBQVMsSUFBYSxFQUFVLGFBQXFCO1FBQ3ZJLEtBQUssRUFBRSxDQUFDO1FBRE8sU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQVM7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQVpuSSxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRW5DLHVCQUF1QjtRQUNmLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFOUIsNEJBQTRCO1FBQ3BCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFcEIsWUFBTyxHQUFXLElBQUksQ0FBQztRQUszQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUNBQWUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBYSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDZCQUFhLENBQUMsQ0FBQztRQUVyQywrQkFBYyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXpDLE1BQU0sQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDO1FBRXJELElBQUksZUFBZSxHQUFHLGlDQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUVPLGNBQWM7UUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzNDLCtCQUFjLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWE7UUFDekIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUNELFNBQVMsQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFvQjtRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBYyxFQUFFLE1BQWEsRUFBRSxFQUE4QixFQUFFLEVBQUU7WUFFM0YsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFL0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztpQkFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNYLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ1QsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLHVCQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNqRCxDQUFDLENBQUMsQ0FBQTtRQUNWLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMvRCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQ3pCO2FBQU07WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFFRCxJQUFJO1FBQ0EsSUFBSSxJQUFJLEdBQWM7WUFDbEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdkIsQ0FBQTtRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDNUI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsZUFBZTtRQUNYLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVTtZQUM5QixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDaEMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVNLElBQUksQ0FBQyxHQUFZO1FBQ3BCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7WUFDdkIsT0FBTyxJQUFJLE9BQU8sQ0FBTSxPQUFPLENBQUMsRUFBRTtnQkFDOUIsK0JBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2pILEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRTtvQkFDN0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFBO1NBQ0w7UUFDRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVNLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxRQUFrQjtRQUVqQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQWtCO1FBQ2pDLHFCQUFTLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBQ00sY0FBYyxDQUFDLFFBQWtCO1FBQ3BDLHFCQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUF0Skwsd0JBdUpDO0FBckpVLFlBQUssR0FBRztJQUNYLFlBQVksRUFBRSxjQUFjO0NBQy9CLENBQUEifQ==