trucoshi 9.3.0 → 10.0.0-rc2
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/events.d.ts +16 -3
- package/dist/events.js +6 -1
- package/dist/lib/classes/Deck.js +1 -1
- package/dist/lib/constants.d.ts +2 -0
- package/dist/lib/constants.js +2 -0
- package/dist/lib/utils.d.ts +2 -1
- package/dist/lib/utils.js +7 -0
- package/dist/types.d.ts +7 -2
- package/dist/types.js +1 -0
- package/package.json +1 -1
package/dist/events.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { EMatchState } from "@trucoshi/prisma";
|
|
2
1
|
import { SocketError } from "./server";
|
|
3
|
-
import { IAccountDetails, IChatMessage, ILobbyOptions, IMatchDetails, IPlayerRanking, IPublicChatRoom, IPublicMatch, IPublicMatchInfo, IPublicMatchStats, ITrucoshiStats, IUserData, IWaitingPlayData, IWaitingSayData } from "./types";
|
|
2
|
+
import { EMatchState, IAccountDetails, IChatMessage, ILobbyOptions, IMatchDetails, IPlayerRanking, IPublicChatRoom, IPublicMatch, IPublicMatchInfo, IPublicMatchStats, ITrucoshiStats, IUserData, IWaitingPlayData, IWaitingSayData } from "./types";
|
|
4
3
|
export type IEventCallback<T = {}> = (args: {
|
|
5
4
|
success: boolean;
|
|
6
5
|
error?: SocketError;
|
|
@@ -16,6 +15,9 @@ export declare enum EServerEvent {
|
|
|
16
15
|
KICK_PLAYER = "PLAYER_KICKED",
|
|
17
16
|
UPDATE_ACTIVE_MATCHES = "UPDATE_ACTIVE_MATCHES",
|
|
18
17
|
UPDATE_PUBLIC_MATCHES = "UPDATE_PUBLIC_MATCHES",
|
|
18
|
+
PAUSE_MATCH_REQUEST = "PAUSE_MATCH_REQUEST",
|
|
19
|
+
UNPAUSE_STARTED = "UNPAUSE_STARTED",
|
|
20
|
+
PLAY_AGAIN_REQUEST = "PLAY_AGAIN_REQUEST",
|
|
19
21
|
WAITING_POSSIBLE_SAY = "WAITING_POSSIBLE_SAY",
|
|
20
22
|
UPDATE_CHAT = "UPDAET_CHAT",
|
|
21
23
|
UPDATE_STATS = "UPDATE_STATS"
|
|
@@ -28,6 +30,9 @@ export interface ServerToClientEvents {
|
|
|
28
30
|
[EServerEvent.UPDATE_ACTIVE_MATCHES]: (activeMatches: IPublicMatchInfo[]) => void;
|
|
29
31
|
[EServerEvent.UPDATE_PUBLIC_MATCHES]: (publicMatches: IPublicMatchInfo[]) => void;
|
|
30
32
|
[EServerEvent.UPDATE_MATCH]: (match: IPublicMatch, stats?: IPublicMatchStats, callback?: () => void) => void;
|
|
33
|
+
[EServerEvent.PAUSE_MATCH_REQUEST]: (roomId: string, fromOpponent: boolean, requestExpiresAt: number, answer: (answer: boolean) => void) => void;
|
|
34
|
+
[EServerEvent.PLAY_AGAIN_REQUEST]: (roomId: string, requestExpiresAt: number) => void;
|
|
35
|
+
[EServerEvent.UNPAUSE_STARTED]: (roomId: string, unpausesAt: number) => void;
|
|
31
36
|
[EServerEvent.KICK_PLAYER]: (match: IPublicMatch, session: string, reason?: string) => void;
|
|
32
37
|
[EServerEvent.MATCH_DELETED]: (matchSessionId: string) => void;
|
|
33
38
|
[EServerEvent.SET_SESSION]: (userData: IUserData, serverVersion: string, activeMatches: Array<IPublicMatchInfo>) => void;
|
|
@@ -44,10 +49,12 @@ export declare enum EClientEvent {
|
|
|
44
49
|
SET_MATCH_OPTIONS = "SET_MATCH_OPTIONS",
|
|
45
50
|
LIST_MATCHES = "LIST_MATCHES",
|
|
46
51
|
LIST_RANKING = "LIST_RANKING",
|
|
52
|
+
SET_PLAYER_READY = "SET_PLAYER_READY",
|
|
47
53
|
JOIN_MATCH = "JOIN_MATCH",
|
|
48
54
|
START_MATCH = "START_MATCH",
|
|
55
|
+
PAUSE_MATCH = "PAUSE_MATCH",
|
|
56
|
+
PLAY_AGAIN = "PLAY_AGAIN",
|
|
49
57
|
ADD_BOT = "ADD_BOT",
|
|
50
|
-
SET_PLAYER_READY = "SET_PLAYER_READY",
|
|
51
58
|
FETCH_MATCH = "FETCH_MATCH",
|
|
52
59
|
FETCH_CHAT_ROOM = "FETCH_CHAT_ROOM",
|
|
53
60
|
KICK_PLAYER = "KICK_PLAYER",
|
|
@@ -88,6 +95,12 @@ export interface ClientToServerEvents {
|
|
|
88
95
|
matchSessionId?: string;
|
|
89
96
|
}>) => void;
|
|
90
97
|
[EClientEvent.KICK_PLAYER]: (matchSessionId: string, key: string, callback: IEventCallback) => void;
|
|
98
|
+
[EClientEvent.PAUSE_MATCH]: (matchSessionId: string, pause: boolean, callback?: IEventCallback<{
|
|
99
|
+
paused?: boolean;
|
|
100
|
+
}>) => void;
|
|
101
|
+
[EClientEvent.PLAY_AGAIN]: (matchSessionId: string, callback?: IEventCallback<{
|
|
102
|
+
newMatchSessionId?: string;
|
|
103
|
+
}>) => void;
|
|
91
104
|
[EClientEvent.FETCH_MATCH]: (matchSessionId: string, callback: IEventCallback<{
|
|
92
105
|
match: IPublicMatch | null;
|
|
93
106
|
}>) => void;
|
package/dist/events.js
CHANGED
|
@@ -10,6 +10,9 @@ export var EServerEvent;
|
|
|
10
10
|
EServerEvent["KICK_PLAYER"] = "PLAYER_KICKED";
|
|
11
11
|
EServerEvent["UPDATE_ACTIVE_MATCHES"] = "UPDATE_ACTIVE_MATCHES";
|
|
12
12
|
EServerEvent["UPDATE_PUBLIC_MATCHES"] = "UPDATE_PUBLIC_MATCHES";
|
|
13
|
+
EServerEvent["PAUSE_MATCH_REQUEST"] = "PAUSE_MATCH_REQUEST";
|
|
14
|
+
EServerEvent["UNPAUSE_STARTED"] = "UNPAUSE_STARTED";
|
|
15
|
+
EServerEvent["PLAY_AGAIN_REQUEST"] = "PLAY_AGAIN_REQUEST";
|
|
13
16
|
EServerEvent["WAITING_POSSIBLE_SAY"] = "WAITING_POSSIBLE_SAY";
|
|
14
17
|
EServerEvent["UPDATE_CHAT"] = "UPDAET_CHAT";
|
|
15
18
|
EServerEvent["UPDATE_STATS"] = "UPDATE_STATS";
|
|
@@ -24,10 +27,12 @@ export var EClientEvent;
|
|
|
24
27
|
EClientEvent["SET_MATCH_OPTIONS"] = "SET_MATCH_OPTIONS";
|
|
25
28
|
EClientEvent["LIST_MATCHES"] = "LIST_MATCHES";
|
|
26
29
|
EClientEvent["LIST_RANKING"] = "LIST_RANKING";
|
|
30
|
+
EClientEvent["SET_PLAYER_READY"] = "SET_PLAYER_READY";
|
|
27
31
|
EClientEvent["JOIN_MATCH"] = "JOIN_MATCH";
|
|
28
32
|
EClientEvent["START_MATCH"] = "START_MATCH";
|
|
33
|
+
EClientEvent["PAUSE_MATCH"] = "PAUSE_MATCH";
|
|
34
|
+
EClientEvent["PLAY_AGAIN"] = "PLAY_AGAIN";
|
|
29
35
|
EClientEvent["ADD_BOT"] = "ADD_BOT";
|
|
30
|
-
EClientEvent["SET_PLAYER_READY"] = "SET_PLAYER_READY";
|
|
31
36
|
EClientEvent["FETCH_MATCH"] = "FETCH_MATCH";
|
|
32
37
|
EClientEvent["FETCH_CHAT_ROOM"] = "FETCH_CHAT_ROOM";
|
|
33
38
|
EClientEvent["KICK_PLAYER"] = "KICK_PLAYER";
|
package/dist/lib/classes/Deck.js
CHANGED
|
@@ -60,7 +60,7 @@ export function dealCards(table, deck) {
|
|
|
60
60
|
if (cheat_lots_of_flowers) {
|
|
61
61
|
deck.shuffle(players[0].idx);
|
|
62
62
|
for (const player of players) {
|
|
63
|
-
if (Math.random() > 0.
|
|
63
|
+
if (Math.random() > 0.33) {
|
|
64
64
|
const first = deck.takeCard();
|
|
65
65
|
const second = deck.pick(deck.cards.find((c) => c.charAt(1) === first.charAt(1)));
|
|
66
66
|
const third = deck.pick(deck.cards.find((c) => c.charAt(1) === first.charAt(1)));
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { ICard } from "../types";
|
|
|
2
2
|
export declare const PLAYER_ABANDON_TIMEOUT: number;
|
|
3
3
|
export declare const PLAYER_TURN_TIMEOUT: number;
|
|
4
4
|
export declare const PREVIOUS_HAND_ACK_TIMEOUT: number;
|
|
5
|
+
export declare const PAUSE_REQUEST_TIMEOUT: number;
|
|
6
|
+
export declare const UNPAUSE_TIME: number;
|
|
5
7
|
export declare const CARDS: {
|
|
6
8
|
"1e": number;
|
|
7
9
|
"1b": number;
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export const PLAYER_ABANDON_TIMEOUT = 1000 * 60 * 2;
|
|
2
2
|
export const PLAYER_TURN_TIMEOUT = 1000 * 30;
|
|
3
3
|
export const PREVIOUS_HAND_ACK_TIMEOUT = 1000 * 3;
|
|
4
|
+
export const PAUSE_REQUEST_TIMEOUT = 1000 * 30;
|
|
5
|
+
export const UNPAUSE_TIME = 1000 * 10;
|
|
4
6
|
export const CARDS = {
|
|
5
7
|
"1e": 13,
|
|
6
8
|
"1b": 12,
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { IHand } from "../truco";
|
|
2
|
-
import { ICard } from "../types";
|
|
2
|
+
import { ICard, IPlayer, ITeam } from "../types";
|
|
3
3
|
import memoize from "lodash.memoize";
|
|
4
4
|
export declare const memoizeMinute: typeof memoize;
|
|
5
5
|
export declare function getMaxNumberIndex<T = number>(array: Array<T>): number;
|
|
6
6
|
export declare function getMinNumberIndex<T = number>(array: Array<T>): number;
|
|
7
7
|
export declare function getCardValue(card: ICard): number;
|
|
8
|
+
export declare function getOpponentTeam(teamIdx: 0 | 1 | number | Pick<ITeam, "id"> | Pick<IPlayer, "teamIdx"> | null): 0 | 1;
|
|
8
9
|
export declare function checkHandWinner(hand: IHand, forehandTeamIdx: 0 | 1): null | 0 | 1;
|
package/dist/lib/utils.js
CHANGED
|
@@ -20,6 +20,13 @@ export function getMinNumberIndex(array) {
|
|
|
20
20
|
export function getCardValue(card) {
|
|
21
21
|
return CARDS[card] !== undefined ? CARDS[card] : -2;
|
|
22
22
|
}
|
|
23
|
+
export function getOpponentTeam(teamIdx) {
|
|
24
|
+
if (teamIdx === null) {
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
const idx = typeof teamIdx === "number" ? teamIdx : "teamIdx" in teamIdx ? teamIdx.teamIdx : teamIdx.id;
|
|
28
|
+
return Number(!idx);
|
|
29
|
+
}
|
|
23
30
|
export function checkHandWinner(hand, forehandTeamIdx) {
|
|
24
31
|
var _a, _b, _c, _d;
|
|
25
32
|
const roundsWon = {
|
package/dist/types.d.ts
CHANGED
|
@@ -11,7 +11,8 @@ export declare enum EMatchState {
|
|
|
11
11
|
UNREADY = "UNREADY",
|
|
12
12
|
READY = "READY",
|
|
13
13
|
STARTED = "STARTED",
|
|
14
|
-
FINISHED = "FINISHED"
|
|
14
|
+
FINISHED = "FINISHED",
|
|
15
|
+
PAUSED = "PAUSED"
|
|
15
16
|
}
|
|
16
17
|
export type IPlayerRanking = Omit<UserStats, "id" | "satsBet" | "satsWon" | "satsLost"> & Pick<User, "name" | "avatarUrl">;
|
|
17
18
|
export interface IMatchDetails extends Match {
|
|
@@ -304,6 +305,7 @@ export interface IPlayer {
|
|
|
304
305
|
session: string;
|
|
305
306
|
payRequestId?: number;
|
|
306
307
|
abandonedTime: number;
|
|
308
|
+
disconnectedAt: number | null;
|
|
307
309
|
hand: Array<ICard>;
|
|
308
310
|
usedHand: Array<ICard>;
|
|
309
311
|
prevHand: Array<ICard>;
|
|
@@ -321,7 +323,9 @@ export interface IPlayer {
|
|
|
321
323
|
value: number;
|
|
322
324
|
cards: ICard[];
|
|
323
325
|
} | null;
|
|
324
|
-
|
|
326
|
+
_didSomething: boolean;
|
|
327
|
+
get didSomething(): boolean;
|
|
328
|
+
set didSomething(value: boolean);
|
|
325
329
|
hasSaidFlor: boolean;
|
|
326
330
|
hasSaidEnvidoPoints: boolean;
|
|
327
331
|
hasSaidTruco: boolean;
|
|
@@ -350,6 +354,7 @@ export interface IPlayer {
|
|
|
350
354
|
setPayRequest(id?: number): void;
|
|
351
355
|
setMatchPlayerId(id?: number): void;
|
|
352
356
|
setTurn(turn: boolean): void;
|
|
357
|
+
delayTurnExpiration(ms: number): void;
|
|
353
358
|
setTurnExpiration(...args: [number, number | null] | [null, null]): void;
|
|
354
359
|
setEnvidoTurn(turn: boolean): void;
|
|
355
360
|
getPublicPlayer(session?: string | "log"): IPublicPlayer;
|
package/dist/types.js
CHANGED
|
@@ -6,6 +6,7 @@ export var EMatchState;
|
|
|
6
6
|
EMatchState["READY"] = "READY";
|
|
7
7
|
EMatchState["STARTED"] = "STARTED";
|
|
8
8
|
EMatchState["FINISHED"] = "FINISHED";
|
|
9
|
+
EMatchState["PAUSED"] = "PAUSED";
|
|
9
10
|
})(EMatchState || (EMatchState = {}));
|
|
10
11
|
export var EChatSystem;
|
|
11
12
|
(function (EChatSystem) {
|