trucoshi 0.0.16 → 0.0.17
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/dist/lib/classes/Deck.d.ts +2 -1
- package/dist/lib/classes/Deck.js +12 -1
- package/dist/lib/classes/Hand.js +2 -2
- package/dist/lib/classes/Round.js +2 -1
- package/dist/lib/types.d.ts +1 -0
- package/dist/server/classes/MatchTable.d.ts +1 -0
- package/dist/server/classes/MatchTable.js +1 -1
- package/dist/server/classes/User.d.ts +2 -2
- package/dist/server/classes/User.js +2 -2
- package/dist/server/index.js +110 -103
- package/package.json +1 -1
package/dist/lib/classes/Deck.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Deck = void 0;
|
|
3
|
+
exports.PlayedCard = exports.Deck = void 0;
|
|
4
4
|
var constants_1 = require("../constants");
|
|
5
5
|
var utils_1 = require("../utils");
|
|
6
6
|
function Deck() {
|
|
@@ -25,3 +25,14 @@ function Deck() {
|
|
|
25
25
|
return deck;
|
|
26
26
|
}
|
|
27
27
|
exports.Deck = Deck;
|
|
28
|
+
function PlayedCard(player, card) {
|
|
29
|
+
var pc = {
|
|
30
|
+
player: player,
|
|
31
|
+
card: card,
|
|
32
|
+
get key() {
|
|
33
|
+
return card + player.session;
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
return pc;
|
|
37
|
+
}
|
|
38
|
+
exports.PlayedCard = PlayedCard;
|
package/dist/lib/classes/Hand.js
CHANGED
|
@@ -30,6 +30,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
30
30
|
exports.Hand = void 0;
|
|
31
31
|
var types_1 = require("../types");
|
|
32
32
|
var utils_1 = require("../utils");
|
|
33
|
+
var Deck_1 = require("./Deck");
|
|
33
34
|
var Play_1 = require("./Play");
|
|
34
35
|
var Round_1 = require("./Round");
|
|
35
36
|
var Truco_1 = require("./Truco");
|
|
@@ -72,7 +73,6 @@ function Hand(match, deck, idx) {
|
|
|
72
73
|
if (!(hand.state === types_1.EHandState.WAITING_FOR_TRUCO_ANSWER)) return [3 /*break*/, 6];
|
|
73
74
|
value = hand.truco.getNextPlayer().value;
|
|
74
75
|
if (!(value && value.currentPlayer)) return [3 /*break*/, 5];
|
|
75
|
-
console.log({ value: value.currentPlayer });
|
|
76
76
|
hand.setCurrentPlayer(value.currentPlayer);
|
|
77
77
|
return [4 /*yield*/, hand];
|
|
78
78
|
case 4:
|
|
@@ -181,7 +181,7 @@ function Hand(match, deck, idx) {
|
|
|
181
181
|
var card = player.useCard(idx);
|
|
182
182
|
if (card) {
|
|
183
183
|
hand.nextTurn();
|
|
184
|
-
return round.use(
|
|
184
|
+
return round.use((0, Deck_1.PlayedCard)(player, card));
|
|
185
185
|
}
|
|
186
186
|
return null;
|
|
187
187
|
},
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Round = void 0;
|
|
4
4
|
var utils_1 = require("../utils");
|
|
5
|
+
var Deck_1 = require("./Deck");
|
|
5
6
|
function Round(turn) {
|
|
6
7
|
var round = {
|
|
7
8
|
turn: turn,
|
|
@@ -24,7 +25,7 @@ function Round(turn) {
|
|
|
24
25
|
round.highest = value;
|
|
25
26
|
round.winner = player;
|
|
26
27
|
}
|
|
27
|
-
round.cards.push(
|
|
28
|
+
round.cards.push((0, Deck_1.PlayedCard)(player, card));
|
|
28
29
|
return card;
|
|
29
30
|
},
|
|
30
31
|
};
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { IPublicPlayer } from "../../lib/classes/Player";
|
|
|
2
2
|
import { IPublicTeam } from "../../lib/classes/Team";
|
|
3
3
|
import { ILobby, IPlayedCard } from "../../lib/types";
|
|
4
4
|
export interface IPublicMatch {
|
|
5
|
+
matchSessionId: string;
|
|
5
6
|
teams: Array<IPublicTeam>;
|
|
6
7
|
players: Array<IPublicPlayer>;
|
|
7
8
|
rounds: IPlayedCard[][];
|
|
@@ -42,7 +42,7 @@ function MatchTable(matchSessionId, teamSize) {
|
|
|
42
42
|
var lastHand = (((_a = lobby.gameLoop) === null || _a === void 0 ? void 0 : _a.hands.length) || 1) - 1;
|
|
43
43
|
var rounds = (_c = (_b = lobby.gameLoop) === null || _b === void 0 ? void 0 : _b.hands[lastHand]) === null || _c === void 0 ? void 0 : _c.rounds.map(function (round) { return round.cards; });
|
|
44
44
|
return {
|
|
45
|
-
matchSessionId: matchSessionId,
|
|
45
|
+
matchSessionId: matchTable.matchSessionId,
|
|
46
46
|
state: matchTable.state,
|
|
47
47
|
teams: [],
|
|
48
48
|
players: lobby.players.map(function (player) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.User = void 0;
|
|
4
|
-
function User(id
|
|
4
|
+
function User(id) {
|
|
5
5
|
var user = {
|
|
6
6
|
id: id,
|
|
7
|
-
|
|
7
|
+
matchSocketIds: new Map()
|
|
8
8
|
};
|
|
9
9
|
return user;
|
|
10
10
|
}
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
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
|
+
};
|
|
2
13
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
14
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
15
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -69,9 +80,10 @@ var getTable = function (matchSessionId) {
|
|
|
69
80
|
};
|
|
70
81
|
io.on("connection", function (_socket) {
|
|
71
82
|
var socket = _socket;
|
|
83
|
+
console.log("New socket", socket.id);
|
|
72
84
|
var getTableSockets = function (table, callback) {
|
|
73
85
|
return new Promise(function (resolve) { return __awaiter(void 0, void 0, void 0, function () {
|
|
74
|
-
var sockets, _i, sockets_1,
|
|
86
|
+
var sockets, _i, sockets_1, playerSocket;
|
|
75
87
|
return __generator(this, function (_a) {
|
|
76
88
|
switch (_a.label) {
|
|
77
89
|
case 0: return [4 /*yield*/, io.sockets.adapter.fetchSockets({
|
|
@@ -83,8 +95,8 @@ io.on("connection", function (_socket) {
|
|
|
83
95
|
_a.label = 2;
|
|
84
96
|
case 2:
|
|
85
97
|
if (!(_i < sockets_1.length)) return [3 /*break*/, 5];
|
|
86
|
-
|
|
87
|
-
return [4 /*yield*/, callback(
|
|
98
|
+
playerSocket = sockets_1[_i];
|
|
99
|
+
return [4 /*yield*/, callback(playerSocket)];
|
|
88
100
|
case 3:
|
|
89
101
|
_a.sent();
|
|
90
102
|
_a.label = 4;
|
|
@@ -98,14 +110,21 @@ io.on("connection", function (_socket) {
|
|
|
98
110
|
});
|
|
99
111
|
}); });
|
|
100
112
|
};
|
|
101
|
-
var emitMatchUpdate = function (table) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
113
|
+
var emitMatchUpdate = function (table) { return __awaiter(void 0, void 0, void 0, function () {
|
|
114
|
+
return __generator(this, function (_a) {
|
|
115
|
+
switch (_a.label) {
|
|
116
|
+
case 0: return [4 /*yield*/, getTableSockets(table, function (playerSocket) { return __awaiter(void 0, void 0, void 0, function () {
|
|
117
|
+
return __generator(this, function (_a) {
|
|
118
|
+
playerSocket.emit(types_1.EServerEvent.UPDATE_MATCH, table.getPublicMatch(playerSocket.session));
|
|
119
|
+
return [2 /*return*/];
|
|
120
|
+
});
|
|
121
|
+
}); })];
|
|
122
|
+
case 1:
|
|
123
|
+
_a.sent();
|
|
124
|
+
return [2 /*return*/];
|
|
106
125
|
}
|
|
107
126
|
});
|
|
108
|
-
};
|
|
127
|
+
}); };
|
|
109
128
|
socket.on(types_1.EClientEvent.PING, function (msg) {
|
|
110
129
|
socket.emit(types_1.EServerEvent.PONG, msg);
|
|
111
130
|
});
|
|
@@ -125,6 +144,8 @@ io.on("connection", function (_socket) {
|
|
|
125
144
|
}
|
|
126
145
|
var table = (0, MatchTable_1.MatchTable)(socket.session);
|
|
127
146
|
table.lobby.addPlayer(user.id, socket.session);
|
|
147
|
+
socket.join(socket.session);
|
|
148
|
+
addSocketToUser(socket.session, socket.id, table);
|
|
128
149
|
tables.set(socket.session, table);
|
|
129
150
|
return callback({ success: true, match: table.getPublicMatch(user.id) });
|
|
130
151
|
}
|
|
@@ -135,57 +156,51 @@ io.on("connection", function (_socket) {
|
|
|
135
156
|
}
|
|
136
157
|
callback({ success: false, error: new Error("Can't create match without an ID") });
|
|
137
158
|
});
|
|
138
|
-
var sendWaitingForPlay = function (table,
|
|
159
|
+
var sendWaitingForPlay = function (table, play) { return __awaiter(void 0, void 0, void 0, function () {
|
|
139
160
|
return __generator(this, function (_a) {
|
|
140
161
|
switch (_a.label) {
|
|
141
|
-
case 0: return [4 /*yield*/, getTableSockets(table, function (playerSocket) {
|
|
142
|
-
return
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
var cardIdx = _a.cardIdx, command = _a.command;
|
|
155
|
-
if (cardIdx !== undefined) {
|
|
156
|
-
var playedCard = play.use(cardIdx);
|
|
157
|
-
if (playedCard) {
|
|
158
|
-
return resolve();
|
|
159
|
-
}
|
|
160
|
-
return console.error("ERROR", new Error("Couldnt play card"));
|
|
162
|
+
case 0: return [4 /*yield*/, getTableSockets(table, function (playerSocket) {
|
|
163
|
+
return new Promise(function (resolve) {
|
|
164
|
+
var _a;
|
|
165
|
+
if (playerSocket.session && playerSocket.session === ((_a = play.player) === null || _a === void 0 ? void 0 : _a.session)) {
|
|
166
|
+
playerSocket.emit(types_1.EServerEvent.WAITING_PLAY, table.getPublicMatch(playerSocket.session), function (data) {
|
|
167
|
+
if (!data) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
var cardIdx = data.cardIdx, command = data.command;
|
|
171
|
+
if (cardIdx !== undefined) {
|
|
172
|
+
var playedCard = play.use(cardIdx);
|
|
173
|
+
if (playedCard) {
|
|
174
|
+
return resolve();
|
|
161
175
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
return
|
|
176
|
+
return console.error("ERROR", new Error("Couldnt play card"));
|
|
177
|
+
}
|
|
178
|
+
if (command) {
|
|
179
|
+
var saidCommand = play.say(command);
|
|
180
|
+
if (saidCommand) {
|
|
181
|
+
return resolve();
|
|
168
182
|
}
|
|
169
|
-
return console.error("ERROR", new Error("
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
183
|
+
return console.error("ERROR", new Error("Couldnt say command"));
|
|
184
|
+
}
|
|
185
|
+
return console.error("ERROR", new Error("Play callback didn't have data"));
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
resolve();
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
})];
|
|
193
|
+
case 1:
|
|
178
194
|
_a.sent();
|
|
179
195
|
return [2 /*return*/];
|
|
180
196
|
}
|
|
181
197
|
});
|
|
182
198
|
}); };
|
|
183
|
-
var startMatch = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
184
|
-
var
|
|
199
|
+
var startMatch = function (tableId) { return __awaiter(void 0, void 0, void 0, function () {
|
|
200
|
+
var table_1;
|
|
185
201
|
return __generator(this, function (_a) {
|
|
186
202
|
try {
|
|
187
|
-
|
|
188
|
-
table_1 = getTable(tableId_1);
|
|
203
|
+
table_1 = getTable(tableId);
|
|
189
204
|
if (table_1 && !table_1.lobby.gameLoop) {
|
|
190
205
|
table_1.setState(MatchTable_1.EMatchTableState.STARTED);
|
|
191
206
|
table_1.lobby
|
|
@@ -198,28 +213,30 @@ io.on("connection", function (_socket) {
|
|
|
198
213
|
switch (_b.label) {
|
|
199
214
|
case 0:
|
|
200
215
|
table_1.setCurrentPlayer(play.player);
|
|
201
|
-
turns.set(
|
|
216
|
+
turns.set(table_1.matchSessionId, { play: play, resolve: resolve });
|
|
202
217
|
_b.label = 1;
|
|
203
218
|
case 1:
|
|
204
|
-
_b.trys.push([1,
|
|
219
|
+
_b.trys.push([1, 4, , 5]);
|
|
205
220
|
session = (_a = play.player) === null || _a === void 0 ? void 0 : _a.session;
|
|
206
|
-
if (!session) {
|
|
221
|
+
if (!session || !play) {
|
|
207
222
|
throw new Error("Unexpected Error");
|
|
208
223
|
}
|
|
209
224
|
user = users.get(session);
|
|
210
225
|
if (!user) {
|
|
211
226
|
throw new Error("Unexpected Error");
|
|
212
227
|
}
|
|
213
|
-
return [4 /*yield*/,
|
|
228
|
+
return [4 /*yield*/, emitMatchUpdate(table_1)];
|
|
214
229
|
case 2:
|
|
215
230
|
_b.sent();
|
|
216
|
-
|
|
217
|
-
return [3 /*break*/, 4];
|
|
231
|
+
return [4 /*yield*/, sendWaitingForPlay(table_1, play)];
|
|
218
232
|
case 3:
|
|
233
|
+
_b.sent();
|
|
234
|
+
return [2 /*return*/, resolve()];
|
|
235
|
+
case 4:
|
|
219
236
|
e_1 = _b.sent();
|
|
220
237
|
console.error("ERROR", e_1);
|
|
221
|
-
return [3 /*break*/,
|
|
222
|
-
case
|
|
238
|
+
return [3 /*break*/, 5];
|
|
239
|
+
case 5: return [2 /*return*/];
|
|
223
240
|
}
|
|
224
241
|
});
|
|
225
242
|
}); });
|
|
@@ -246,9 +263,17 @@ io.on("connection", function (_socket) {
|
|
|
246
263
|
*/
|
|
247
264
|
socket.on(types_1.EClientEvent.START_MATCH, function () {
|
|
248
265
|
if (socket.session && users.has(socket.session)) {
|
|
249
|
-
startMatch();
|
|
266
|
+
startMatch(socket.session);
|
|
250
267
|
}
|
|
251
268
|
});
|
|
269
|
+
var addSocketToUser = function (session, socketId, table) {
|
|
270
|
+
var user = getUser(session);
|
|
271
|
+
console.log("User got new match socket", { socketId: socketId, session: session, matchId: table.matchSessionId });
|
|
272
|
+
var currentMatchSockets = user.matchSocketIds.has(table.matchSessionId)
|
|
273
|
+
? user.matchSocketIds.get(table.matchSessionId)
|
|
274
|
+
: new Set();
|
|
275
|
+
users.set(session, __assign(__assign({}, user), { matchSocketIds: user.matchSocketIds.set(table.matchSessionId, currentMatchSockets.add(socketId)) }));
|
|
276
|
+
};
|
|
252
277
|
/**
|
|
253
278
|
* Join Match
|
|
254
279
|
*/
|
|
@@ -259,7 +284,9 @@ io.on("connection", function (_socket) {
|
|
|
259
284
|
var user = getUser(socket.session);
|
|
260
285
|
var table = tables.get(matchSessionId);
|
|
261
286
|
if (table && table.state === MatchTable_1.EMatchTableState.UNREADY) {
|
|
287
|
+
socket.join(matchSessionId);
|
|
262
288
|
table.lobby.addPlayer(user.id || "satoshi", socket.session);
|
|
289
|
+
addSocketToUser(socket.session, socket.id, table);
|
|
263
290
|
emitMatchUpdate(table);
|
|
264
291
|
return callback({ success: true, match: table.getPublicMatch(socket.session) });
|
|
265
292
|
}
|
|
@@ -278,58 +305,41 @@ io.on("connection", function (_socket) {
|
|
|
278
305
|
/**
|
|
279
306
|
* Set Session
|
|
280
307
|
*/
|
|
281
|
-
socket.on(types_1.EClientEvent.SET_SESSION, function (session, id, callback) {
|
|
308
|
+
socket.on(types_1.EClientEvent.SET_SESSION, function (session, id, currentMatchId, callback) {
|
|
309
|
+
var _a;
|
|
282
310
|
if (id === void 0) { id = "satoshi"; }
|
|
311
|
+
if (currentMatchId === void 0) { currentMatchId = null; }
|
|
312
|
+
if (callback === void 0) { callback = function () { }; }
|
|
283
313
|
var user = users.get(session);
|
|
284
314
|
if (user) {
|
|
285
|
-
var updatedUser = {
|
|
286
|
-
id: id,
|
|
287
|
-
socketId: socket.id,
|
|
288
|
-
};
|
|
315
|
+
var updatedUser = __assign(__assign({}, user), { id: id });
|
|
289
316
|
users.set(session, updatedUser);
|
|
290
317
|
socket.session = session;
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
_d.trys.push([1, 3, , 4]);
|
|
303
|
-
_a = turns.get(id) || {}, play = _a.play, resolve = _a.resolve;
|
|
304
|
-
session_1 = (_c = play === null || play === void 0 ? void 0 : play.player) === null || _c === void 0 ? void 0 : _c.session;
|
|
305
|
-
if (!play || !session_1) {
|
|
306
|
-
throw new Error("Unexpected Error");
|
|
307
|
-
}
|
|
308
|
-
user_1 = users.get(session_1);
|
|
309
|
-
if (!user_1) {
|
|
310
|
-
throw new Error("Unexpected Error");
|
|
311
|
-
}
|
|
312
|
-
return [4 /*yield*/, sendWaitingForPlay(table, session_1, play)];
|
|
313
|
-
case 2:
|
|
314
|
-
_d.sent();
|
|
315
|
-
resolve === null || resolve === void 0 ? void 0 : resolve();
|
|
316
|
-
return [3 /*break*/, 4];
|
|
317
|
-
case 3:
|
|
318
|
-
e_2 = _d.sent();
|
|
319
|
-
console.error("ERROR", e_2);
|
|
320
|
-
return [3 /*break*/, 4];
|
|
321
|
-
case 4:
|
|
322
|
-
socket.emit(types_1.EServerEvent.UPDATE_MATCH, table.getPublicMatch(session));
|
|
323
|
-
_d.label = 5;
|
|
324
|
-
case 5: return [2 /*return*/];
|
|
318
|
+
var currentTable = currentMatchId ? tables.get(currentMatchId) : null;
|
|
319
|
+
if (currentTable && currentTable.isSessionPlaying(session)) {
|
|
320
|
+
addSocketToUser(session, socket.id, currentTable);
|
|
321
|
+
socket.join(currentTable.matchSessionId);
|
|
322
|
+
if (session === ((_a = currentTable.currentPlayer) === null || _a === void 0 ? void 0 : _a.session)) {
|
|
323
|
+
try {
|
|
324
|
+
var _b = turns.get(currentTable.matchSessionId) || {}, play = _b.play, resolve = _b.resolve;
|
|
325
|
+
if (!play) {
|
|
326
|
+
throw new Error("Unexpected Error");
|
|
327
|
+
}
|
|
328
|
+
sendWaitingForPlay(currentTable, play).then(resolve);
|
|
325
329
|
}
|
|
326
|
-
|
|
327
|
-
|
|
330
|
+
catch (e) {
|
|
331
|
+
console.error("ERROR", e);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
socket.emit(types_1.EServerEvent.UPDATE_MATCH, currentTable.getPublicMatch(session));
|
|
336
|
+
}
|
|
337
|
+
}
|
|
328
338
|
return callback({ success: true, session: session });
|
|
329
339
|
}
|
|
330
340
|
var newSession = (0, crypto_1.randomUUID)();
|
|
331
341
|
socket.session = newSession;
|
|
332
|
-
users.set(newSession, (0, User_1.User)(id
|
|
342
|
+
users.set(newSession, (0, User_1.User)(id));
|
|
333
343
|
callback({ success: true, session: newSession });
|
|
334
344
|
});
|
|
335
345
|
/**
|
|
@@ -341,9 +351,6 @@ io.on("connection", function (_socket) {
|
|
|
341
351
|
var player = table.lobby.players.find(function (player) { return player.session === socket.session; });
|
|
342
352
|
if (player) {
|
|
343
353
|
player.setReady(ready);
|
|
344
|
-
if (ready) {
|
|
345
|
-
socket.join(matchSessionId);
|
|
346
|
-
}
|
|
347
354
|
emitMatchUpdate(table);
|
|
348
355
|
}
|
|
349
356
|
}
|