gamelet-cli 0.7.10 → 0.7.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/package.json.twig +3 -3
- package/assets/server/static/js/monitor.js +6 -0
- package/assets/server/views/monitor.twig +1 -0
- package/assets/tsconfig.json.twig +1 -1
- package/build/package.json +67 -67
- package/build/src/gamelet/download.js +773 -737
- package/build/src/gamelet/merges.js +181 -179
- package/build/src/gamelet/prepare.js +276 -277
- package/build/src/gamelet/upload.js +280 -279
- package/build/src/index.js +86 -86
- package/build/src/server/Constant.js +9 -9
- package/build/src/server/entities/Client.js +78 -78
- package/build/src/server/entities/ClientOwner.js +67 -67
- package/build/src/server/entities/ClientProject.js +84 -84
- package/build/src/server/entities/Gameroom.js +89 -89
- package/build/src/server/entities/GameroomBase.js +276 -276
- package/build/src/server/entities/Gamezone.js +73 -73
- package/build/src/server/entities/ListFilter.js +193 -193
- package/build/src/server/entities/Monitor.js +94 -81
- package/build/src/server/entities/Player.js +140 -140
- package/build/src/server/managers/ApiManager.js +75 -75
- package/build/src/server/managers/ClientManager.js +64 -64
- package/build/src/server/managers/Database.js +627 -627
- package/build/src/server/managers/GameroomManager.js +392 -392
- package/build/src/server/managers/ManagerBase.js +17 -17
- package/build/src/server/managers/MonitorManager.js +73 -73
- package/build/src/server/managers/PlayerManager.js +108 -108
- package/build/src/server/managers/SocketManager.js +60 -60
- package/build/src/server/managers/UserManager.js +58 -58
- package/build/src/server/messages/Message.js +143 -143
- package/build/src/server/server.js +112 -113
- package/build/src/server/services/ServiceBase.js +25 -25
- package/build/src/server/services/clientService.js +23 -23
- package/build/src/server/services/gameroomService.js +121 -121
- package/build/src/server/services/gltserver.service.js +23 -23
- package/build/src/server/services/playerService.js +32 -32
- package/build/src/server/startServer.js +32 -33
- package/build/src/server/types/BadgeStatus.js +25 -25
- package/build/src/server/types/OrderType.js +38 -38
- package/build/src/server/types/SubmitType.js +24 -24
- package/build/src/server/types/TimeRange.js +26 -26
- package/build/src/server/utils/ArrayUtil.js +126 -126
- package/build/src/server/utils/IntUtil.js +9 -9
- package/build/src/server/utils/ObjectUtil.js +191 -191
- package/build/src/server/utils/StringUtil.js +37 -37
- package/build/src/utils/cli.js +53 -53
- package/build/src/utils/file.js +350 -337
- package/build/src/utils/init.js +57 -42
- package/build/src/utils/log.js +18 -17
- package/build/src/utils/net.js +43 -39
- package/package.json +2 -2
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.userManager = exports.UserManager = void 0;
|
|
4
|
-
const IntUtil_1 = require("../utils/IntUtil");
|
|
5
|
-
const StringUtil_1 = require("../utils/StringUtil");
|
|
6
|
-
const PlayerManager_1 = require("./PlayerManager");
|
|
7
|
-
class UserManager {
|
|
8
|
-
constructor() {
|
|
9
|
-
this.users = [];
|
|
10
|
-
this.userIconColors = [
|
|
11
|
-
'blue',
|
|
12
|
-
'green',
|
|
13
|
-
'orange',
|
|
14
|
-
'pink',
|
|
15
|
-
'red',
|
|
16
|
-
'yellow',
|
|
17
|
-
];
|
|
18
|
-
this.users.push({
|
|
19
|
-
username: 'LocalServerMonitor',
|
|
20
|
-
nickname: 'Monitor',
|
|
21
|
-
token: 'localServerMonitor',
|
|
22
|
-
admin: true,
|
|
23
|
-
iconUrl: 'https://gamelet.online/img/default_usericon_red.png',
|
|
24
|
-
ip: '1.1.1.1',
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
getByToken(toiken) {
|
|
28
|
-
return this.users.find(u => u.token == toiken);
|
|
29
|
-
}
|
|
30
|
-
getByUsername(username) {
|
|
31
|
-
return this.users.find(u => u.username == username);
|
|
32
|
-
}
|
|
33
|
-
listByUsernames(usernames) {
|
|
34
|
-
return this.users.filter(u => usernames.includes(u.username));
|
|
35
|
-
}
|
|
36
|
-
login(clientCode, guest) {
|
|
37
|
-
let onlineUsernames = PlayerManager_1.playerManager.listPlayers().map(player => player.user.username);
|
|
38
|
-
let user = this.users.find(u => !onlineUsernames.includes(u.username) && !u.guest == !guest && !u.admin);
|
|
39
|
-
if (!user) {
|
|
40
|
-
let userIndex = this.users.length + 1;
|
|
41
|
-
let username = `DevUser_${userIndex}@devserver`;
|
|
42
|
-
let userColor = this.userIconColors[userIndex % this.userIconColors.length];
|
|
43
|
-
user = {
|
|
44
|
-
username: username,
|
|
45
|
-
nickname: `User ${userIndex}`,
|
|
46
|
-
iconUrl: `https://gamelet.online/img/default_usericon_${userColor}.png`,
|
|
47
|
-
token: `${username}|${clientCode}|Dev` + StringUtil_1.StringUtil.generateRandomString(3),
|
|
48
|
-
ip: [192, 168, IntUtil_1.IntUtil.randInt(100, 200), IntUtil_1.IntUtil.randInt(100, 200)].join('.'),
|
|
49
|
-
guest: !!guest,
|
|
50
|
-
};
|
|
51
|
-
this.users.push(user);
|
|
52
|
-
}
|
|
53
|
-
return user;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.UserManager = UserManager;
|
|
57
|
-
exports.userManager = new UserManager();
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.userManager = exports.UserManager = void 0;
|
|
4
|
+
const IntUtil_1 = require("../utils/IntUtil");
|
|
5
|
+
const StringUtil_1 = require("../utils/StringUtil");
|
|
6
|
+
const PlayerManager_1 = require("./PlayerManager");
|
|
7
|
+
class UserManager {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.users = [];
|
|
10
|
+
this.userIconColors = [
|
|
11
|
+
'blue',
|
|
12
|
+
'green',
|
|
13
|
+
'orange',
|
|
14
|
+
'pink',
|
|
15
|
+
'red',
|
|
16
|
+
'yellow',
|
|
17
|
+
];
|
|
18
|
+
this.users.push({
|
|
19
|
+
username: 'LocalServerMonitor',
|
|
20
|
+
nickname: 'Monitor',
|
|
21
|
+
token: 'localServerMonitor',
|
|
22
|
+
admin: true,
|
|
23
|
+
iconUrl: 'https://gamelet.online/img/default_usericon_red.png',
|
|
24
|
+
ip: '1.1.1.1',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
getByToken(toiken) {
|
|
28
|
+
return this.users.find(u => u.token == toiken);
|
|
29
|
+
}
|
|
30
|
+
getByUsername(username) {
|
|
31
|
+
return this.users.find(u => u.username == username);
|
|
32
|
+
}
|
|
33
|
+
listByUsernames(usernames) {
|
|
34
|
+
return this.users.filter(u => usernames.includes(u.username));
|
|
35
|
+
}
|
|
36
|
+
login(clientCode, guest) {
|
|
37
|
+
let onlineUsernames = PlayerManager_1.playerManager.listPlayers().map(player => player.user.username);
|
|
38
|
+
let user = this.users.find(u => !onlineUsernames.includes(u.username) && !u.guest == !guest && !u.admin);
|
|
39
|
+
if (!user) {
|
|
40
|
+
let userIndex = this.users.length + 1;
|
|
41
|
+
let username = `DevUser_${userIndex}@devserver`;
|
|
42
|
+
let userColor = this.userIconColors[userIndex % this.userIconColors.length];
|
|
43
|
+
user = {
|
|
44
|
+
username: username,
|
|
45
|
+
nickname: `User ${userIndex}`,
|
|
46
|
+
iconUrl: `https://gamelet.online/img/default_usericon_${userColor}.png`,
|
|
47
|
+
token: `${username}|${clientCode}|Dev` + StringUtil_1.StringUtil.generateRandomString(3),
|
|
48
|
+
ip: [192, 168, IntUtil_1.IntUtil.randInt(100, 200), IntUtil_1.IntUtil.randInt(100, 200)].join('.'),
|
|
49
|
+
guest: !!guest,
|
|
50
|
+
};
|
|
51
|
+
this.users.push(user);
|
|
52
|
+
}
|
|
53
|
+
return user;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.UserManager = UserManager;
|
|
57
|
+
exports.userManager = new UserManager();
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlck1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmVyL21hbmFnZXJzL1VzZXJNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUEyQztBQUMzQyxvREFBaUQ7QUFDakQsbURBQWdEO0FBRWhELE1BQWEsV0FBVztJQWFwQjtRQVhRLFVBQUssR0FBYyxFQUFFLENBQUM7UUFFdEIsbUJBQWMsR0FBYTtZQUMvQixNQUFNO1lBQ04sT0FBTztZQUNQLFFBQVE7WUFDUixNQUFNO1lBQ04sS0FBSztZQUNMLFFBQVE7U0FDWCxDQUFDO1FBR0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDWixRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFFBQVEsRUFBRSxTQUFTO1lBQ25CLEtBQUssRUFBRSxvQkFBb0I7WUFDM0IsS0FBSyxFQUFFLElBQUk7WUFDWCxPQUFPLEVBQUUscURBQXFEO1lBQzlELEVBQUUsRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxVQUFVLENBQUMsTUFBYztRQUNyQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsYUFBYSxDQUFDLFFBQWdCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDRCxlQUFlLENBQUMsU0FBbUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFrQixFQUFFLEtBQWM7UUFDcEMsSUFBSSxlQUFlLEdBQUcsNkJBQWEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RGLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksUUFBUSxHQUFHLFdBQVcsU0FBUyxZQUFZLENBQUM7WUFDaEQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1RSxJQUFJLEdBQUc7Z0JBQ0gsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRLFNBQVMsRUFBRTtnQkFDN0IsT0FBTyxFQUFFLCtDQUErQyxTQUFTLE1BQU07Z0JBQ3ZFLEtBQUssRUFBRSxHQUFHLFFBQVEsSUFBSSxVQUFVLE1BQU0sR0FBRyx1QkFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztnQkFDM0UsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxpQkFBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsaUJBQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDOUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO2FBQ2pCLENBQUE7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKO0FBckRELGtDQXFEQztBQUNZLFFBQUEsV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMifQ==
|
|
@@ -1,143 +1,143 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MessageType = exports.Message = void 0;
|
|
4
|
-
let messagePool = [];
|
|
5
|
-
function getMessage(type, params) {
|
|
6
|
-
if (messagePool.length) {
|
|
7
|
-
let msg = messagePool.pop();
|
|
8
|
-
msg.type = type;
|
|
9
|
-
msg.params = params;
|
|
10
|
-
return msg;
|
|
11
|
-
}
|
|
12
|
-
else {
|
|
13
|
-
return new Message(type, params);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
class Message {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
recycle() {
|
|
94
|
-
messagePool.push(this);
|
|
95
|
-
}
|
|
96
|
-
send(socket, respond) {
|
|
97
|
-
if (respond) {
|
|
98
|
-
return socket.emit('gltmsg', this.type, this.params, respond);
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
return socket.emit('gltmsg', this.type, this.params);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
exports.Message = Message;
|
|
106
|
-
exports.MessageType = {
|
|
107
|
-
// receiving
|
|
108
|
-
LOGIN: 'login',
|
|
109
|
-
LOGIN2: 'login2',
|
|
110
|
-
LOGIN3: 'login3',
|
|
111
|
-
LOGIN_ADMIN: 'loginAdmin',
|
|
112
|
-
ECHO: 'echo',
|
|
113
|
-
CLIENT_MONITOR_API: 'clientMonitorApi',
|
|
114
|
-
// outgoing
|
|
115
|
-
MONITOR_LOG: 'monitorLog',
|
|
116
|
-
MONITOR_EVENT: 'monitorEvent',
|
|
117
|
-
ROOM_CREATED: 'roomCreated',
|
|
118
|
-
ROOM_CLOSED: 'roomClosed',
|
|
119
|
-
ROOM_STATUS_CHANGED: 'roomStatusChanged',
|
|
120
|
-
ROOM_BRAINER_CHANGED: 'roomBrainerChanged',
|
|
121
|
-
ROOM_BRAINER_SET: 'roomBrainerSet',
|
|
122
|
-
ROOM_PLAYER_STATE_CHANGED: 'roomPlayerStateChanged',
|
|
123
|
-
ROOM_PLAYER_STATES_CHANGED: 'roomPlayerStatesChanged',
|
|
124
|
-
ROOM_PLAYER_SYNCED_CHANGED: 'roomPlayerSyncedChanged',
|
|
125
|
-
ZONE_STATUS_CHANGED: 'zoneStatusChanged',
|
|
126
|
-
ZONE_PLAYER_STATE_CHANGED: 'zonePlayerStateChanged',
|
|
127
|
-
ZONE_PLAYER_STATES_CHANGED: 'zonePlayerStatesChanged',
|
|
128
|
-
ZONE_PLAYER_SYNCED_CHANGED: 'zonePlayerSyncedChanged',
|
|
129
|
-
BROADCAST_IN_ROOM: 'broadcastInRoom',
|
|
130
|
-
BROADCAST_TO_ROOM: 'broadcastToRoom',
|
|
131
|
-
BROADCAST_TO_ZONE: 'broadcastToZone',
|
|
132
|
-
BROADCAST_IN_PROJECT: 'broadcastInProject',
|
|
133
|
-
BROADCAST_IN_GAMELET: 'broadcastInGamelet',
|
|
134
|
-
PLAYER_JOINED_ROOM: 'playerJoinedRoom',
|
|
135
|
-
PLAYER_LEFT_ROOM: 'playerLeftRoom',
|
|
136
|
-
PLAYER_LEFT_ZONE: 'playerLeftZone',
|
|
137
|
-
PLAYER_CHEATED: 'playerCheated',
|
|
138
|
-
DATA_TO_PLAYER: 'dataToPlayer',
|
|
139
|
-
DATA_TO_ROOMMATE: 'dataToRoommate',
|
|
140
|
-
DATA_TO_ROOM_DECISIONMAKER: 'dataToRoomDecisionmaker',
|
|
141
|
-
MONITOR_DATA_TO_PLAYER: 'monitorDataToPlayer',
|
|
142
|
-
};
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MessageType = exports.Message = void 0;
|
|
4
|
+
let messagePool = [];
|
|
5
|
+
function getMessage(type, params) {
|
|
6
|
+
if (messagePool.length) {
|
|
7
|
+
let msg = messagePool.pop();
|
|
8
|
+
msg.type = type;
|
|
9
|
+
msg.params = params;
|
|
10
|
+
return msg;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
return new Message(type, params);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
class Message {
|
|
17
|
+
static forMonitorLog(projectCode, channel, prefix, data, color, player) {
|
|
18
|
+
return getMessage(exports.MessageType.MONITOR_LOG, [projectCode, channel, prefix, data, color, player ? {
|
|
19
|
+
code: player.code,
|
|
20
|
+
lastMsgTime: player.lastMsgTime
|
|
21
|
+
} : 0]);
|
|
22
|
+
}
|
|
23
|
+
static forMonitorEvent(projectCode, event, data) {
|
|
24
|
+
return getMessage(exports.MessageType.MONITOR_EVENT, [projectCode, event, data]);
|
|
25
|
+
}
|
|
26
|
+
static forBroadcast(type, playerCode, roomCode, data) {
|
|
27
|
+
return getMessage(type, [playerCode, roomCode, data]);
|
|
28
|
+
}
|
|
29
|
+
static forDataToPlayer(sender, data) {
|
|
30
|
+
return getMessage(exports.MessageType.DATA_TO_PLAYER, [sender.code, sender.client.project.code, sender.client.msgVersion, data]);
|
|
31
|
+
}
|
|
32
|
+
static forMonitorDataToPlayer(sender, data) {
|
|
33
|
+
return getMessage(exports.MessageType.MONITOR_DATA_TO_PLAYER, [sender.code, data]);
|
|
34
|
+
}
|
|
35
|
+
static forDataToRoommate(sender, data) {
|
|
36
|
+
return getMessage(exports.MessageType.DATA_TO_ROOMMATE, [sender.code, sender.getGameroom().code, data]);
|
|
37
|
+
}
|
|
38
|
+
static forDataToRoomDecisionmaker(sender, senderGameroomCode, roomCode, data) {
|
|
39
|
+
return getMessage(exports.MessageType.DATA_TO_ROOM_DECISIONMAKER, [sender.code, senderGameroomCode, roomCode, data]);
|
|
40
|
+
}
|
|
41
|
+
static forRoomCreated(room) {
|
|
42
|
+
return getMessage(exports.MessageType.ROOM_CREATED, [room.toAndStatusVo()]);
|
|
43
|
+
}
|
|
44
|
+
static forRoomClosed(room) {
|
|
45
|
+
return getMessage(exports.MessageType.ROOM_CLOSED, [room.gamezone.code, room.code]);
|
|
46
|
+
}
|
|
47
|
+
static forRoomStatusChanged(room) {
|
|
48
|
+
return getMessage(exports.MessageType.ROOM_STATUS_CHANGED, [room.gamezone.code, room.code, room.toStatusVo()]);
|
|
49
|
+
}
|
|
50
|
+
static forRoomBrainerChanged(room) {
|
|
51
|
+
return getMessage(exports.MessageType.ROOM_BRAINER_CHANGED, [room.code, room.getBrainer().code]);
|
|
52
|
+
}
|
|
53
|
+
static forRoomBrainerSet(roomCode) {
|
|
54
|
+
return getMessage(exports.MessageType.ROOM_BRAINER_SET, [roomCode]);
|
|
55
|
+
}
|
|
56
|
+
static forRoomPlayerStateChanged(roomCode, playerCode, key, value) {
|
|
57
|
+
return getMessage(exports.MessageType.ROOM_PLAYER_STATE_CHANGED, [roomCode, playerCode, key, value]);
|
|
58
|
+
}
|
|
59
|
+
static forRoomPlayerStatesChanged(roomCode, playerCode, states) {
|
|
60
|
+
return getMessage(exports.MessageType.ROOM_PLAYER_STATES_CHANGED, [roomCode, playerCode, states]);
|
|
61
|
+
}
|
|
62
|
+
static forRoomPlayerSyncedChanged(roomCode, playerCode, value, brainerCode) {
|
|
63
|
+
return getMessage(exports.MessageType.ROOM_PLAYER_SYNCED_CHANGED, [roomCode, playerCode, value, brainerCode]);
|
|
64
|
+
}
|
|
65
|
+
static forZoneStatusChanged(zone) {
|
|
66
|
+
return getMessage(exports.MessageType.ZONE_STATUS_CHANGED, [zone.code, zone.toStatusVo()]);
|
|
67
|
+
}
|
|
68
|
+
static forZonePlayerStateChanged(zoneCode, playerCode, key, value, brainerCode) {
|
|
69
|
+
return getMessage(exports.MessageType.ZONE_PLAYER_STATE_CHANGED, [zoneCode, playerCode, key, value, brainerCode]);
|
|
70
|
+
}
|
|
71
|
+
static forZonePlayerStatesChanged(zoneCode, playerCode, states, brainerCode) {
|
|
72
|
+
return getMessage(exports.MessageType.ZONE_PLAYER_STATES_CHANGED, [zoneCode, playerCode, states, brainerCode]);
|
|
73
|
+
}
|
|
74
|
+
static forZonePlayerSyncedChanged(zoneCode, playerCode, value, brainerCode) {
|
|
75
|
+
return getMessage(exports.MessageType.ZONE_PLAYER_SYNCED_CHANGED, [zoneCode, playerCode, value, brainerCode]);
|
|
76
|
+
}
|
|
77
|
+
static forPlayerJoinedRoom(roomCode, player) {
|
|
78
|
+
return getMessage(exports.MessageType.PLAYER_JOINED_ROOM, [roomCode, player.toVo()]);
|
|
79
|
+
}
|
|
80
|
+
static forPlayerLeftRoom(roomCode, playerCode) {
|
|
81
|
+
return getMessage(exports.MessageType.PLAYER_LEFT_ROOM, [roomCode, playerCode]);
|
|
82
|
+
}
|
|
83
|
+
static forPlayerLeftZone(zoneCode, playerCode) {
|
|
84
|
+
return getMessage(exports.MessageType.PLAYER_LEFT_ZONE, [zoneCode, playerCode]);
|
|
85
|
+
}
|
|
86
|
+
static forPlayerCheated(playerCode) {
|
|
87
|
+
return getMessage(exports.MessageType.PLAYER_CHEATED, [playerCode]);
|
|
88
|
+
}
|
|
89
|
+
constructor(type, params) {
|
|
90
|
+
this.type = type;
|
|
91
|
+
this.params = params;
|
|
92
|
+
}
|
|
93
|
+
recycle() {
|
|
94
|
+
messagePool.push(this);
|
|
95
|
+
}
|
|
96
|
+
send(socket, respond) {
|
|
97
|
+
if (respond) {
|
|
98
|
+
return socket.emit('gltmsg', this.type, this.params, respond);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
return socket.emit('gltmsg', this.type, this.params);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.Message = Message;
|
|
106
|
+
exports.MessageType = {
|
|
107
|
+
// receiving
|
|
108
|
+
LOGIN: 'login',
|
|
109
|
+
LOGIN2: 'login2',
|
|
110
|
+
LOGIN3: 'login3',
|
|
111
|
+
LOGIN_ADMIN: 'loginAdmin',
|
|
112
|
+
ECHO: 'echo',
|
|
113
|
+
CLIENT_MONITOR_API: 'clientMonitorApi',
|
|
114
|
+
// outgoing
|
|
115
|
+
MONITOR_LOG: 'monitorLog',
|
|
116
|
+
MONITOR_EVENT: 'monitorEvent',
|
|
117
|
+
ROOM_CREATED: 'roomCreated',
|
|
118
|
+
ROOM_CLOSED: 'roomClosed',
|
|
119
|
+
ROOM_STATUS_CHANGED: 'roomStatusChanged',
|
|
120
|
+
ROOM_BRAINER_CHANGED: 'roomBrainerChanged',
|
|
121
|
+
ROOM_BRAINER_SET: 'roomBrainerSet',
|
|
122
|
+
ROOM_PLAYER_STATE_CHANGED: 'roomPlayerStateChanged',
|
|
123
|
+
ROOM_PLAYER_STATES_CHANGED: 'roomPlayerStatesChanged',
|
|
124
|
+
ROOM_PLAYER_SYNCED_CHANGED: 'roomPlayerSyncedChanged',
|
|
125
|
+
ZONE_STATUS_CHANGED: 'zoneStatusChanged',
|
|
126
|
+
ZONE_PLAYER_STATE_CHANGED: 'zonePlayerStateChanged',
|
|
127
|
+
ZONE_PLAYER_STATES_CHANGED: 'zonePlayerStatesChanged',
|
|
128
|
+
ZONE_PLAYER_SYNCED_CHANGED: 'zonePlayerSyncedChanged',
|
|
129
|
+
BROADCAST_IN_ROOM: 'broadcastInRoom',
|
|
130
|
+
BROADCAST_TO_ROOM: 'broadcastToRoom',
|
|
131
|
+
BROADCAST_TO_ZONE: 'broadcastToZone',
|
|
132
|
+
BROADCAST_IN_PROJECT: 'broadcastInProject',
|
|
133
|
+
BROADCAST_IN_GAMELET: 'broadcastInGamelet',
|
|
134
|
+
PLAYER_JOINED_ROOM: 'playerJoinedRoom',
|
|
135
|
+
PLAYER_LEFT_ROOM: 'playerLeftRoom',
|
|
136
|
+
PLAYER_LEFT_ZONE: 'playerLeftZone',
|
|
137
|
+
PLAYER_CHEATED: 'playerCheated',
|
|
138
|
+
DATA_TO_PLAYER: 'dataToPlayer',
|
|
139
|
+
DATA_TO_ROOMMATE: 'dataToRoommate',
|
|
140
|
+
DATA_TO_ROOM_DECISIONMAKER: 'dataToRoomDecisionmaker',
|
|
141
|
+
MONITOR_DATA_TO_PLAYER: 'monitorDataToPlayer',
|
|
142
|
+
};
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2ZXIvbWVzc2FnZXMvTWVzc2FnZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxJQUFJLFdBQVcsR0FBYyxFQUFFLENBQUM7QUFFaEMsU0FBUyxVQUFVLENBQUMsSUFBWSxFQUFFLE1BQWE7SUFDM0MsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckIsSUFBSSxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztTQUFNLENBQUM7UUFDSixPQUFPLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQWEsT0FBTztJQUVoQixNQUFNLENBQUMsYUFBYSxDQUFDLFdBQW1CLEVBQUUsT0FBZSxFQUFFLE1BQWMsRUFBRSxJQUFZLEVBQUUsS0FBYSxFQUFFLE1BQWU7UUFDbkgsT0FBTyxVQUFVLENBQUMsbUJBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQzVGLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2FBQ2xDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFtQixFQUFFLEtBQWEsRUFBRSxJQUFvQjtRQUMzRSxPQUFPLFVBQVUsQ0FBQyxtQkFBVyxDQUFDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFB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
|