gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
89 lines • 5.89 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 = 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2FtZXJvb20uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmVyL2VudGl0aWVzL0dhbWVyb29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGlEQUE4QztBQUc5QyxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsaURBQUksQ0FBQTtJQUNKLHFEQUFNLENBQUE7SUFDTixpREFBSSxDQUFBO0FBQ1IsQ0FBQyxFQUpXLGFBQWEsNkJBQWIsYUFBYSxRQUl4QjtBQUVELE1BQWEsUUFBUyxTQUFRLDJCQUFZO0lBRXRDLFlBQ0ksTUFBMEIsRUFDMUIsTUFBYyxFQUNkLElBQVksRUFDTCxPQUFlLEVBQ2YsUUFBa0IsRUFDbEIsSUFBWSxFQUNaLFFBQWdCLEVBQ2hCLFVBQWtCLEVBQ2xCLEtBQW9CLEVBQzNCLFNBQWlDLEVBQzFCLFVBQW1CO1FBRTFCLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFUNUMsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGFBQVEsR0FBUixRQUFRLENBQVE7UUFDaEIsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUNsQixVQUFLLEdBQUwsS0FBSyxDQUFlO1FBRXBCLGVBQVUsR0FBVixVQUFVLENBQVM7UUFHMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksY0FBYztRQUNkLE9BQU8sVUFBVSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDaEMsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3BCLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQyxDQUFBO1FBQ3hGLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMxQixNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDdkIsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDL0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUk7UUFDQSxNQUFNLElBQUksR0FBUTtZQUNkLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUM1QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO1lBQzVCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU87WUFDSCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMxQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRTtTQUN2QixDQUFBO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7U0FDNUIsQ0FBQTtJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pCLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSTtZQUMvQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDbEMsQ0FBQTtJQUNMLENBQUM7Q0FDSjtBQTFGRCw0QkEwRkMifQ==