UNPKG

gamelet-cli

Version:

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

94 lines 7.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Monitor = void 0; const ClientManager_1 = require("./../managers/ClientManager"); const Message_1 = require("./../messages/Message"); const events_1 = require("events"); const StringUtil_1 = require("../utils/StringUtil"); const PlayerManager_1 = require("../managers/PlayerManager"); const gameroomService_1 = require("../services/gameroomService"); const Database_1 = require("../managers/Database"); class Monitor extends events_1.EventEmitter { constructor(code, socket, project, user) { super(); this.code = code; this.socket = socket; this.project = project; this.user = user; } initialize() { /** * this is for monitor client accessing msgserver */ this.socket.on(Message_1.MessageType.CLIENT_MONITOR_API, (projectCode, api, params, cb) => { ClientManager_1.clientManager.getClientProject(projectCode, false) .then(project => { let func = this['_clientapi_' + api]; try { let result = func.apply(this, [project].concat(params)); if (result && typeof result === 'object' && typeof result.then === 'function') { result.then(data => { cb({ data: data }); }); } else { cb({ data: result }); } } catch (err) { cb({ error: StringUtil_1.StringUtil.errorToString(err) }); } }); }); this.socket.on('disconnect', () => { this.dispose(); }); } dispose() { if (!this.socket.disconnected) { this.socket.disconnect(true); } } // client api -------------------------------------------- _clientapi_list_players(project) { let list = []; if (project) { project.cleanDisconnectedPlayers(); list = project.playerList; } return list.map(player => player.toMonitorPlayer()); } _clientapi_disconnect_player(_project, playerCode) { let player = PlayerManager_1.playerManager.getPlayerByCode(playerCode); player && player.disconnect(); } _clientapi_data_to_player(_project, playerCode, data) { let target = PlayerManager_1.playerManager.getPlayerByCode(playerCode); PlayerManager_1.playerManager.designContract(target, 'The player has left the game.'); return target.send(Message_1.Message.forMonitorDataToPlayer(this, data)); } _clientapi_data_to_project(_project, data) { return gameroomService_1.gameroomService._getManager().broadcastInProject(this, _project, data); } _clientapi_data_to_gamelet(_project, data) { gameroomService_1.gameroomService._getManager().designContract(_project.code == 'Server', 'Your monitor does not have the authority to make a Gamelet Broadcast'); return gameroomService_1.gameroomService._getManager().broadcastInGamelet(this, data); } _clientapi_test(_project, _data) { return Database_1.database.executeCommand(this.user, { service: 'score', method: 'submitScore', params: JSON.stringify([ 'test', 'star[@]keep_out', 0, 2 ]), }); } } exports.Monitor = Monitor; Monitor.EVENT = { DISCONNECTED: 'disconnected', }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvTW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBNEQ7QUFDNUQsbURBQTZEO0FBRTdELG1DQUFzQztBQUN0QyxvREFBaUQ7QUFFakQsNkRBQTBEO0FBQzFELGlFQUE4RDtBQUM5RCxtREFBZ0Q7QUFFaEQsTUFBYSxPQUFRLFNBQVEscUJBQVk7SUFNckMsWUFBbUIsSUFBWSxFQUFTLE1BQXVCLEVBQVMsT0FBc0IsRUFBUyxJQUFhO1FBQ2hILEtBQUssRUFBRSxDQUFDO1FBRE8sU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFTLFNBQUksR0FBSixJQUFJLENBQVM7SUFFcEgsQ0FBQztJQUVNLFVBQVU7UUFDYjs7V0FFRztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLHFCQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxXQUFtQixFQUFFLEdBQVcsRUFBRSxNQUFhLEVBQUUsRUFBOEIsRUFBRSxFQUFFO1lBQy9ILDZCQUFhLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztpQkFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNaLElBQUksSUFBSSxHQUFhLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLElBQUk7b0JBQ0EsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7d0JBQzNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7NEJBQ2YsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7d0JBQ3ZCLENBQUMsQ0FBQyxDQUFBO3FCQUNMO3lCQUFNO3dCQUNILEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO3FCQUN4QjtpQkFDSjtnQkFBQyxPQUFPLEdBQUcsRUFBRTtvQkFDVixFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsdUJBQVUsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO2lCQUMvQztZQUNMLENBQUMsQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFO1lBQzlCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxPQUFPO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQUdELDBEQUEwRDtJQUMxRCx1QkFBdUIsQ0FBQyxPQUFzQjtRQUMxQyxJQUFJLElBQUksR0FBYSxFQUFFLENBQUM7UUFDeEIsSUFBSSxPQUFPLEVBQUU7WUFDVCxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNuQyxJQUFJLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxRQUF1QixFQUFFLFVBQWtCO1FBQ3BFLElBQUksTUFBTSxHQUFHLDZCQUFhLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUdELHlCQUF5QixDQUFDLFFBQXVCLEVBQUUsVUFBa0IsRUFBRSxJQUFTO1FBQzVFLElBQUksTUFBTSxHQUFXLDZCQUFhLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELDZCQUFhLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSwrQkFBK0IsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBTyxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCwwQkFBMEIsQ0FBQyxRQUF1QixFQUFFLElBQVM7UUFDekQsT0FBTyxpQ0FBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVELDBCQUEwQixDQUFDLFFBQXVCLEVBQUUsSUFBUztRQUN6RCxpQ0FBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsRUFBRSxzRUFBc0UsQ0FBQyxDQUFDO1FBQ2hKLE9BQU8saUNBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELGVBQWUsQ0FBQyxRQUF1QixFQUFFLEtBQVU7UUFDL0MsT0FBTyxtQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3RDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE1BQU0sRUFBRSxhQUFhO1lBQ3JCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNuQixNQUFNO2dCQUNOLGlCQUFpQjtnQkFDakIsQ0FBQztnQkFDRCxDQUFDO2FBQ0osQ0FBQztTQUNMLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBdkZMLDBCQXlGQztBQXZGVSxhQUFLLEdBQUc7SUFDWCxZQUFZLEVBQUUsY0FBYztDQUMvQixDQUFBIn0=