jp.ms.common.modules 1.0.43 → 1.0.45
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Inject, Module } from '@nestjs/common';
|
|
2
2
|
import { MongooseModule } from '@nestjs/mongoose';
|
|
3
3
|
import {
|
|
4
4
|
ActivityLog,
|
|
@@ -15,30 +15,27 @@ import {
|
|
|
15
15
|
UsersAchievementsRepository,
|
|
16
16
|
} from 'jp.db.schemas';
|
|
17
17
|
import {
|
|
18
|
-
BaseAppEvent,
|
|
19
|
-
BaseUserAppEvent,
|
|
20
|
-
EarnOneMillionAchievement,
|
|
21
|
-
GotLevel10Achievement,
|
|
22
|
-
GotLevel3Achievement,
|
|
23
|
-
Playd10GamesAchievement,
|
|
24
18
|
SnackbarSendToPlayerWsEvent,
|
|
25
|
-
Take1PlaceOnManyTablesTournamentAchievement,
|
|
26
|
-
Take2Or3PlaceOnManyTablesTournamentAchievement,
|
|
27
19
|
UserGotNewLevelAppEvent,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
20
|
+
BaseAchievement,
|
|
21
|
+
BaseUserAppEvent,
|
|
22
|
+
AchievementsCodesEnum,
|
|
23
|
+
GamePlayerRoundFinishedAppEvent,
|
|
24
|
+
GamePlayerMovedAppEvent,
|
|
25
|
+
GamePlayerManyTablesTournamentFinishedAppEvent,
|
|
26
|
+
GamePlayerOneTableTournamentFinishedAppEvent,
|
|
27
|
+
LocalService,
|
|
28
|
+
TournamentMaster,
|
|
35
29
|
} from 'jp.ms.common.engine';
|
|
36
|
-
import {
|
|
30
|
+
import { LanguageTypeEnum } from 'jp.common.models';
|
|
37
31
|
|
|
38
32
|
import { EventsBusAppSubscribeService } from '../event-bus/events-bus.app.subscribe.service';
|
|
39
33
|
import { PlayersManagerService } from '../players-manager';
|
|
34
|
+
import { AchievementSnackbarView } from '../../views';
|
|
35
|
+
|
|
36
|
+
import { BASE_ACHIEVEMENTS_OPTIONS } from './base-achievements.constants';
|
|
37
|
+
import { BaseAchievementsFactoryOptions } from './base-achievements.interfaces';
|
|
40
38
|
|
|
41
|
-
@Global()
|
|
42
39
|
@Module({
|
|
43
40
|
imports: [
|
|
44
41
|
MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
|
|
@@ -57,10 +54,13 @@ import { PlayersManagerService } from '../players-manager';
|
|
|
57
54
|
ActivityLogRepository,
|
|
58
55
|
AchievementRepository,
|
|
59
56
|
UsersAchievementsRepository,
|
|
60
|
-
EventsBusAppSubscribeService,
|
|
61
57
|
],
|
|
62
58
|
})
|
|
63
59
|
export abstract class BaseAchievementsModule {
|
|
60
|
+
protected allAchievements: Array<Achievement> = [];
|
|
61
|
+
protected achievemnts: Map<string, BaseAchievement> = new Map();
|
|
62
|
+
protected usersAchievements: Map<string, UsersAchievement[]> = new Map();
|
|
63
|
+
|
|
64
64
|
constructor(
|
|
65
65
|
protected readonly eventsBusAppSubscribeService: EventsBusAppSubscribeService,
|
|
66
66
|
protected readonly playersManager: PlayersManagerService,
|
|
@@ -68,257 +68,370 @@ export abstract class BaseAchievementsModule {
|
|
|
68
68
|
protected readonly activityLogRepository: ActivityLogRepository,
|
|
69
69
|
protected readonly achievementRepository: AchievementRepository,
|
|
70
70
|
protected readonly usersAchievementRepository: UsersAchievementsRepository,
|
|
71
|
+
@Inject(BASE_ACHIEVEMENTS_OPTIONS)
|
|
72
|
+
private readonly options: BaseAchievementsFactoryOptions,
|
|
71
73
|
) {}
|
|
72
74
|
|
|
73
|
-
|
|
75
|
+
abstract createAchievemnt(code: string, gameType: string): BaseAchievement;
|
|
76
|
+
|
|
77
|
+
async onModuleInit() {
|
|
74
78
|
this.eventsBusAppSubscribeService.subscribe((event) => {
|
|
75
79
|
void this.onHandleAppEvent(event);
|
|
76
80
|
});
|
|
81
|
+
|
|
82
|
+
this.allAchievements = await this.achievementRepository.findAchievements(
|
|
83
|
+
this.options.gameType,
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
for (const achievement of this.allAchievements) {
|
|
87
|
+
const objAchievemnt = this.createAchievemnt(
|
|
88
|
+
achievement.code,
|
|
89
|
+
this.options.gameType,
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
this.achievemnts.set(objAchievemnt.getCode(), objAchievemnt);
|
|
93
|
+
}
|
|
77
94
|
}
|
|
78
95
|
|
|
79
|
-
protected async onHandleAppEvent(event:
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
await this.achievementRepository.findAchievements(event.game);
|
|
86
|
-
const usersAchievements: Array<UsersAchievement> =
|
|
87
|
-
await this.usersAchievementRepository.findAchivementsByUserId(userId);
|
|
88
|
-
|
|
89
|
-
if (!player || !foundUser) {
|
|
90
|
-
throw new InternalServerErrorException();
|
|
91
|
-
}
|
|
96
|
+
protected async onHandleAppEvent(event: BaseUserAppEvent) {
|
|
97
|
+
const usersAchievemnets =
|
|
98
|
+
await this.usersAchievementRepository.findAchivementsByUserId(
|
|
99
|
+
event.userId,
|
|
100
|
+
);
|
|
101
|
+
this.usersAchievements.set(event.userId, usersAchievemnets);
|
|
92
102
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
+
switch (event.constructor.name) {
|
|
104
|
+
case UserGotNewLevelAppEvent.name: {
|
|
105
|
+
this.handleUserGotLevelUp(event as UserGotNewLevelAppEvent);
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
case GamePlayerRoundFinishedAppEvent.name: {
|
|
109
|
+
await this.handleGamePlayerRoundFinishedAppEvent(
|
|
110
|
+
event as GamePlayerRoundFinishedAppEvent,
|
|
111
|
+
);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case GamePlayerMovedAppEvent.name: {
|
|
115
|
+
this.handleGamePlayerMovedAppEvent(event as GamePlayerMovedAppEvent);
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
case GamePlayerManyTablesTournamentFinishedAppEvent.name: {
|
|
119
|
+
this.handleGamePlayerManyTablesTournamentFinishedAppEvent(
|
|
120
|
+
event as GamePlayerManyTablesTournamentFinishedAppEvent,
|
|
121
|
+
);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
case GamePlayerOneTableTournamentFinishedAppEvent.name: {
|
|
125
|
+
await this.handleGamePlayerOneTableTournamentFinishedAppEvent(
|
|
126
|
+
event as GamePlayerOneTableTournamentFinishedAppEvent,
|
|
103
127
|
);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
this.usersAchievements.delete(event.userId);
|
|
133
|
+
}
|
|
104
134
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
} else if (event instanceof UserWonTheGameAppEvent) {
|
|
158
|
-
if (
|
|
159
|
-
this.userHasNoAchievement(
|
|
160
|
-
usersAchievements,
|
|
161
|
-
Won3GamesAchievement.code,
|
|
162
|
-
)
|
|
163
|
-
) {
|
|
164
|
-
const wonGamesCount =
|
|
165
|
-
await this.activityLogRepository.getUserWonGamesCount(userId);
|
|
166
|
-
|
|
167
|
-
if (new Won3GamesAchievement(wonGamesCount).userGotAchievement()) {
|
|
168
|
-
void this.giveAchievement(
|
|
169
|
-
allAchievements,
|
|
170
|
-
Won3GamesAchievement.code,
|
|
171
|
-
foundUser,
|
|
172
|
-
event.game,
|
|
173
|
-
);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (
|
|
178
|
-
this.userHasNoAchievement(
|
|
179
|
-
usersAchievements,
|
|
180
|
-
Won3ProfiAchievement.code,
|
|
181
|
-
)
|
|
182
|
-
) {
|
|
183
|
-
const wonProfiCount =
|
|
184
|
-
await this.activityLogRepository.getUserWonProfiCount(userId);
|
|
185
|
-
if (new Won3ProfiAchievement(wonProfiCount).userGotAchievement()) {
|
|
186
|
-
void this.giveAchievement(
|
|
187
|
-
allAchievements,
|
|
188
|
-
Won3ProfiAchievement.code,
|
|
189
|
-
foundUser,
|
|
190
|
-
event.game,
|
|
191
|
-
);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
if (
|
|
196
|
-
this.userHasNoAchievement(
|
|
197
|
-
usersAchievements,
|
|
198
|
-
EarnOneMillionAchievement.code,
|
|
199
|
-
)
|
|
200
|
-
) {
|
|
201
|
-
if (
|
|
202
|
-
new EarnOneMillionAchievement(
|
|
203
|
-
foundUser.balance,
|
|
204
|
-
).userGotAchievement()
|
|
205
|
-
) {
|
|
206
|
-
void this.giveAchievement(
|
|
207
|
-
allAchievements,
|
|
208
|
-
EarnOneMillionAchievement.code,
|
|
209
|
-
foundUser,
|
|
210
|
-
event.game,
|
|
211
|
-
);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
} else if (event instanceof UserWonOneTableTournamentAppEvent) {
|
|
215
|
-
if (
|
|
216
|
-
this.userHasNoAchievement(
|
|
217
|
-
usersAchievements,
|
|
218
|
-
WonOneTableTournament3TimesAchievement.code,
|
|
219
|
-
)
|
|
220
|
-
) {
|
|
221
|
-
const wonFastTournamentCount =
|
|
222
|
-
await this.activityLogRepository.getUserWonOneTableTournamentCount(
|
|
223
|
-
userId,
|
|
224
|
-
);
|
|
225
|
-
if (
|
|
226
|
-
new WonOneTableTournament3TimesAchievement(
|
|
227
|
-
wonFastTournamentCount,
|
|
228
|
-
).userGotAchievement()
|
|
229
|
-
) {
|
|
230
|
-
void this.giveAchievement(
|
|
231
|
-
allAchievements,
|
|
232
|
-
WonOneTableTournament3TimesAchievement.code,
|
|
233
|
-
foundUser,
|
|
234
|
-
event.game,
|
|
235
|
-
);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
} else if (event instanceof UserWonManyTablesTournamentAppEvent) {
|
|
239
|
-
if (
|
|
240
|
-
this.userHasNoAchievement(
|
|
241
|
-
usersAchievements,
|
|
242
|
-
Take1PlaceOnManyTablesTournamentAchievement.code,
|
|
243
|
-
)
|
|
244
|
-
) {
|
|
245
|
-
if (
|
|
246
|
-
new Take1PlaceOnManyTablesTournamentAchievement(
|
|
247
|
-
event.rank,
|
|
248
|
-
).userGotAchievement()
|
|
249
|
-
) {
|
|
250
|
-
void this.giveAchievement(
|
|
251
|
-
allAchievements,
|
|
252
|
-
Take1PlaceOnManyTablesTournamentAchievement.code,
|
|
253
|
-
foundUser,
|
|
254
|
-
event.game,
|
|
255
|
-
);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
if (
|
|
260
|
-
this.userHasNoAchievement(
|
|
261
|
-
usersAchievements,
|
|
262
|
-
Take2Or3PlaceOnManyTablesTournamentAchievement.code,
|
|
263
|
-
)
|
|
264
|
-
) {
|
|
265
|
-
if (
|
|
266
|
-
new Take2Or3PlaceOnManyTablesTournamentAchievement(
|
|
267
|
-
event.rank,
|
|
268
|
-
).userGotAchievement()
|
|
269
|
-
) {
|
|
270
|
-
void this.giveAchievement(
|
|
271
|
-
allAchievements,
|
|
272
|
-
Take2Or3PlaceOnManyTablesTournamentAchievement.code,
|
|
273
|
-
foundUser,
|
|
274
|
-
event.game,
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
135
|
+
protected async handleGamePlayerRoundFinishedAppEvent(
|
|
136
|
+
event: GamePlayerRoundFinishedAppEvent,
|
|
137
|
+
) {
|
|
138
|
+
this.processEarnOneMillion(event);
|
|
139
|
+
await this.processFailNTimes(event);
|
|
140
|
+
await this.processPlayNTimes(event);
|
|
141
|
+
await this.processPlayNTimesADay(event);
|
|
142
|
+
await this.processWinNTimes(event);
|
|
143
|
+
this.processWinNTimesARow(event);
|
|
144
|
+
await this.processWinNProfi(event);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
protected abstract handleGamePlayerMovedAppEvent(
|
|
148
|
+
event: GamePlayerMovedAppEvent,
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
protected handleGamePlayerManyTablesTournamentFinishedAppEvent(
|
|
152
|
+
event: GamePlayerManyTablesTournamentFinishedAppEvent,
|
|
153
|
+
) {
|
|
154
|
+
this.processTakeNPlaceOnManyTablesTournament(event);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
protected async handleGamePlayerOneTableTournamentFinishedAppEvent(
|
|
158
|
+
event: GamePlayerOneTableTournamentFinishedAppEvent,
|
|
159
|
+
) {
|
|
160
|
+
await this.processWinNTimesOneTableTournament(event);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
protected handleUserGotLevelUp(event: UserGotNewLevelAppEvent) {
|
|
164
|
+
const levelsAchievements = [
|
|
165
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_3,
|
|
166
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_10,
|
|
167
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_50,
|
|
168
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_100,
|
|
169
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_200,
|
|
170
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_300,
|
|
171
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_500,
|
|
172
|
+
AchievementsCodesEnum.GLOBAL_GET_LEVEL_1000,
|
|
173
|
+
] as Array<string>;
|
|
174
|
+
|
|
175
|
+
for (const achievementCode of levelsAchievements) {
|
|
176
|
+
if (
|
|
177
|
+
this.achievemnts
|
|
178
|
+
.get(achievementCode)
|
|
179
|
+
?.userGotAchievement(event.newLevel)
|
|
180
|
+
) {
|
|
181
|
+
void this.giveAchievement(
|
|
182
|
+
achievementCode,
|
|
183
|
+
event.userId,
|
|
184
|
+
event.fullName,
|
|
185
|
+
event.game,
|
|
186
|
+
);
|
|
278
187
|
}
|
|
279
188
|
}
|
|
280
189
|
}
|
|
281
190
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
191
|
+
private processEarnOneMillion(event: GamePlayerRoundFinishedAppEvent) {
|
|
192
|
+
if (
|
|
193
|
+
this.achievemnts
|
|
194
|
+
.get(AchievementsCodesEnum.GLOBAL_EARN_ONE_MILLION)
|
|
195
|
+
?.userGotAchievement(event.getPlayer().balance)
|
|
196
|
+
) {
|
|
197
|
+
void this.giveAchievement(
|
|
198
|
+
AchievementsCodesEnum.GLOBAL_EARN_ONE_MILLION,
|
|
199
|
+
event.userId,
|
|
200
|
+
event.fullName,
|
|
201
|
+
event.game,
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
private async processFailNTimes(event: GamePlayerRoundFinishedAppEvent) {
|
|
207
|
+
const achievements = [
|
|
208
|
+
AchievementsCodesEnum.GB_FAIL_10_TIMES,
|
|
209
|
+
AchievementsCodesEnum.GB_FAIL_100_TIMES,
|
|
210
|
+
] as Array<string>;
|
|
211
|
+
|
|
212
|
+
const failGamesCount =
|
|
213
|
+
await this.activityLogRepository.getUserFailedGamesCount(
|
|
214
|
+
event.userId,
|
|
215
|
+
event.game,
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
this.processManyGBAchievements(
|
|
219
|
+
achievements,
|
|
220
|
+
failGamesCount,
|
|
221
|
+
event.userId,
|
|
222
|
+
event.fullName,
|
|
223
|
+
event.game,
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
private async processPlayNTimes(event: GamePlayerRoundFinishedAppEvent) {
|
|
228
|
+
const achievements = [
|
|
229
|
+
AchievementsCodesEnum.GB_PLAY_1000_TIMES,
|
|
230
|
+
] as Array<string>;
|
|
231
|
+
|
|
232
|
+
const playdGamesCount =
|
|
233
|
+
await this.activityLogRepository.getUserPlayedGamesCount(
|
|
234
|
+
event.userId,
|
|
235
|
+
event.game,
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
this.processManyGBAchievements(
|
|
239
|
+
achievements,
|
|
240
|
+
playdGamesCount,
|
|
241
|
+
event.userId,
|
|
242
|
+
event.fullName,
|
|
243
|
+
event.game,
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
private async processPlayNTimesADay(event: GamePlayerRoundFinishedAppEvent) {
|
|
248
|
+
const achievements = [
|
|
249
|
+
AchievementsCodesEnum.GB_PLAY_50_TIMES_A_DAY,
|
|
250
|
+
AchievementsCodesEnum.GB_PLAY_100_TIMES_A_DAY,
|
|
251
|
+
] as Array<string>;
|
|
252
|
+
|
|
253
|
+
const playdGamesADayCount =
|
|
254
|
+
await this.activityLogRepository.getUserPlayedGamesADayCount(
|
|
255
|
+
event.userId,
|
|
256
|
+
event.game,
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
this.processManyGBAchievements(
|
|
260
|
+
achievements,
|
|
261
|
+
playdGamesADayCount,
|
|
262
|
+
event.userId,
|
|
263
|
+
event.fullName,
|
|
264
|
+
event.game,
|
|
265
|
+
);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
private async processWinNTimes(event: GamePlayerRoundFinishedAppEvent) {
|
|
269
|
+
const achievements = [
|
|
270
|
+
AchievementsCodesEnum.GB_WIN_1_TIMES,
|
|
271
|
+
AchievementsCodesEnum.GB_WIN_10_TIMES,
|
|
272
|
+
AchievementsCodesEnum.GB_WIN_100_TIMES,
|
|
273
|
+
] as Array<string>;
|
|
274
|
+
|
|
275
|
+
const wonGamesCount = await this.activityLogRepository.getUserWonGamesCount(
|
|
276
|
+
event.userId,
|
|
277
|
+
event.game,
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
this.processManyGBAchievements(
|
|
281
|
+
achievements,
|
|
282
|
+
wonGamesCount,
|
|
283
|
+
event.userId,
|
|
284
|
+
event.fullName,
|
|
285
|
+
event.game,
|
|
286
|
+
);
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
private processWinNTimesARow(event: GamePlayerRoundFinishedAppEvent) {
|
|
290
|
+
const achievements = [
|
|
291
|
+
AchievementsCodesEnum.GB_WIN_3_TIMES_A_ROW,
|
|
292
|
+
AchievementsCodesEnum.GB_WIN_10_TIMES_A_ROW,
|
|
293
|
+
] as Array<string>;
|
|
294
|
+
|
|
295
|
+
this.processManyGBAchievements(
|
|
296
|
+
achievements,
|
|
297
|
+
event.getPlayer().getWinTimesARow(),
|
|
298
|
+
event.userId,
|
|
299
|
+
event.fullName,
|
|
300
|
+
event.game,
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
private async processWinNProfi(event: GamePlayerRoundFinishedAppEvent) {
|
|
305
|
+
const achievements = [
|
|
306
|
+
AchievementsCodesEnum.GB_WIN_3_PROFI,
|
|
307
|
+
] as Array<string>;
|
|
308
|
+
|
|
309
|
+
const wonProfiCount = await this.activityLogRepository.getUserWonProfiCount(
|
|
310
|
+
event.userId,
|
|
311
|
+
event.game,
|
|
312
|
+
);
|
|
313
|
+
|
|
314
|
+
this.processManyGBAchievements(
|
|
315
|
+
achievements,
|
|
316
|
+
wonProfiCount,
|
|
317
|
+
event.userId,
|
|
318
|
+
event.fullName,
|
|
319
|
+
event.game,
|
|
320
|
+
);
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
private processTakeNPlaceOnManyTablesTournament(
|
|
324
|
+
event: GamePlayerManyTablesTournamentFinishedAppEvent,
|
|
325
|
+
) {
|
|
326
|
+
const achievements = [
|
|
327
|
+
AchievementsCodesEnum.GB_TAKE_1_PLACE_ON_MANY_TABLES_TOURNAMENT,
|
|
328
|
+
AchievementsCodesEnum.GB_TAKE_2_OR_3_PLACE_AT_MANY_TABLES_TOURNAMENT,
|
|
329
|
+
] as Array<string>;
|
|
330
|
+
|
|
331
|
+
const foundPlayer = event
|
|
332
|
+
.getRoomMaster<TournamentMaster>()
|
|
333
|
+
.getTournamentResult()
|
|
334
|
+
.find((player) => player.playerId == event.getPlayer().id);
|
|
335
|
+
|
|
336
|
+
this.processManyGBAchievements(
|
|
337
|
+
achievements,
|
|
338
|
+
foundPlayer?.rank ?? 0,
|
|
339
|
+
event.userId,
|
|
340
|
+
event.fullName,
|
|
341
|
+
event.game,
|
|
342
|
+
);
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
private async processWinNTimesOneTableTournament(
|
|
346
|
+
event: GamePlayerOneTableTournamentFinishedAppEvent,
|
|
285
347
|
) {
|
|
286
|
-
|
|
287
|
-
|
|
348
|
+
const achievements = [
|
|
349
|
+
AchievementsCodesEnum.GB_WIN_ONE_TABLE_TOURNAMENT_3_TIMES,
|
|
350
|
+
] as Array<string>;
|
|
351
|
+
|
|
352
|
+
const winCount =
|
|
353
|
+
await this.activityLogRepository.getUserWonOneTableTournamentCount(
|
|
354
|
+
event.userId,
|
|
355
|
+
event.game,
|
|
356
|
+
);
|
|
357
|
+
|
|
358
|
+
this.processManyGBAchievements(
|
|
359
|
+
achievements,
|
|
360
|
+
winCount,
|
|
361
|
+
event.userId,
|
|
362
|
+
event.fullName,
|
|
363
|
+
event.game,
|
|
288
364
|
);
|
|
289
365
|
}
|
|
290
366
|
|
|
291
367
|
protected async giveAchievement(
|
|
292
|
-
allAchievements: Array<Achievement>,
|
|
293
368
|
achievementCode: string,
|
|
294
|
-
|
|
369
|
+
userId: string,
|
|
370
|
+
fullName: string,
|
|
295
371
|
game: string,
|
|
296
372
|
) {
|
|
297
|
-
const foundAchievement = allAchievements.find(
|
|
373
|
+
const foundAchievement = this.allAchievements.find(
|
|
298
374
|
(item) => item.code === achievementCode,
|
|
299
375
|
);
|
|
300
|
-
const player = this.playersManager.getPlayerById(
|
|
376
|
+
const player = this.playersManager.getPlayerById(userId);
|
|
377
|
+
const hasAchievemnt = this.usersAchievements
|
|
378
|
+
.get(userId)
|
|
379
|
+
?.find((item) => item.achievementCode !== achievementCode);
|
|
301
380
|
|
|
302
|
-
if (foundAchievement && player) {
|
|
381
|
+
if (foundAchievement && player && !hasAchievemnt) {
|
|
303
382
|
await this.usersAchievementRepository.addUsersAchievement(
|
|
304
|
-
|
|
305
|
-
|
|
383
|
+
userId,
|
|
384
|
+
fullName,
|
|
306
385
|
foundAchievement.achievementId,
|
|
307
386
|
foundAchievement.title[LanguageTypeEnum.RU],
|
|
308
|
-
|
|
387
|
+
achievementCode,
|
|
309
388
|
foundAchievement.prize,
|
|
310
|
-
|
|
389
|
+
game,
|
|
311
390
|
);
|
|
312
391
|
|
|
313
392
|
player.sendMessage(
|
|
314
393
|
new SnackbarSendToPlayerWsEvent(
|
|
315
|
-
|
|
394
|
+
this.options.gameType,
|
|
316
395
|
player.id,
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
396
|
+
new AchievementSnackbarView(
|
|
397
|
+
this.options.i18n as LocalService,
|
|
398
|
+
player.language,
|
|
399
|
+
foundAchievement,
|
|
400
|
+
this.options.achievementBonus,
|
|
401
|
+
).build(),
|
|
320
402
|
),
|
|
321
403
|
);
|
|
322
404
|
}
|
|
323
405
|
}
|
|
406
|
+
|
|
407
|
+
protected gameTypedCode(achievementCode: string): string {
|
|
408
|
+
return `${this.options.gameType}_${achievementCode}`;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
protected processManyGBAchievements(
|
|
412
|
+
achievements: Array<string>,
|
|
413
|
+
count: number,
|
|
414
|
+
userId: string,
|
|
415
|
+
fullName: string,
|
|
416
|
+
game: string,
|
|
417
|
+
) {
|
|
418
|
+
for (const achievementCode of achievements) {
|
|
419
|
+
const gbCode = this.gameTypedCode(achievementCode);
|
|
420
|
+
if (this.achievemnts.get(gbCode)?.userGotAchievement(count)) {
|
|
421
|
+
void this.giveAchievement(gbCode, userId, fullName, game);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
protected processOneUniqAchievement(
|
|
427
|
+
achievementCode: string,
|
|
428
|
+
count: number,
|
|
429
|
+
userId: string,
|
|
430
|
+
fullName: string,
|
|
431
|
+
game: string,
|
|
432
|
+
) {
|
|
433
|
+
if (this.achievemnts.get(achievementCode)?.userGotAchievement(count)) {
|
|
434
|
+
void this.giveAchievement(achievementCode, userId, fullName, game);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
324
437
|
}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { Injectable } from '@nestjs/common';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseUserAppEvent } from 'jp.ms.common.engine';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
|
|
5
5
|
@Injectable()
|
|
6
6
|
export class EventsBusAppSubscribeService {
|
|
7
|
-
private readonly appEventSubject: Subject<
|
|
7
|
+
private readonly appEventSubject: Subject<BaseUserAppEvent>;
|
|
8
8
|
|
|
9
9
|
constructor() {
|
|
10
|
-
this.appEventSubject = new Subject<
|
|
10
|
+
this.appEventSubject = new Subject<BaseUserAppEvent>();
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
pushNewEvent(event:
|
|
13
|
+
pushNewEvent(event: BaseUserAppEvent) {
|
|
14
14
|
this.appEventSubject.next(event);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
subscribe(onHandleAppEvent: (event:
|
|
17
|
+
subscribe(onHandleAppEvent: (event: BaseUserAppEvent) => void) {
|
|
18
18
|
this.appEventSubject.subscribe(onHandleAppEvent);
|
|
19
19
|
}
|
|
20
20
|
}
|
package/src/modules/index.ts
CHANGED
|
@@ -24,5 +24,10 @@ export {
|
|
|
24
24
|
EventsBusModule,
|
|
25
25
|
EventsBusMainTablesSubscribeService,
|
|
26
26
|
} from './event-bus';
|
|
27
|
-
export {
|
|
27
|
+
export {
|
|
28
|
+
BaseAchievementsModule,
|
|
29
|
+
BaseAchievementsFactoryOptions,
|
|
30
|
+
BASE_ACHIEVEMENTS_OPTIONS,
|
|
31
|
+
BaseAchievementsOptions,
|
|
32
|
+
} from './base-achievements/';
|
|
28
33
|
export { ConfirmationMessageManagerModule } from './confirmation-message-manager/confirmation-message-manager.module';
|