trucoshi 0.1.0 → 0.1.2
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/package.json +3 -3
- package/dist/index.d.ts +0 -2
- package/dist/lib/classes/Deck.d.ts +0 -16
- package/dist/lib/classes/Deck.js +0 -38
- package/dist/lib/classes/GameLoop.d.ts +0 -20
- package/dist/lib/classes/GameLoop.js +0 -103
- package/dist/lib/classes/Hand.d.ts +0 -38
- package/dist/lib/classes/Hand.js +0 -233
- package/dist/lib/classes/Lobby.d.ts +0 -27
- package/dist/lib/classes/Lobby.js +0 -114
- package/dist/lib/classes/Match.d.ts +0 -18
- package/dist/lib/classes/Match.js +0 -115
- package/dist/lib/classes/Play.d.ts +0 -21
- package/dist/lib/classes/Play.js +0 -39
- package/dist/lib/classes/Player.d.ts +0 -24
- package/dist/lib/classes/Player.js +0 -71
- package/dist/lib/classes/Round.d.ts +0 -17
- package/dist/lib/classes/Round.js +0 -34
- package/dist/lib/classes/Table.d.ts +0 -12
- package/dist/lib/classes/Table.js +0 -30
- package/dist/lib/classes/Team.d.ts +0 -17
- package/dist/lib/classes/Team.js +0 -58
- package/dist/lib/classes/Truco.d.ts +0 -18
- package/dist/lib/classes/Truco.js +0 -110
- package/dist/lib/classes/index.d.ts +0 -11
- package/dist/lib/classes/index.js +0 -27
- package/dist/lib/constants.d.ts +0 -45
- package/dist/lib/constants.js +0 -85
- package/dist/lib/index.d.ts +0 -2
- package/dist/lib/index.js +0 -18
- package/dist/lib/types.d.ts +0 -50
- package/dist/lib/types.js +0 -34
- package/dist/lib/utils.d.ts +0 -5
- package/dist/lib/utils.js +0 -59
- package/dist/server/classes/MatchTable.d.ts +0 -32
- package/dist/server/classes/MatchTable.js +0 -77
- package/dist/server/classes/User.d.ts +0 -5
- package/dist/server/classes/User.js +0 -11
- package/dist/server/classes/index.d.ts +0 -0
- package/dist/server/classes/index.js +0 -1
- package/dist/server/index.d.ts +0 -1
- package/dist/server/index.js +0 -379
- package/dist/server/types.d.ts +0 -36
- package/dist/server/types.js +0 -26
- package/dist/test/autoplay.d.ts +0 -1
- package/dist/test/autoplay.js +0 -94
- package/dist/test/play.d.ts +0 -1
- package/dist/test/play.js +0 -214
- package/dist/types.d.ts +0 -83
- package/dist/types.js +0 -57
package/dist/server/index.js
DELETED
|
@@ -1,379 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
var crypto_1 = require("crypto");
|
|
51
|
-
var http_1 = require("http");
|
|
52
|
-
var socket_io_1 = require("socket.io");
|
|
53
|
-
var MatchTable_1 = require("./classes/MatchTable");
|
|
54
|
-
var User_1 = require("./classes/User");
|
|
55
|
-
var types_1 = require("../types");
|
|
56
|
-
var PORT = process.env.NODE_PORT || 4001;
|
|
57
|
-
var ORIGIN = process.env.NODE_ORIGIN || "http://localhost:3000";
|
|
58
|
-
var httpServer = (0, http_1.createServer)();
|
|
59
|
-
var io = new socket_io_1.Server(httpServer, {
|
|
60
|
-
cors: {
|
|
61
|
-
origin: ORIGIN,
|
|
62
|
-
methods: ["GET", "POST"],
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
var users = new Map(); // sessionId, user
|
|
66
|
-
var tables = new Map(); // sessionId, table
|
|
67
|
-
var turns = new Map(); // sessionId, play instance
|
|
68
|
-
var getUser = function (session) {
|
|
69
|
-
var user = users.get(session);
|
|
70
|
-
if (user) {
|
|
71
|
-
return user;
|
|
72
|
-
}
|
|
73
|
-
throw new Error("User not found");
|
|
74
|
-
};
|
|
75
|
-
var getTable = function (matchSessionId) {
|
|
76
|
-
var table = tables.get(matchSessionId);
|
|
77
|
-
if (table) {
|
|
78
|
-
return table;
|
|
79
|
-
}
|
|
80
|
-
throw new Error("Match Session not found");
|
|
81
|
-
};
|
|
82
|
-
io.on("connection", function (_socket) {
|
|
83
|
-
var socket = _socket;
|
|
84
|
-
console.log("New socket", socket.id);
|
|
85
|
-
socket.on("disconnect", function (_reason) {
|
|
86
|
-
try {
|
|
87
|
-
var user = getUser(socket.session);
|
|
88
|
-
user.matchSocketIds.forEach(function (sockets) { return sockets.delete(socket.id); });
|
|
89
|
-
}
|
|
90
|
-
catch (e) {
|
|
91
|
-
console.error(e);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
var getTableSockets = function (table, callback) {
|
|
95
|
-
return new Promise(function (resolve) { return __awaiter(void 0, void 0, void 0, function () {
|
|
96
|
-
var sockets, _i, sockets_1, playerSocket;
|
|
97
|
-
return __generator(this, function (_a) {
|
|
98
|
-
switch (_a.label) {
|
|
99
|
-
case 0: return [4 /*yield*/, io.sockets.adapter.fetchSockets({
|
|
100
|
-
rooms: new Set([table.matchSessionId]),
|
|
101
|
-
})];
|
|
102
|
-
case 1:
|
|
103
|
-
sockets = _a.sent();
|
|
104
|
-
_i = 0, sockets_1 = sockets;
|
|
105
|
-
_a.label = 2;
|
|
106
|
-
case 2:
|
|
107
|
-
if (!(_i < sockets_1.length)) return [3 /*break*/, 5];
|
|
108
|
-
playerSocket = sockets_1[_i];
|
|
109
|
-
return [4 /*yield*/, callback(playerSocket)];
|
|
110
|
-
case 3:
|
|
111
|
-
_a.sent();
|
|
112
|
-
_a.label = 4;
|
|
113
|
-
case 4:
|
|
114
|
-
_i++;
|
|
115
|
-
return [3 /*break*/, 2];
|
|
116
|
-
case 5:
|
|
117
|
-
resolve();
|
|
118
|
-
return [2 /*return*/];
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}); });
|
|
122
|
-
};
|
|
123
|
-
var emitMatchUpdate = function (table) { return __awaiter(void 0, void 0, void 0, function () {
|
|
124
|
-
return __generator(this, function (_a) {
|
|
125
|
-
switch (_a.label) {
|
|
126
|
-
case 0: return [4 /*yield*/, getTableSockets(table, function (playerSocket) { return __awaiter(void 0, void 0, void 0, function () {
|
|
127
|
-
return __generator(this, function (_a) {
|
|
128
|
-
playerSocket.emit(types_1.EServerEvent.UPDATE_MATCH, table.getPublicMatch(playerSocket.session));
|
|
129
|
-
return [2 /*return*/];
|
|
130
|
-
});
|
|
131
|
-
}); })];
|
|
132
|
-
case 1:
|
|
133
|
-
_a.sent();
|
|
134
|
-
return [2 /*return*/];
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
}); };
|
|
138
|
-
socket.on(types_1.EClientEvent.PING, function (msg) {
|
|
139
|
-
socket.emit(types_1.EServerEvent.PONG, msg);
|
|
140
|
-
});
|
|
141
|
-
/**
|
|
142
|
-
* Create Match
|
|
143
|
-
*/
|
|
144
|
-
socket.on(types_1.EClientEvent.CREATE_MATCH, function (callback) {
|
|
145
|
-
if (socket.session) {
|
|
146
|
-
try {
|
|
147
|
-
var user = getUser(socket.session);
|
|
148
|
-
var existingTable = tables.get(socket.session);
|
|
149
|
-
if (existingTable) {
|
|
150
|
-
return callback({
|
|
151
|
-
success: false,
|
|
152
|
-
match: existingTable.getPublicMatch(socket.session),
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
var table = (0, MatchTable_1.MatchTable)(socket.session);
|
|
156
|
-
table.lobby.addPlayer(user.id, socket.session, 0);
|
|
157
|
-
socket.join(socket.session);
|
|
158
|
-
addSocketToUser(socket.session, socket.id, table);
|
|
159
|
-
tables.set(socket.session, table);
|
|
160
|
-
return callback({ success: true, match: table.getPublicMatch(user.id) });
|
|
161
|
-
}
|
|
162
|
-
catch (e) {
|
|
163
|
-
console.error("ERROR", e);
|
|
164
|
-
return callback({ success: false, error: e });
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
callback({ success: false, error: new Error("Can't create match without an ID") });
|
|
168
|
-
});
|
|
169
|
-
var sendWaitingForPlay = function (table, play) { return __awaiter(void 0, void 0, void 0, function () {
|
|
170
|
-
return __generator(this, function (_a) {
|
|
171
|
-
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
172
|
-
return getTableSockets(table, function (playerSocket) { return __awaiter(void 0, void 0, void 0, function () {
|
|
173
|
-
var _a;
|
|
174
|
-
return __generator(this, function (_b) {
|
|
175
|
-
if (playerSocket.session && playerSocket.session === ((_a = play.player) === null || _a === void 0 ? void 0 : _a.session)) {
|
|
176
|
-
playerSocket.emit(types_1.EServerEvent.WAITING_PLAY, table.getPublicMatch(playerSocket.session), function (data) {
|
|
177
|
-
if (!data) {
|
|
178
|
-
return reject(new Error("Callback returned empty"));
|
|
179
|
-
}
|
|
180
|
-
var cardIdx = data.cardIdx, card = data.card, command = data.command;
|
|
181
|
-
if (cardIdx !== undefined && card) {
|
|
182
|
-
var playedCard = play.use(cardIdx, card);
|
|
183
|
-
if (playedCard) {
|
|
184
|
-
return resolve();
|
|
185
|
-
}
|
|
186
|
-
return reject(new Error("Invalid Card"));
|
|
187
|
-
}
|
|
188
|
-
if (command) {
|
|
189
|
-
var saidCommand = play.say(command);
|
|
190
|
-
if (saidCommand) {
|
|
191
|
-
return resolve();
|
|
192
|
-
}
|
|
193
|
-
return reject(new Error("Invalid Command"));
|
|
194
|
-
}
|
|
195
|
-
return reject(new Error("Invalid Callback response"));
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
return [2 /*return*/];
|
|
199
|
-
});
|
|
200
|
-
}); });
|
|
201
|
-
})];
|
|
202
|
-
});
|
|
203
|
-
}); };
|
|
204
|
-
var startMatch = function (tableId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
205
|
-
var table_1;
|
|
206
|
-
return __generator(this, function (_a) {
|
|
207
|
-
try {
|
|
208
|
-
table_1 = getTable(tableId);
|
|
209
|
-
if (table_1 && !table_1.lobby.gameLoop) {
|
|
210
|
-
table_1.lobby
|
|
211
|
-
.startMatch()
|
|
212
|
-
.onTurn(function (play) {
|
|
213
|
-
return new Promise(function (resolve) { return __awaiter(void 0, void 0, void 0, function () {
|
|
214
|
-
var session, user, e_1;
|
|
215
|
-
var _a;
|
|
216
|
-
return __generator(this, function (_b) {
|
|
217
|
-
switch (_b.label) {
|
|
218
|
-
case 0:
|
|
219
|
-
table_1.setCurrentPlayer(play.player);
|
|
220
|
-
turns.set(table_1.matchSessionId, { play: play, resolve: resolve });
|
|
221
|
-
_b.label = 1;
|
|
222
|
-
case 1:
|
|
223
|
-
_b.trys.push([1, 4, , 5]);
|
|
224
|
-
session = (_a = play.player) === null || _a === void 0 ? void 0 : _a.session;
|
|
225
|
-
if (!session || !play) {
|
|
226
|
-
throw new Error("Unexpected Error");
|
|
227
|
-
}
|
|
228
|
-
user = users.get(session);
|
|
229
|
-
if (!user) {
|
|
230
|
-
throw new Error("Unexpected Error");
|
|
231
|
-
}
|
|
232
|
-
return [4 /*yield*/, emitMatchUpdate(table_1)];
|
|
233
|
-
case 2:
|
|
234
|
-
_b.sent();
|
|
235
|
-
return [4 /*yield*/, sendWaitingForPlay(table_1, play)];
|
|
236
|
-
case 3:
|
|
237
|
-
_b.sent();
|
|
238
|
-
return [2 /*return*/, resolve()];
|
|
239
|
-
case 4:
|
|
240
|
-
e_1 = _b.sent();
|
|
241
|
-
console.error("ERROR", e_1);
|
|
242
|
-
return [3 /*break*/, 5];
|
|
243
|
-
case 5: return [2 /*return*/];
|
|
244
|
-
}
|
|
245
|
-
});
|
|
246
|
-
}); });
|
|
247
|
-
})
|
|
248
|
-
.onTruco(function (play) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
249
|
-
return [2 /*return*/];
|
|
250
|
-
}); }); })
|
|
251
|
-
.onWinner(function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
252
|
-
return [2 /*return*/];
|
|
253
|
-
}); }); })
|
|
254
|
-
.begin();
|
|
255
|
-
return [2 /*return*/, tables.set(socket.session, table_1)];
|
|
256
|
-
}
|
|
257
|
-
return [2 /*return*/, null];
|
|
258
|
-
}
|
|
259
|
-
catch (e) {
|
|
260
|
-
return [2 /*return*/, null];
|
|
261
|
-
}
|
|
262
|
-
return [2 /*return*/];
|
|
263
|
-
});
|
|
264
|
-
}); };
|
|
265
|
-
/**
|
|
266
|
-
* Start Match
|
|
267
|
-
*/
|
|
268
|
-
socket.on(types_1.EClientEvent.START_MATCH, function () {
|
|
269
|
-
if (socket.session && users.has(socket.session)) {
|
|
270
|
-
startMatch(socket.session);
|
|
271
|
-
}
|
|
272
|
-
});
|
|
273
|
-
var addSocketToUser = function (session, socketId, table) {
|
|
274
|
-
var _a;
|
|
275
|
-
var user = getUser(session);
|
|
276
|
-
var socketIds = (_a = user.matchSocketIds) === null || _a === void 0 ? void 0 : _a.get(table.matchSessionId);
|
|
277
|
-
if (socketIds && socketIds.has(socketId)) {
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
console.log("User got new match socket", { socketId: socketId, session: session, matchId: table.matchSessionId });
|
|
281
|
-
var currentMatchSockets = user.matchSocketIds.has(table.matchSessionId)
|
|
282
|
-
? user.matchSocketIds.get(table.matchSessionId)
|
|
283
|
-
: new Set();
|
|
284
|
-
users.set(session, __assign(__assign({}, user), { matchSocketIds: user.matchSocketIds.set(table.matchSessionId, currentMatchSockets.add(socketId)) }));
|
|
285
|
-
};
|
|
286
|
-
/**
|
|
287
|
-
* Join Match
|
|
288
|
-
*/
|
|
289
|
-
socket.on(types_1.EClientEvent.JOIN_MATCH, function (matchSessionId, teamIdx, callback) {
|
|
290
|
-
if (!socket.session) {
|
|
291
|
-
return callback({ success: false });
|
|
292
|
-
}
|
|
293
|
-
var user = getUser(socket.session);
|
|
294
|
-
var table = tables.get(matchSessionId);
|
|
295
|
-
if (table) {
|
|
296
|
-
try {
|
|
297
|
-
table.lobby.addPlayer(user.id || "satoshi", socket.session, teamIdx);
|
|
298
|
-
}
|
|
299
|
-
catch (e) {
|
|
300
|
-
console.error(e);
|
|
301
|
-
return callback({ success: false });
|
|
302
|
-
}
|
|
303
|
-
socket.join(matchSessionId);
|
|
304
|
-
addSocketToUser(socket.session, socket.id, table);
|
|
305
|
-
emitMatchUpdate(table);
|
|
306
|
-
return callback({ success: true, match: table.getPublicMatch(socket.session) });
|
|
307
|
-
}
|
|
308
|
-
callback({ success: false });
|
|
309
|
-
});
|
|
310
|
-
/**
|
|
311
|
-
* Get Match
|
|
312
|
-
*/
|
|
313
|
-
socket.on(types_1.EClientEvent.GET_MATCH, function (matchSessionId, callback) {
|
|
314
|
-
var table = tables.get(matchSessionId);
|
|
315
|
-
if (table) {
|
|
316
|
-
return callback({ success: true, match: table.getPublicMatch(socket.session) });
|
|
317
|
-
}
|
|
318
|
-
callback({ success: false });
|
|
319
|
-
});
|
|
320
|
-
/**
|
|
321
|
-
* Set Session
|
|
322
|
-
*/
|
|
323
|
-
socket.on(types_1.EClientEvent.SET_SESSION, function (session, id, currentMatchId, callback) {
|
|
324
|
-
var _a;
|
|
325
|
-
if (id === void 0) { id = "satoshi"; }
|
|
326
|
-
if (currentMatchId === void 0) { currentMatchId = null; }
|
|
327
|
-
if (callback === void 0) { callback = function () { }; }
|
|
328
|
-
var user = users.get(session);
|
|
329
|
-
if (user) {
|
|
330
|
-
var updatedUser = __assign(__assign({}, user), { id: id });
|
|
331
|
-
users.set(session, updatedUser);
|
|
332
|
-
socket.session = session;
|
|
333
|
-
var currentTable = currentMatchId ? tables.get(currentMatchId) : null;
|
|
334
|
-
if (currentTable) {
|
|
335
|
-
addSocketToUser(session, socket.id, currentTable);
|
|
336
|
-
socket.join(currentTable.matchSessionId);
|
|
337
|
-
if (currentTable.isSessionPlaying(session) &&
|
|
338
|
-
session === ((_a = currentTable.currentPlayer) === null || _a === void 0 ? void 0 : _a.session)) {
|
|
339
|
-
try {
|
|
340
|
-
var _b = turns.get(currentTable.matchSessionId) || {}, play = _b.play, resolve = _b.resolve;
|
|
341
|
-
if (!play) {
|
|
342
|
-
throw new Error("Unexpected Error");
|
|
343
|
-
}
|
|
344
|
-
sendWaitingForPlay(currentTable, play).then(resolve).catch(console.error);
|
|
345
|
-
}
|
|
346
|
-
catch (e) {
|
|
347
|
-
console.error("ERROR", e);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
else {
|
|
351
|
-
socket.emit(types_1.EServerEvent.UPDATE_MATCH, currentTable.getPublicMatch(session));
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
return callback({ success: true, session: session });
|
|
355
|
-
}
|
|
356
|
-
var newSession = (0, crypto_1.randomUUID)();
|
|
357
|
-
socket.session = newSession;
|
|
358
|
-
users.set(newSession, (0, User_1.User)(id));
|
|
359
|
-
callback({ success: true, session: newSession });
|
|
360
|
-
});
|
|
361
|
-
/**
|
|
362
|
-
* Set Player Ready
|
|
363
|
-
*/
|
|
364
|
-
socket.on(types_1.EClientEvent.SET_PLAYER_READY, function (matchSessionId, ready) {
|
|
365
|
-
try {
|
|
366
|
-
var table = getTable(matchSessionId);
|
|
367
|
-
var player = table.lobby.players.find(function (player) { return player && player.session === socket.session; });
|
|
368
|
-
if (player) {
|
|
369
|
-
player.setReady(ready);
|
|
370
|
-
emitMatchUpdate(table);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
catch (e) {
|
|
374
|
-
console.error("ERROR", e);
|
|
375
|
-
}
|
|
376
|
-
});
|
|
377
|
-
});
|
|
378
|
-
httpServer.listen(PORT);
|
|
379
|
-
console.log("Listening on", ORIGIN, PORT);
|
package/dist/server/types.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { Socket } from "socket.io";
|
|
2
|
-
import { ICard } from "../lib";
|
|
3
|
-
import { ECommand } from "../lib/types";
|
|
4
|
-
export declare enum EClientEvent {
|
|
5
|
-
PING = "PING",
|
|
6
|
-
PLAY = "PLAY",
|
|
7
|
-
CREATE_MATCH = "CREATE_MATCH",
|
|
8
|
-
GET_MATCH = "GET_MATCH",
|
|
9
|
-
JOIN_MATCH = "JOIN_MATCH",
|
|
10
|
-
START_MATCH = "START_MATCH",
|
|
11
|
-
SET_PLAYER_READY = "SET_PLAYER_READY",
|
|
12
|
-
SET_SESSION = "SET_SESSION"
|
|
13
|
-
}
|
|
14
|
-
export declare enum EServerEvent {
|
|
15
|
-
PONG = "PONG",
|
|
16
|
-
UPDATE_MATCH = "UPDATE_MATCH",
|
|
17
|
-
WAITING_PLAY = "WAITING_PLAY"
|
|
18
|
-
}
|
|
19
|
-
export interface TrucoshiSocket extends Socket {
|
|
20
|
-
session?: string;
|
|
21
|
-
}
|
|
22
|
-
export declare enum ETrucoshiMatchState {
|
|
23
|
-
UNREADY = 0,
|
|
24
|
-
STARTED = 1,
|
|
25
|
-
FINISHED = 2
|
|
26
|
-
}
|
|
27
|
-
export type IWaitingPlayData = {
|
|
28
|
-
cardIdx: number;
|
|
29
|
-
card: ICard;
|
|
30
|
-
command?: undefined;
|
|
31
|
-
} | {
|
|
32
|
-
cardIdx?: undefined;
|
|
33
|
-
card?: undefined;
|
|
34
|
-
command: ECommand;
|
|
35
|
-
};
|
|
36
|
-
export type IWaitingPlayCallback = (data: IWaitingPlayData) => void | null;
|
package/dist/server/types.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ETrucoshiMatchState = exports.EServerEvent = exports.EClientEvent = void 0;
|
|
4
|
-
var EClientEvent;
|
|
5
|
-
(function (EClientEvent) {
|
|
6
|
-
EClientEvent["PING"] = "PING";
|
|
7
|
-
EClientEvent["PLAY"] = "PLAY";
|
|
8
|
-
EClientEvent["CREATE_MATCH"] = "CREATE_MATCH";
|
|
9
|
-
EClientEvent["GET_MATCH"] = "GET_MATCH";
|
|
10
|
-
EClientEvent["JOIN_MATCH"] = "JOIN_MATCH";
|
|
11
|
-
EClientEvent["START_MATCH"] = "START_MATCH";
|
|
12
|
-
EClientEvent["SET_PLAYER_READY"] = "SET_PLAYER_READY";
|
|
13
|
-
EClientEvent["SET_SESSION"] = "SET_SESSION";
|
|
14
|
-
})(EClientEvent = exports.EClientEvent || (exports.EClientEvent = {}));
|
|
15
|
-
var EServerEvent;
|
|
16
|
-
(function (EServerEvent) {
|
|
17
|
-
EServerEvent["PONG"] = "PONG";
|
|
18
|
-
EServerEvent["UPDATE_MATCH"] = "UPDATE_MATCH";
|
|
19
|
-
EServerEvent["WAITING_PLAY"] = "WAITING_PLAY";
|
|
20
|
-
})(EServerEvent = exports.EServerEvent || (exports.EServerEvent = {}));
|
|
21
|
-
var ETrucoshiMatchState;
|
|
22
|
-
(function (ETrucoshiMatchState) {
|
|
23
|
-
ETrucoshiMatchState[ETrucoshiMatchState["UNREADY"] = 0] = "UNREADY";
|
|
24
|
-
ETrucoshiMatchState[ETrucoshiMatchState["STARTED"] = 1] = "STARTED";
|
|
25
|
-
ETrucoshiMatchState[ETrucoshiMatchState["FINISHED"] = 2] = "FINISHED";
|
|
26
|
-
})(ETrucoshiMatchState = exports.ETrucoshiMatchState || (exports.ETrucoshiMatchState = {}));
|
package/dist/test/autoplay.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/test/autoplay.js
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
var lib_1 = require("../lib");
|
|
40
|
-
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
41
|
-
var trucoshi;
|
|
42
|
-
return __generator(this, function (_a) {
|
|
43
|
-
trucoshi = (0, lib_1.Lobby)();
|
|
44
|
-
trucoshi.addPlayer("lukini", "lukini").setReady(true);
|
|
45
|
-
trucoshi.addPlayer("denoph", "denoph").setReady(true);
|
|
46
|
-
trucoshi.addPlayer("guada", "guada").setReady(true);
|
|
47
|
-
trucoshi.addPlayer("juli", "juli").setReady(true);
|
|
48
|
-
trucoshi.addPlayer("day", "day").setReady(true);
|
|
49
|
-
trucoshi.addPlayer("fran", "fran").setReady(true);
|
|
50
|
-
trucoshi
|
|
51
|
-
.startMatch()
|
|
52
|
-
.onTurn(function (play) { return __awaiter(void 0, void 0, void 0, function () {
|
|
53
|
-
var name, randomIdx, handString, card;
|
|
54
|
-
var _a;
|
|
55
|
-
return __generator(this, function (_b) {
|
|
56
|
-
if (!play.player) {
|
|
57
|
-
return [2 /*return*/];
|
|
58
|
-
}
|
|
59
|
-
name = (_a = play.player) === null || _a === void 0 ? void 0 : _a.id.toUpperCase();
|
|
60
|
-
console.log("=== Mano ".concat(play.handIdx, " === Ronda ").concat(play.roundIdx, " === Turno de ").concat(name, " ==="));
|
|
61
|
-
play.teams.map(function (team, id) {
|
|
62
|
-
return console.log("=== Team ".concat(id, " = ").concat(team.points.malas, " malas ").concat(team.points.buenas, " buenas ==="));
|
|
63
|
-
});
|
|
64
|
-
console.log(play.rounds && play.rounds.length
|
|
65
|
-
? play.rounds.map(function (round) {
|
|
66
|
-
return round.cards.length ? round.cards.map(function (c) { return [c.player.id, c.card]; }) : "";
|
|
67
|
-
})
|
|
68
|
-
: "");
|
|
69
|
-
randomIdx = Math.round(Math.random() * (play.player.hand.length - 1));
|
|
70
|
-
handString = JSON.stringify(play.player.hand);
|
|
71
|
-
card = play.use(randomIdx, play.player.hand[randomIdx]);
|
|
72
|
-
console.log("\n".concat(handString, "\nUsing ").concat(card));
|
|
73
|
-
console.log(play.rounds && play.rounds.length
|
|
74
|
-
? play.rounds.map(function (round) {
|
|
75
|
-
return round.cards.length ? round.cards.map(function (c) { return [c.player.id, c.card]; }) : "";
|
|
76
|
-
})
|
|
77
|
-
: "");
|
|
78
|
-
return [2 /*return*/];
|
|
79
|
-
});
|
|
80
|
-
}); })
|
|
81
|
-
.onWinner(function (winner, teams) { return __awaiter(void 0, void 0, void 0, function () {
|
|
82
|
-
return __generator(this, function (_a) {
|
|
83
|
-
console.log("\n");
|
|
84
|
-
teams.map(function (t, i) {
|
|
85
|
-
return console.log("Equipo ".concat(i, ": ").concat(t.players.map(function (p) { return " ".concat(p.id); }), " === ").concat(t.points.malas, " malas ").concat(t.points.buenas, " buenas"));
|
|
86
|
-
});
|
|
87
|
-
console.log("\nEquipo Ganador:".concat(winner.players.map(function (p) { return " ".concat(p.id); })));
|
|
88
|
-
return [2 /*return*/];
|
|
89
|
-
});
|
|
90
|
-
}); })
|
|
91
|
-
.begin();
|
|
92
|
-
return [2 /*return*/];
|
|
93
|
-
});
|
|
94
|
-
}); })();
|
package/dist/test/play.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|