gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
89 lines • 5.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Gameroom = exports.GameroomState = void 0;
const GameroomBase_1 = require("./GameroomBase");
var GameroomState;
(function (GameroomState) {
GameroomState[GameroomState["OPEN"] = 0] = "OPEN";
GameroomState[GameroomState["LOCKED"] = 1] = "LOCKED";
GameroomState[GameroomState["OVER"] = 2] = "OVER";
})(GameroomState = exports.GameroomState || (exports.GameroomState = {}));
class Gameroom extends GameroomBase_1.GameroomBase {
constructor(server, client, code, creator, gamezone, name, password, maxPlayers, state, stateJson, allowGuest) {
super('gameroom', code, server, client, stateJson);
this.creator = creator;
this.gamezone = gamezone;
this.name = name;
this.password = password;
this.maxPlayers = maxPlayers;
this.state = state;
this.allowGuest = allowGuest;
this.brainer = creator;
}
get monitorChannel() {
return `(room) ${this.code}`;
}
dispose() {
this.gamezone.removeGameroom(this);
super.dispose();
}
addPlayer(player) {
if (this.playersCount >= this.maxPlayers) {
throw new Error('The number of players has reached the limit of the gameroom size.');
}
if (super.addPlayer(player)) {
player.setGameroom(this);
return true;
}
return false;
}
removePlayer(player) {
if (player.getGameroom() == this) {
player.setGameroom(null);
}
if (super.removePlayer(player)) {
if (!this.playersCount) {
this.dispose();
}
return true;
}
return false;
}
toVo() {
const json = {
code: this.code,
creator: this.creator.toVo(),
name: this.name,
zoneCode: this.gamezone.code,
maxPlayers: this.maxPlayers,
allowGuest: this.allowGuest,
createTime: this.createTime,
};
this.password && (json.pwd = 1);
return json;
}
toStatusVo() {
return {
state: this.state,
stateJson: this.stateJson,
players: this.playersCount,
ping: this.getPing(),
};
}
toAndStatusVo() {
return {
room: this.toVo(),
status: this.toStatusVo()
};
}
toFullVo() {
return {
room: this.toVo(),
status: this.toStatusVo(),
brainer: this.getBrainer().code,
playerStates: this.playerStates
};
}
}
exports.Gameroom = Gameroom;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2FtZXJvb20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0dhbWVyb29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGlEQUE4QztBQUc5QyxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsaURBQUksQ0FBQTtJQUNKLHFEQUFNLENBQUE7SUFDTixpREFBSSxDQUFBO0FBQ1IsQ0FBQyxFQUpXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBSXhCO0FBRUQsTUFBYSxRQUFTLFNBQVEsMkJBQVk7SUFFdEMsWUFDSSxNQUEwQixFQUMxQixNQUFjLEVBQ2QsSUFBWSxFQUNMLE9BQWUsRUFDZixRQUFrQixFQUNsQixJQUFZLEVBQ1osUUFBZ0IsRUFDaEIsVUFBa0IsRUFDbEIsS0FBb0IsRUFDM0IsU0FBaUMsRUFDMUIsVUFBbUI7UUFFMUIsS0FBSyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQVQ1QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFVBQUssR0FBTCxLQUFLLENBQWU7UUFFcEIsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQUcxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxVQUFVLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFBO1NBQ3ZGO1FBQ0QsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN2QixJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDcEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2FBQ2xCO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxJQUFJO1FBQ0EsTUFBTSxJQUFJLEdBQVE7WUFDZCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDNUIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUM1QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPO1lBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDMUIsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7U0FDdkIsQ0FBQTtJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1NBQzVCLENBQUE7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU87WUFDSCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNqQixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUk7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2xDLENBQUE7SUFDTCxDQUFDO0NBQ0o7QUExRkQsNEJBMEZDIn0=