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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZlci9lbnRpdGllcy9QbGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsb0RBQWlEO0FBQ2pELGlFQUE4RDtBQUc5RCxvREFBaUQ7QUFDakQsbUNBQXNDO0FBQ3RDLDZEQUEwRDtBQUMxRCwrREFBNEQ7QUFDNUQsNkRBQTBEO0FBRzFELE1BQWEsTUFBTyxTQUFRLHFCQUFZO0lBb0JwQyxZQUFtQixJQUFZLEVBQVMsTUFBdUIsRUFBUyxNQUFjLEVBQVMsSUFBYSxFQUFVLGFBQXFCO1FBQ3ZJLEtBQUssRUFBRSxDQUFDO1FBRE8sU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFTLFNBQUksR0FBSixJQUFJLENBQVM7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBUTtRQVpuSSxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRW5DLHVCQUF1QjtRQUNmLGNBQVMsR0FBVyxDQUFDLENBQUM7UUFFOUIsNEJBQTRCO1FBQ3BCLGlCQUFZLEdBQVcsQ0FBQyxDQUFDO1FBRXpCLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFcEIsWUFBTyxHQUFXLElBQUksQ0FBQztRQUszQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQztRQUV0RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUNBQWUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyw2QkFBYSxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLDZCQUFhLENBQUMsQ0FBQztRQUVyQywrQkFBYyxDQUFDLG1CQUFtQixD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