jp.ms.common.modules 1.0.43 → 1.0.44
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/common/rooms-manager.service.d.ts +61 -0
- package/dist/common/rooms-manager.service.js +148 -0
- package/dist/common/rooms-manager.service.js.map +1 -0
- package/dist/common/tournament-rooms-manager.service.d.ts +10 -0
- package/dist/common/tournament-rooms-manager.service.js +66 -0
- package/dist/common/tournament-rooms-manager.service.js.map +1 -0
- package/dist/dto/games/fool/fool-table.dto.d.ts +0 -1
- package/dist/dto/games/fool/fool-table.dto.js +0 -10
- package/dist/dto/games/fool/fool-table.dto.js.map +1 -1
- package/dist/exception/global-exception-filter.d.ts +2 -0
- package/dist/exception/global-exception-filter.js +23 -17
- package/dist/exception/global-exception-filter.js.map +1 -1
- package/dist/modules/anti-freeze-system/anti-freeze-system.service.d.ts +3 -0
- package/dist/modules/anti-freeze-system/anti-freeze-system.service.js +33 -23
- package/dist/modules/anti-freeze-system/anti-freeze-system.service.js.map +1 -1
- package/dist/modules/base-achievements/base-achievements.constants.d.ts +1 -0
- package/dist/modules/base-achievements/base-achievements.constants.js +5 -0
- package/dist/modules/base-achievements/base-achievements.constants.js.map +1 -0
- package/dist/modules/base-achievements/base-achievements.interfaces.d.ts +15 -0
- package/dist/modules/base-achievements/base-achievements.interfaces.js +3 -0
- package/dist/modules/base-achievements/base-achievements.interfaces.js.map +1 -0
- package/dist/modules/base-achievements/base-achievements.module.d.ts +29 -7
- package/dist/modules/base-achievements/base-achievements.module.js +166 -76
- package/dist/modules/base-achievements/base-achievements.module.js.map +1 -1
- package/dist/modules/base-achievements/index.d.ts +2 -0
- package/dist/modules/base-achievements/index.js +3 -1
- package/dist/modules/base-achievements/index.js.map +1 -1
- package/dist/modules/event-bus/events-bus.app.subscribe.service.d.ts +3 -3
- package/dist/modules/event-bus/events-bus.app.subscribe.service.js.map +1 -1
- package/dist/modules/index.d.ts +1 -1
- package/dist/modules/index.js +4 -3
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/main/main.service.js +8 -6
- package/dist/modules/main/main.service.js.map +1 -1
- package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js +1 -1
- package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js.map +1 -1
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.d.ts +1 -0
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js +4 -0
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js.map +1 -1
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.d.ts +7 -5
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js +58 -38
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js.map +1 -1
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.d.ts +1 -0
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js +4 -0
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js.map +1 -1
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.d.ts +7 -5
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js +55 -35
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js.map +1 -1
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.interfaces.d.ts +1 -0
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.module.js +4 -0
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.module.js.map +1 -1
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.d.ts +7 -5
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js +53 -20
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/views/achievement-snackbar.view.d.ts +8 -0
- package/dist/views/achievement-snackbar.view.js +26 -0
- package/dist/views/achievement-snackbar.view.js.map +1 -0
- package/dist/views/base-table.view.d.ts +13 -0
- package/dist/views/base-table.view.js +34 -0
- package/dist/views/base-table.view.js.map +1 -0
- package/dist/views/index.d.ts +3 -0
- package/dist/views/index.js +7 -1
- package/dist/views/index.js.map +1 -1
- package/dist/views/level-up-snackbar.view.d.ts +7 -0
- package/dist/views/level-up-snackbar.view.js +26 -0
- package/dist/views/level-up-snackbar.view.js.map +1 -0
- package/package.json +5 -5
- package/src/common/rooms-manager.service.ts +250 -0
- package/src/common/tournament-rooms-manager.service.ts +121 -0
- package/src/dto/games/fool/fool-table.dto.ts +0 -8
- package/src/exception/global-exception-filter.ts +34 -20
- package/src/modules/anti-freeze-system/anti-freeze-system.service.ts +48 -35
- package/src/modules/base-achievements/base-achievements.constants.ts +1 -0
- package/src/modules/base-achievements/base-achievements.interfaces.ts +22 -0
- package/src/modules/base-achievements/base-achievements.module.ts +347 -234
- package/src/modules/base-achievements/index.ts +5 -0
- package/src/modules/event-bus/events-bus.app.subscribe.service.ts +5 -5
- package/src/modules/index.ts +6 -1
- package/src/modules/main/main.service.ts +7 -5
- package/src/modules/many-tables-tournament/many-tables-tournament.controller.ts +1 -1
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.ts +1 -0
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.ts +7 -0
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.ts +89 -41
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.ts +1 -0
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.ts +7 -0
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.ts +89 -40
- package/src/modules/simple-rooms-manager/simple-rooms-manager.interfaces.ts +1 -0
- package/src/modules/simple-rooms-manager/simple-rooms-manager.module.ts +7 -0
- package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +79 -33
- package/src/views/achievement-snackbar.view.ts +38 -0
- package/src/views/base-table.view.ts +57 -0
- package/src/views/index.ts +3 -0
- package/src/views/level-up-snackbar.view.ts +38 -0
- package/dist/utils/date.d.ts +0 -2
- package/dist/utils/date.js +0 -11
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/game-table-result.d.ts +0 -40
- package/dist/utils/game-table-result.js +0 -152
- package/dist/utils/game-table-result.js.map +0 -1
- package/src/utils/date.ts +0 -7
- package/src/utils/game-table-result.ts +0 -190
|
@@ -8,13 +8,14 @@ import {
|
|
|
8
8
|
SimpleRoom,
|
|
9
9
|
GameRoomConfig,
|
|
10
10
|
RoomUpdateStateEvent,
|
|
11
|
-
UserWonTheGameAppEvent,
|
|
12
11
|
GameTableFinishedEvent,
|
|
13
12
|
GamePlayerEnteredTheTableEvent,
|
|
14
13
|
GamePlayerExitedTheTableEvent,
|
|
15
14
|
LocalService,
|
|
15
|
+
GamePlayerMovedOnTheTableEvent,
|
|
16
16
|
} from 'jp.ms.common.engine';
|
|
17
17
|
import {
|
|
18
|
+
ActivityLogRepository,
|
|
18
19
|
GameResultRepository,
|
|
19
20
|
RatingRepository,
|
|
20
21
|
SimpleRoomDocument,
|
|
@@ -23,15 +24,17 @@ import {
|
|
|
23
24
|
} from 'jp.db.schemas';
|
|
24
25
|
|
|
25
26
|
import { JpLoggerService } from '../logger/jp-logger.service';
|
|
26
|
-
import {
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
import {
|
|
28
|
+
EventsBusMainTablesSubscribeService,
|
|
29
|
+
EventsBusAppSubscribeService,
|
|
30
|
+
} from '../event-bus';
|
|
31
|
+
import { RoomsManagerService } from '../../common/rooms-manager.service';
|
|
29
32
|
|
|
30
33
|
import { SIMPLE_ROOMS_MANAGER_OPTIONS } from './simple-rooms-manager.constants';
|
|
31
34
|
import { SimpleRoomsFactoryOptions } from './simple-rooms-manager.interfaces';
|
|
32
35
|
|
|
33
36
|
@Injectable()
|
|
34
|
-
export class SimpleRoomsManagerService {
|
|
37
|
+
export class SimpleRoomsManagerService extends RoomsManagerService {
|
|
35
38
|
private readonly rooms: Map<string, SimpleRoom>;
|
|
36
39
|
|
|
37
40
|
constructor(
|
|
@@ -39,6 +42,7 @@ export class SimpleRoomsManagerService {
|
|
|
39
42
|
private readonly usersRepository: UsersRepository,
|
|
40
43
|
private readonly gameResultRepository: GameResultRepository,
|
|
41
44
|
private readonly ratingRepository: RatingRepository,
|
|
45
|
+
private readonly activityLogRepository: ActivityLogRepository,
|
|
42
46
|
private readonly eventsBusMainTablesSubscribeService: EventsBusMainTablesSubscribeService,
|
|
43
47
|
private readonly eventsBusAppSubscribeService: EventsBusAppSubscribeService,
|
|
44
48
|
@Inject(SIMPLE_ROOMS_MANAGER_OPTIONS)
|
|
@@ -46,6 +50,7 @@ export class SimpleRoomsManagerService {
|
|
|
46
50
|
@InjectConnection() private readonly connection: Connection,
|
|
47
51
|
@Inject() private readonly logger: JpLoggerService,
|
|
48
52
|
) {
|
|
53
|
+
super();
|
|
49
54
|
this.rooms = new Map<string, SimpleRoom>();
|
|
50
55
|
}
|
|
51
56
|
|
|
@@ -89,11 +94,11 @@ export class SimpleRoomsManagerService {
|
|
|
89
94
|
}
|
|
90
95
|
|
|
91
96
|
/*
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
1. Сначала ищем стол в котором один игрок
|
|
98
|
+
2. Далее ищем стол за которым есть игроки и свободные места
|
|
99
|
+
3. Отправляем на стол для быстрой игры если там есть места
|
|
100
|
+
4. Наконец создаем стол для быстрой игры и отправляем туда
|
|
101
|
+
*/
|
|
97
102
|
getFreeFastGameRoom(): GameMaster | undefined {
|
|
98
103
|
if (this.getRooms().some((item) => item.isTechBreak())) {
|
|
99
104
|
return;
|
|
@@ -141,6 +146,7 @@ export class SimpleRoomsManagerService {
|
|
|
141
146
|
rulesType: room.rulesType,
|
|
142
147
|
deckType: room.deckType,
|
|
143
148
|
tableSize: room.tableSize,
|
|
149
|
+
tableType: room.tableType,
|
|
144
150
|
bet: room.bet,
|
|
145
151
|
ticketPrice: room.ticketPrice / 2,
|
|
146
152
|
title: room.title,
|
|
@@ -159,34 +165,74 @@ export class SimpleRoomsManagerService {
|
|
|
159
165
|
private handleRoomEvent = (event: BaseGameEvent) => {
|
|
160
166
|
this.logger.log(event.toLog());
|
|
161
167
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
168
|
+
switch (event.constructor.name) {
|
|
169
|
+
case GameTableFinishedEvent.name: {
|
|
170
|
+
void this.handleRoomTableGameFinished(event as GameTableFinishedEvent);
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case GamePlayerMovedOnTheTableEvent.name: {
|
|
174
|
+
this.handleRoomTableGamePlayerMoved(
|
|
175
|
+
event as GamePlayerMovedOnTheTableEvent,
|
|
176
|
+
this.eventsBusAppSubscribeService,
|
|
177
|
+
);
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
case GamePlayerEnteredTheTableEvent.name:
|
|
181
|
+
case GamePlayerExitedTheTableEvent.name: {
|
|
182
|
+
this.handleRoomStatusUpdated(
|
|
183
|
+
event as
|
|
184
|
+
GamePlayerExitedTheTableEvent | GamePlayerEnteredTheTableEvent,
|
|
185
|
+
);
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
171
188
|
}
|
|
172
189
|
};
|
|
173
190
|
|
|
174
|
-
private handleRoomTableGameFinished = async (
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
this.ratingRepository,
|
|
181
|
-
);
|
|
191
|
+
private handleRoomTableGameFinished = async (
|
|
192
|
+
event: GameTableFinishedEvent,
|
|
193
|
+
) => {
|
|
194
|
+
await this.saveGameTableReuslts(event);
|
|
195
|
+
this.processGameFinishEvent(event, this.eventsBusAppSubscribeService);
|
|
196
|
+
};
|
|
182
197
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
198
|
+
private handleRoomStatusUpdated = (
|
|
199
|
+
event: GamePlayerEnteredTheTableEvent | GamePlayerExitedTheTableEvent,
|
|
200
|
+
) => {
|
|
201
|
+
this.eventsBusMainTablesSubscribeService.pushNewRoomState(
|
|
202
|
+
new RoomUpdateStateEvent(event.gameType, event.roomId),
|
|
186
203
|
);
|
|
187
204
|
};
|
|
188
205
|
|
|
189
|
-
private
|
|
190
|
-
this.
|
|
191
|
-
|
|
206
|
+
private async saveGameTableReuslts(event: GameTableFinishedEvent) {
|
|
207
|
+
const session = await this.connection.startSession();
|
|
208
|
+
session.startTransaction();
|
|
209
|
+
const master = event.master;
|
|
210
|
+
|
|
211
|
+
try {
|
|
212
|
+
await this.gameResultRepository.createGameResult(
|
|
213
|
+
this.getGameTableResults(master),
|
|
214
|
+
);
|
|
215
|
+
const userGameResults = this.getUserGameResults(master, false);
|
|
216
|
+
await this.usersRepository.saveGameResult(userGameResults);
|
|
217
|
+
await this.ratingRepository.addBulkPlayerRating(
|
|
218
|
+
this.getUserRatings(master),
|
|
219
|
+
);
|
|
220
|
+
await this.activityLogRepository.addGameTableResult(
|
|
221
|
+
this.getGameTableActivityLogResult(master),
|
|
222
|
+
);
|
|
223
|
+
this.commitExperience(
|
|
224
|
+
master,
|
|
225
|
+
userGameResults,
|
|
226
|
+
event,
|
|
227
|
+
this.eventsBusAppSubscribeService,
|
|
228
|
+
this.options.levelUpBonus,
|
|
229
|
+
);
|
|
230
|
+
await session.commitTransaction();
|
|
231
|
+
} catch (error) {
|
|
232
|
+
await session.abortTransaction();
|
|
233
|
+
throw error;
|
|
234
|
+
} finally {
|
|
235
|
+
await session.endSession();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
192
238
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { randomUUID } from 'crypto';
|
|
2
|
+
import {
|
|
3
|
+
AppScreenSnackbarIdEnum,
|
|
4
|
+
ILocaleService,
|
|
5
|
+
AchievementSnackbarComponent,
|
|
6
|
+
UniversalScreenSnackbarView,
|
|
7
|
+
} from 'jp.common.models';
|
|
8
|
+
import { formatChips } from 'jp.common.utils';
|
|
9
|
+
import { Achievement } from 'jp.db.schemas';
|
|
10
|
+
|
|
11
|
+
export class AchievementSnackbarView extends UniversalScreenSnackbarView {
|
|
12
|
+
private achievement: Achievement;
|
|
13
|
+
private bonus: number;
|
|
14
|
+
|
|
15
|
+
constructor(
|
|
16
|
+
localeService: ILocaleService,
|
|
17
|
+
lang: string,
|
|
18
|
+
achievement: Achievement,
|
|
19
|
+
bonus: number,
|
|
20
|
+
) {
|
|
21
|
+
super(localeService, lang);
|
|
22
|
+
this.achievement = achievement;
|
|
23
|
+
this.bonus = bonus;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
build() {
|
|
27
|
+
return new AchievementSnackbarComponent(
|
|
28
|
+
`${AppScreenSnackbarIdEnum.SNACKBAR_ACHIEVEMENT}_${randomUUID()}`,
|
|
29
|
+
this.localeService.t('common.server.message.code.4011', {
|
|
30
|
+
lang: this.lang,
|
|
31
|
+
args: {
|
|
32
|
+
TITLE: this.getDbResource(this.achievement.title),
|
|
33
|
+
PRIZE: formatChips(this.bonus, this.lang, true),
|
|
34
|
+
},
|
|
35
|
+
}),
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IAppScreenDialog,
|
|
3
|
+
ILocaleService,
|
|
4
|
+
UniversalView,
|
|
5
|
+
} from 'jp.common.models';
|
|
6
|
+
import { GameMaster, GamePlayer } from 'jp.ms.common.engine';
|
|
7
|
+
|
|
8
|
+
export abstract class BaseTableView extends UniversalView {
|
|
9
|
+
abstract getConfirmExitDialog(): IAppScreenDialog | undefined;
|
|
10
|
+
|
|
11
|
+
protected ROUND_TABLE_TARGET_SEAT_MAPPING: Record<number, number> = {
|
|
12
|
+
2: 1,
|
|
13
|
+
3: 2,
|
|
14
|
+
4: 2,
|
|
15
|
+
5: 2,
|
|
16
|
+
6: 3,
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
protected readonly gameMaster: GameMaster;
|
|
20
|
+
protected readonly gamePlayer: GamePlayer;
|
|
21
|
+
|
|
22
|
+
constructor(
|
|
23
|
+
localeService: ILocaleService,
|
|
24
|
+
lang: string,
|
|
25
|
+
gameMaster: GameMaster,
|
|
26
|
+
gamePlayer: GamePlayer,
|
|
27
|
+
) {
|
|
28
|
+
super(localeService, lang);
|
|
29
|
+
this.gameMaster = gameMaster;
|
|
30
|
+
this.gamePlayer = gamePlayer;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
protected getGameMaster<T extends GameMaster>(): T {
|
|
34
|
+
return this.gameMaster as T;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
protected getGamePlayer<T extends GamePlayer>(): T {
|
|
38
|
+
return this.gamePlayer as T;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
protected getSeatShift(): number {
|
|
42
|
+
return (
|
|
43
|
+
this.gameMaster.table.seats.getShift(
|
|
44
|
+
this.gamePlayer.seatNumber,
|
|
45
|
+
this.getTargetSeat(),
|
|
46
|
+
) ?? 0
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected getTargetSeat(): number {
|
|
51
|
+
return (
|
|
52
|
+
this.ROUND_TABLE_TARGET_SEAT_MAPPING[
|
|
53
|
+
this.gameMaster.room.getTableSize()
|
|
54
|
+
] ?? 0
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
}
|
package/src/views/index.ts
CHANGED
|
@@ -3,3 +3,6 @@ export { SimpleRoomConfirmExitDialogView } from './simple-room-conifrm-exit-dial
|
|
|
3
3
|
export { ManyTablesTournamentConfirmExitDialogView } from './many-tables-tournament-conifrm-exit-dialog.view';
|
|
4
4
|
export { OneTableTournamentConfirmExitDialogView } from './one-table-tournament-conifrm-exit-dialog.view';
|
|
5
5
|
export { TableSummaryView } from './table-summary.view';
|
|
6
|
+
export { AchievementSnackbarView } from './achievement-snackbar.view';
|
|
7
|
+
export { LevelUpSnackbarView } from './level-up-snackbar.view';
|
|
8
|
+
export { BaseTableView } from './base-table.view';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { randomUUID } from 'crypto';
|
|
2
|
+
import {
|
|
3
|
+
AppScreenSnackbarIdEnum,
|
|
4
|
+
IAppScreenSnackbar,
|
|
5
|
+
ILocaleService,
|
|
6
|
+
LevelUpSnackbarComponent,
|
|
7
|
+
UniversalScreenSnackbarView,
|
|
8
|
+
} from 'jp.common.models';
|
|
9
|
+
import { formatChips } from 'jp.common.utils';
|
|
10
|
+
|
|
11
|
+
export class LevelUpSnackbarView extends UniversalScreenSnackbarView {
|
|
12
|
+
private newLevel: number;
|
|
13
|
+
private bonus: number;
|
|
14
|
+
|
|
15
|
+
constructor(
|
|
16
|
+
localeService: ILocaleService,
|
|
17
|
+
lang: string,
|
|
18
|
+
newLevel: number,
|
|
19
|
+
bonus: number,
|
|
20
|
+
) {
|
|
21
|
+
super(localeService, lang);
|
|
22
|
+
this.newLevel = newLevel;
|
|
23
|
+
this.bonus = bonus;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
build(): IAppScreenSnackbar {
|
|
27
|
+
return new LevelUpSnackbarComponent(
|
|
28
|
+
`${AppScreenSnackbarIdEnum.SNACKBAR_LEVEL_UP}_${randomUUID()}`,
|
|
29
|
+
this.localeService.t('common.server.message.code.4010', {
|
|
30
|
+
lang: this.lang,
|
|
31
|
+
args: {
|
|
32
|
+
NEW_LEVEL: this.newLevel.toString(),
|
|
33
|
+
BONUS: formatChips(this.bonus, this.lang, true),
|
|
34
|
+
},
|
|
35
|
+
}),
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
}
|
package/dist/utils/date.d.ts
DELETED
package/dist/utils/date.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getHours = getHours;
|
|
4
|
-
exports.getMinutes = getMinutes;
|
|
5
|
-
function getHours(timeStr) {
|
|
6
|
-
return parseInt(timeStr.substring(0, 2), 10);
|
|
7
|
-
}
|
|
8
|
-
function getMinutes(timeStr) {
|
|
9
|
-
return parseInt(timeStr.substring(3, 5), 10);
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=date.js.map
|
package/dist/utils/date.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";;AAAA,4BAEC;AAED,gCAEC;AAND,SAAgB,QAAQ,CAAC,OAAe;IACtC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,UAAU,CAAC,OAAe;IACxC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Connection } from 'mongoose';
|
|
2
|
-
import { GameResultRepository, OneTableTournamentRoomsRepository, ManyTablesTournamentRoomsRepository, UsersRepository, RatingRepository } from 'jp.db.schemas';
|
|
3
|
-
import { GameMaster, TournamentMaster } from 'jp.ms.common.engine';
|
|
4
|
-
export declare function getGameTableResults(master: GameMaster): {
|
|
5
|
-
gameType: string;
|
|
6
|
-
gameId: string;
|
|
7
|
-
roomId: string;
|
|
8
|
-
date: Date;
|
|
9
|
-
pot: number;
|
|
10
|
-
players: {
|
|
11
|
-
userId: string;
|
|
12
|
-
fullName: string;
|
|
13
|
-
profit: number;
|
|
14
|
-
figures: never[];
|
|
15
|
-
}[];
|
|
16
|
-
winners: {
|
|
17
|
-
userId: string;
|
|
18
|
-
fullName: string;
|
|
19
|
-
profit: number;
|
|
20
|
-
figures: never[];
|
|
21
|
-
}[];
|
|
22
|
-
history: {
|
|
23
|
-
userId: string;
|
|
24
|
-
fullName: string;
|
|
25
|
-
date: Date;
|
|
26
|
-
actionType: string;
|
|
27
|
-
state: string;
|
|
28
|
-
turnNumber: number;
|
|
29
|
-
moveAction: string | undefined;
|
|
30
|
-
moveData: import("jp.ms.common.engine").BaseMoveData | undefined;
|
|
31
|
-
figures: {
|
|
32
|
-
figureId: number;
|
|
33
|
-
type: string;
|
|
34
|
-
name: string;
|
|
35
|
-
}[];
|
|
36
|
-
}[];
|
|
37
|
-
};
|
|
38
|
-
export declare function saveGameTablesResultForSimpleRoom(master: GameMaster, connection: Connection, gameResultRepository: GameResultRepository, usersRepository: UsersRepository, ratingRepository: RatingRepository): Promise<void>;
|
|
39
|
-
export declare function saveGameTablesResultForTournamentRoom(master: GameMaster, connection: Connection, gameResultRepository: GameResultRepository, usersRepository: UsersRepository): Promise<void>;
|
|
40
|
-
export declare function saveTournamentResult(master: TournamentMaster, connection: Connection, tournamentRepository: OneTableTournamentRoomsRepository | ManyTablesTournamentRoomsRepository, usersRepository: UsersRepository, ratingRepository: RatingRepository): Promise<void>;
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGameTableResults = getGameTableResults;
|
|
4
|
-
exports.saveGameTablesResultForSimpleRoom = saveGameTablesResultForSimpleRoom;
|
|
5
|
-
exports.saveGameTablesResultForTournamentRoom = saveGameTablesResultForTournamentRoom;
|
|
6
|
-
exports.saveTournamentResult = saveTournamentResult;
|
|
7
|
-
function getGameTableResults(master) {
|
|
8
|
-
return {
|
|
9
|
-
gameType: master.getRoom().getGameType(),
|
|
10
|
-
gameId: master.getGameRound()?.getId() ?? '',
|
|
11
|
-
roomId: master.getRoom().getId(),
|
|
12
|
-
date: new Date(),
|
|
13
|
-
pot: master.getGameRound()?.getPot() ?? 0,
|
|
14
|
-
players: master
|
|
15
|
-
.getTable()
|
|
16
|
-
.getPlayers()
|
|
17
|
-
.map((item) => ({
|
|
18
|
-
userId: item.id,
|
|
19
|
-
fullName: item.fullName,
|
|
20
|
-
profit: item.profit,
|
|
21
|
-
figures: [],
|
|
22
|
-
})),
|
|
23
|
-
winners: master
|
|
24
|
-
.getGameResultHelper()
|
|
25
|
-
.getWinners()
|
|
26
|
-
.map((item) => ({
|
|
27
|
-
userId: item.id,
|
|
28
|
-
fullName: item.fullName,
|
|
29
|
-
profit: item.profit,
|
|
30
|
-
figures: [],
|
|
31
|
-
})),
|
|
32
|
-
history: master
|
|
33
|
-
.getGameRound()
|
|
34
|
-
?.getHistory()
|
|
35
|
-
.map((item) => ({
|
|
36
|
-
userId: item.userId,
|
|
37
|
-
fullName: item.fullName,
|
|
38
|
-
date: item.date,
|
|
39
|
-
actionType: item.actionType,
|
|
40
|
-
state: item.state,
|
|
41
|
-
turnNumber: item.turnNumber,
|
|
42
|
-
moveAction: item.move?.action,
|
|
43
|
-
moveData: item.move ?? undefined,
|
|
44
|
-
figures: item.figures?.map((item) => ({
|
|
45
|
-
figureId: item.id,
|
|
46
|
-
type: item.type,
|
|
47
|
-
name: item.getName(),
|
|
48
|
-
})) ?? [],
|
|
49
|
-
})) ?? [],
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
async function saveGameTablesResultForSimpleRoom(master, connection, gameResultRepository, usersRepository, ratingRepository) {
|
|
53
|
-
const userGameResult = master
|
|
54
|
-
.getTable()
|
|
55
|
-
.getPlayers()
|
|
56
|
-
.map((player) => {
|
|
57
|
-
return {
|
|
58
|
-
userId: player.id,
|
|
59
|
-
userName: player.fullName,
|
|
60
|
-
userAvatarUrl: player.avatarUrl,
|
|
61
|
-
balanceAdding: player.profit,
|
|
62
|
-
experienceAdding: master.levelHelper.getNewExperienceAmount(player),
|
|
63
|
-
levelAdding: master.levelHelper.getNewLevelAdding(player.level, player.experience),
|
|
64
|
-
};
|
|
65
|
-
});
|
|
66
|
-
const ratings = userGameResult.map((item) => ({
|
|
67
|
-
userId: item.userId,
|
|
68
|
-
userName: item.userName,
|
|
69
|
-
userAvatarUrl: item.userAvatarUrl,
|
|
70
|
-
profit: item.balanceAdding,
|
|
71
|
-
game: master.getRoom().getGameType(),
|
|
72
|
-
}));
|
|
73
|
-
const session = await connection.startSession();
|
|
74
|
-
session.startTransaction();
|
|
75
|
-
try {
|
|
76
|
-
await gameResultRepository.createGameResult(getGameTableResults(master));
|
|
77
|
-
await usersRepository.saveGameResult(userGameResult);
|
|
78
|
-
await ratingRepository.addBulkPlayerRating(ratings);
|
|
79
|
-
await session.commitTransaction();
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
await session.abortTransaction();
|
|
83
|
-
throw error;
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
await session.endSession();
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
async function saveGameTablesResultForTournamentRoom(master, connection, gameResultRepository, usersRepository) {
|
|
90
|
-
const userGameResult = master
|
|
91
|
-
.getTable()
|
|
92
|
-
.getPlayers()
|
|
93
|
-
.map((player) => {
|
|
94
|
-
return {
|
|
95
|
-
userId: player.id,
|
|
96
|
-
userName: player.fullName,
|
|
97
|
-
userAvatarUrl: player.avatarUrl,
|
|
98
|
-
balanceAdding: 0,
|
|
99
|
-
experienceAdding: master.levelHelper.getNewExperienceAmount(player),
|
|
100
|
-
levelAdding: master.levelHelper.getNewLevelAdding(player.level, player.experience),
|
|
101
|
-
};
|
|
102
|
-
});
|
|
103
|
-
const session = await connection.startSession();
|
|
104
|
-
session.startTransaction();
|
|
105
|
-
try {
|
|
106
|
-
await gameResultRepository.createGameResult(getGameTableResults(master));
|
|
107
|
-
await usersRepository.saveGameResult(userGameResult);
|
|
108
|
-
await session.commitTransaction();
|
|
109
|
-
}
|
|
110
|
-
catch (error) {
|
|
111
|
-
await session.abortTransaction();
|
|
112
|
-
throw error;
|
|
113
|
-
}
|
|
114
|
-
finally {
|
|
115
|
-
await session.endSession();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
async function saveTournamentResult(master, connection, tournamentRepository, usersRepository, ratingRepository) {
|
|
119
|
-
const userTournamentResult = master.getTournamentResult().map((player) => {
|
|
120
|
-
return {
|
|
121
|
-
userId: player.playerId,
|
|
122
|
-
userName: player.playerName,
|
|
123
|
-
userAvatarUrl: player.playerAvatarUrl,
|
|
124
|
-
balanceAdding: player.profit,
|
|
125
|
-
experienceAdding: 0,
|
|
126
|
-
levelAdding: 0,
|
|
127
|
-
};
|
|
128
|
-
});
|
|
129
|
-
const ratings = userTournamentResult.map((item) => ({
|
|
130
|
-
userId: item.userId,
|
|
131
|
-
userName: item.userName,
|
|
132
|
-
userAvatarUrl: item.userAvatarUrl,
|
|
133
|
-
profit: item.balanceAdding,
|
|
134
|
-
game: master.getRoom().getGameType(),
|
|
135
|
-
}));
|
|
136
|
-
const session = await connection.startSession();
|
|
137
|
-
session.startTransaction();
|
|
138
|
-
try {
|
|
139
|
-
await usersRepository.saveGameResult(userTournamentResult);
|
|
140
|
-
await tournamentRepository.finishTournament(master.getTournamentId(), master.getTournamentResult());
|
|
141
|
-
await ratingRepository.addBulkPlayerRating(ratings);
|
|
142
|
-
await session.commitTransaction();
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
await session.abortTransaction();
|
|
146
|
-
throw error;
|
|
147
|
-
}
|
|
148
|
-
finally {
|
|
149
|
-
await session.endSession();
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
//# sourceMappingURL=game-table-result.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"game-table-result.js","sourceRoot":"","sources":["../../src/utils/game-table-result.ts"],"names":[],"mappings":"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"}
|