gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
94 lines • 7.44 kB
JavaScript
;
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uaXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2ZXIvZW50aXRpZXMvTW9uaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrREFBNEQ7QUFDNUQsbURBQTZEO0FBRTdELG1DQUFzQztBQUN0QyxvREFBaUQ7QUFFakQsNkRBQTBEO0FBQzFELGlFQUE4RDtBQUM5RCxtREFBZ0Q7QUFFaEQsTUFBYSxPQUFRLFNBQVEscUJBQVk7SUFNckMsWUFBbUIsSUFBWSxFQUFTLE1BQXVCLEVBQVMsT0FBc0IsRUFBUyxJQUFhO1FBQ2hILEtBQUssRUFBRSxDQUFDO1FBRE8sU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUFTLFNBQUksR0FBSixJQUFJLENBQVM7SUFFcEgsQ0FBQztJQUVNLFVBQVU7UUFDYjs7V0FFRztRQUNILElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLHFCQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxXQUFtQixFQUFFLEdBQVcsRUFBRSxNQUFhLEVBQUUsRUFBOEIsRUFBRSxFQUFFO1lBQy9ILDZCQUFhLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQztpQkFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNaLElBQUksSUFBSSxHQUFhLElBQUksQ0FBQyxhQUFhLEdBQUcsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLElBQUk7b0JBQ0EsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDeEQsSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7d0JBQzNF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