@infernus/core 0.8.7 → 0.9.1

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.
Files changed (106) hide show
  1. package/dist/bundle.d.ts +1553 -1551
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.mjs +1 -0
  4. package/package.json +10 -3
  5. package/rollup.config.mjs +5 -2
  6. package/.eslintrc +0 -3
  7. package/src/controllers/command/index.ts +0 -57
  8. package/src/controllers/filterscript/index.ts +0 -69
  9. package/src/controllers/gamemode/index.ts +0 -277
  10. package/src/controllers/gamemode/settings.ts +0 -3
  11. package/src/controllers/gametext/index.ts +0 -61
  12. package/src/controllers/gangzone/baseGangZone.ts +0 -284
  13. package/src/controllers/gangzone/gangZoneBus.ts +0 -8
  14. package/src/controllers/gangzone/gangZoneEvent.ts +0 -91
  15. package/src/controllers/gangzone/index.ts +0 -2
  16. package/src/controllers/i18n/index.ts +0 -81
  17. package/src/controllers/index.ts +0 -12
  18. package/src/controllers/menu/baseMenu.ts +0 -203
  19. package/src/controllers/menu/index.ts +0 -2
  20. package/src/controllers/menu/menuBus.ts +0 -8
  21. package/src/controllers/menu/menuEvent.ts +0 -76
  22. package/src/controllers/netstats/index.ts +0 -43
  23. package/src/controllers/npc/index.ts +0 -2
  24. package/src/controllers/npc/npcEvent.ts +0 -26
  25. package/src/controllers/npc/npcFunc.ts +0 -64
  26. package/src/controllers/player/basePlayer.ts +0 -980
  27. package/src/controllers/player/index.ts +0 -3
  28. package/src/controllers/player/pauseChecker.ts +0 -39
  29. package/src/controllers/player/playerBus.ts +0 -9
  30. package/src/controllers/player/playerEvent.ts +0 -468
  31. package/src/controllers/promise/client/index.ts +0 -31
  32. package/src/controllers/promise/dialog/index.ts +0 -143
  33. package/src/controllers/textdraw/baseTextDraw.ts +0 -416
  34. package/src/controllers/textdraw/index.ts +0 -2
  35. package/src/controllers/textdraw/textdrawBus.ts +0 -8
  36. package/src/controllers/textdraw/textdrawEvent.ts +0 -61
  37. package/src/controllers/vehicle/baseVehicle.ts +0 -503
  38. package/src/controllers/vehicle/index.ts +0 -2
  39. package/src/controllers/vehicle/vehicleBus.ts +0 -8
  40. package/src/controllers/vehicle/vehicleEvent.ts +0 -201
  41. package/src/enums/artwork.ts +0 -5
  42. package/src/enums/clickSources.ts +0 -3
  43. package/src/enums/dialogStyles.ts +0 -8
  44. package/src/enums/editResponseTypes.ts +0 -5
  45. package/src/enums/index.ts +0 -18
  46. package/src/enums/invalid.ts +0 -13
  47. package/src/enums/keys.ts +0 -25
  48. package/src/enums/limits.ts +0 -18
  49. package/src/enums/marker.ts +0 -5
  50. package/src/enums/netstat.ts +0 -11
  51. package/src/enums/npc.ts +0 -11
  52. package/src/enums/object.ts +0 -25
  53. package/src/enums/player.ts +0 -92
  54. package/src/enums/record.ts +0 -5
  55. package/src/enums/specialActions.ts +0 -22
  56. package/src/enums/streamer.ts +0 -10
  57. package/src/enums/textdrawFonts.ts +0 -23
  58. package/src/enums/vehicle.ts +0 -32
  59. package/src/enums/weapon.ts +0 -82
  60. package/src/interfaces/index.ts +0 -233
  61. package/src/logger/index.ts +0 -24
  62. package/src/main.ts +0 -6
  63. package/src/types/index.ts +0 -48
  64. package/src/utils/EventBus.ts +0 -60
  65. package/src/utils/animateUtils.ts +0 -2504
  66. package/src/utils/colorUtils.ts +0 -43
  67. package/src/utils/helperUtils.ts +0 -403
  68. package/src/utils/vehicleUtils.ts +0 -321
  69. package/src/wrapper/native/callbacks/index.ts +0 -395
  70. package/src/wrapper/native/functions/index.ts +0 -3131
  71. package/src/wrapper/streamer/3dtext/3dTextBus.ts +0 -8
  72. package/src/wrapper/streamer/3dtext/3dTextEvent.ts +0 -70
  73. package/src/wrapper/streamer/3dtext/base3DText.ts +0 -184
  74. package/src/wrapper/streamer/3dtext/index.ts +0 -2
  75. package/src/wrapper/streamer/actor/actorBus.ts +0 -8
  76. package/src/wrapper/streamer/actor/actorEvent.ts +0 -95
  77. package/src/wrapper/streamer/actor/baseActor.ts +0 -278
  78. package/src/wrapper/streamer/actor/index.ts +0 -2
  79. package/src/wrapper/streamer/area/areaBus.ts +0 -8
  80. package/src/wrapper/streamer/area/areaEvent.ts +0 -99
  81. package/src/wrapper/streamer/area/baseArea.ts +0 -450
  82. package/src/wrapper/streamer/area/index.ts +0 -2
  83. package/src/wrapper/streamer/checkpoint/baseCheckpoint.ts +0 -136
  84. package/src/wrapper/streamer/checkpoint/checkPointBus.ts +0 -8
  85. package/src/wrapper/streamer/checkpoint/checkPointEvent.ts +0 -100
  86. package/src/wrapper/streamer/checkpoint/index.ts +0 -2
  87. package/src/wrapper/streamer/common/index.ts +0 -318
  88. package/src/wrapper/streamer/index.ts +0 -9
  89. package/src/wrapper/streamer/mapIcon/baseMapIcon.ts +0 -128
  90. package/src/wrapper/streamer/mapIcon/index.ts +0 -2
  91. package/src/wrapper/streamer/mapIcon/mapIconBus.ts +0 -8
  92. package/src/wrapper/streamer/mapIcon/mapIconEvent.ts +0 -67
  93. package/src/wrapper/streamer/object/baseObject.ts +0 -415
  94. package/src/wrapper/streamer/object/index.ts +0 -2
  95. package/src/wrapper/streamer/object/objectBus.ts +0 -8
  96. package/src/wrapper/streamer/object/objectEvent.ts +0 -177
  97. package/src/wrapper/streamer/pickup/basePickup.ts +0 -114
  98. package/src/wrapper/streamer/pickup/index.ts +0 -2
  99. package/src/wrapper/streamer/pickup/pickupBus.ts +0 -8
  100. package/src/wrapper/streamer/pickup/pickupEvent.ts +0 -84
  101. package/src/wrapper/streamer/raceCP/baseRaceCP.ts +0 -151
  102. package/src/wrapper/streamer/raceCP/index.ts +0 -2
  103. package/src/wrapper/streamer/raceCP/raceCPBus.ts +0 -8
  104. package/src/wrapper/streamer/raceCP/raceCPEvent.ts +0 -100
  105. package/tsconfig.json +0 -16
  106. /package/{LICENSE → LICENSE.md} +0 -0
@@ -1,99 +0,0 @@
1
- import type { Player } from "@/controllers/player";
2
- import type { TCommonCallback } from "@/types";
3
- import { promisifyCallback } from "@/utils/helperUtils";
4
- import { OnGameModeExit } from "@/wrapper/native/callbacks";
5
- import {
6
- OnPlayerEnterDynamicArea,
7
- OnPlayerLeaveDynamicArea,
8
- StreamerItemTypes,
9
- } from "@infernus/streamer";
10
- import { Streamer } from "../common";
11
- import { areaBus, areaHooks } from "./areaBus";
12
- import type { DynamicArea } from "./baseArea";
13
-
14
- export class DynamicAreaEvent<P extends Player, A extends DynamicArea> {
15
- private readonly areas = new Map<number, A>();
16
- private readonly players;
17
-
18
- constructor(playersMap: Map<number, P>, destroyOnExit = true) {
19
- this.players = playersMap;
20
-
21
- areaBus.on(areaHooks.created, (res: A) => {
22
- this.areas.set(res.id, res);
23
- });
24
- areaBus.on(areaHooks.destroyed, (res: A) => {
25
- if (this.areas.has(res.id)) this.areas.delete(res.id);
26
- });
27
-
28
- if (destroyOnExit) {
29
- OnGameModeExit(() => {
30
- this.areas.forEach((a) => a.destroy());
31
- this.areas.clear();
32
- });
33
- }
34
-
35
- OnPlayerEnterDynamicArea((playerId, areaId) => {
36
- const p = this.players.get(playerId);
37
- if (!p) return 0;
38
- const a = this.areas.get(areaId);
39
- if (!a) return 0;
40
- const pFn = promisifyCallback(
41
- this,
42
- "onPlayerEnter",
43
- "OnPlayerEnterDynamicArea"
44
- );
45
- return pFn(p, a);
46
- });
47
- OnPlayerLeaveDynamicArea((playerId, areaId) => {
48
- const p = this.players.get(playerId);
49
- if (!p) return 0;
50
- const a = this.areas.get(areaId);
51
- if (!a) return 0;
52
- const pFn = promisifyCallback(
53
- this,
54
- "onPlayerLeave",
55
- "OnPlayerLeaveDynamicArea"
56
- );
57
- return pFn(p, a);
58
- });
59
- Streamer.onItemStreamIn((type, item, player) => {
60
- if (type === StreamerItemTypes.AREA) {
61
- const a = this.areas.get(item);
62
- const p = this.players.get(player);
63
- if (a && p)
64
- return promisifyCallback(
65
- this,
66
- "onStreamIn",
67
- "Streamer_OnItemStreamIn"
68
- )(a, p);
69
- }
70
- return 1;
71
- });
72
- Streamer.onItemStreamOut((type, item, player) => {
73
- if (type === StreamerItemTypes.AREA) {
74
- const a = this.areas.get(item);
75
- const p = this.players.get(player);
76
- if (a && p)
77
- return promisifyCallback(
78
- this,
79
- "onStreamOut",
80
- "Streamer_OnItemStreamOut"
81
- )(a, p);
82
- }
83
- return 1;
84
- });
85
- }
86
-
87
- onPlayerEnter?(player: P, area: A): TCommonCallback;
88
- onPlayerLeave?(player: P, area: A): TCommonCallback;
89
- onStreamIn?(area: A, player: P): TCommonCallback;
90
- onStreamOut?(area: A, player: P): TCommonCallback;
91
-
92
- getAreasArr(): Array<A> {
93
- return [...this.areas.values()];
94
- }
95
-
96
- getAreasMap(): Map<number, A> {
97
- return this.areas;
98
- }
99
- }
@@ -1,450 +0,0 @@
1
- import { logger } from "@/logger";
2
- import { InvalidEnum } from "@/enums";
3
- import type { Player } from "@/controllers/player";
4
- import type { Vehicle } from "@/controllers/vehicle";
5
- import type { TDynamicArea, TDynamicAreaTypes } from "@/types";
6
- import { areaBus, areaHooks } from "./areaBus";
7
- import type { StreamerAreaTypes } from "@infernus/streamer";
8
- import {
9
- AttachDynamicAreaToObject,
10
- AttachDynamicAreaToPlayer,
11
- AttachDynamicAreaToVehicle,
12
- CreateDynamicCircle,
13
- CreateDynamicCircleEx,
14
- CreateDynamicCuboid,
15
- CreateDynamicCuboidEx,
16
- CreateDynamicCylinder,
17
- CreateDynamicCylinderEx,
18
- CreateDynamicPolygon,
19
- CreateDynamicPolygonEx,
20
- CreateDynamicRectangle,
21
- CreateDynamicRectangleEx,
22
- CreateDynamicSphere,
23
- CreateDynamicSphereEx,
24
- DestroyDynamicArea,
25
- GetDynamicAreasForLine,
26
- GetDynamicAreasForPoint,
27
- GetDynamicAreaType,
28
- GetDynamicPolygonNumberPoints,
29
- GetDynamicPolygonPoints,
30
- GetNumberDynamicAreasForLine,
31
- GetNumberDynamicAreasForPoint,
32
- GetPlayerDynamicAreas,
33
- GetPlayerNumberDynamicAreas,
34
- IsAnyPlayerInAnyDynamicArea,
35
- IsAnyPlayerInDynamicArea,
36
- IsLineInAnyDynamicArea,
37
- IsLineInDynamicArea,
38
- IsPlayerInAnyDynamicArea,
39
- IsPlayerInDynamicArea,
40
- IsPointInAnyDynamicArea,
41
- IsPointInDynamicArea,
42
- IsToggleDynAreaSpectateMode,
43
- IsValidDynamicArea,
44
- StreamerItemTypes,
45
- StreamerObjectTypes,
46
- ToggleDynAreaSpectateMode,
47
- } from "@infernus/streamer";
48
- import type { DynamicObject } from "../object";
49
- import { Streamer } from "../common";
50
-
51
- export class DynamicArea {
52
- private sourceInfo: TDynamicArea;
53
- private _id = -1;
54
- get type(): TDynamicAreaTypes {
55
- return this.sourceInfo.type;
56
- }
57
- get id(): number {
58
- return this._id;
59
- }
60
- constructor(area: TDynamicArea) {
61
- this.sourceInfo = area;
62
- }
63
- create(): void | this {
64
- if (this.id !== -1)
65
- return logger.warn("[StreamerArea]: Unable to create area again");
66
- let { worldid, interiorid, playerid } = this.sourceInfo;
67
- const { type, extended } = this.sourceInfo;
68
-
69
- if (extended) {
70
- if (typeof worldid === "number") worldid = [-1];
71
- else worldid ??= [-1];
72
- if (typeof interiorid === "number") interiorid = [-1];
73
- else interiorid ??= [-1];
74
- if (typeof playerid === "number") playerid = [-1];
75
- else playerid ??= [-1];
76
-
77
- if (type === "circle") {
78
- const { x, y, size } = this.sourceInfo;
79
- if (size < 0)
80
- return logger.error("[StreamerArea]: Invalid circle extend size");
81
- this._id = CreateDynamicCircleEx(
82
- x,
83
- y,
84
- size,
85
- worldid,
86
- interiorid,
87
- playerid
88
- );
89
- } else if (type === "cuboid") {
90
- const { minx, miny, minz, maxx, maxy, maxz } = this.sourceInfo;
91
- this._id = CreateDynamicCuboidEx(
92
- minx,
93
- miny,
94
- minz,
95
- maxx,
96
- maxy,
97
- maxz,
98
- worldid,
99
- interiorid,
100
- playerid
101
- );
102
- } else if (type === "cylinder") {
103
- const { x, y, minz, maxz, size } = this.sourceInfo;
104
- if (size < 0)
105
- return logger.error("[StreamerArea]: Invalid cylinder extend size");
106
- this._id = CreateDynamicCylinderEx(
107
- x,
108
- y,
109
- minz,
110
- maxz,
111
- size,
112
- worldid,
113
- interiorid,
114
- playerid
115
- );
116
- } else if (type === "polygon") {
117
- const { points, minz, maxz } = this.sourceInfo;
118
- if (points.length % 2 !== 0)
119
- return logger.warn(
120
- "[StreamerArea]: Unable to create polygon extended with asymmetrical points"
121
- );
122
- this._id = CreateDynamicPolygonEx(
123
- points,
124
- minz,
125
- maxz,
126
- worldid,
127
- interiorid,
128
- playerid
129
- );
130
- } else if (type === "rectangle") {
131
- const { minx, miny, maxx, maxy } = this.sourceInfo;
132
- this._id = CreateDynamicRectangleEx(
133
- minx,
134
- miny,
135
- maxx,
136
- maxy,
137
- worldid,
138
- interiorid,
139
- playerid
140
- );
141
- } else {
142
- const { x, y, z, size } = this.sourceInfo;
143
- if (size < 0)
144
- return logger.error("[StreamerArea]: Invalid sphere extended size");
145
- this._id = CreateDynamicSphereEx(
146
- x,
147
- y,
148
- z,
149
- size,
150
- worldid,
151
- interiorid,
152
- playerid
153
- );
154
- }
155
- } else {
156
- if (Array.isArray(worldid)) worldid = -1;
157
- else worldid ??= -1;
158
- if (Array.isArray(interiorid)) interiorid = -1;
159
- else interiorid ??= -1;
160
- if (Array.isArray(playerid)) playerid = -1;
161
- else playerid ??= -1;
162
-
163
- if (type === "circle") {
164
- const { x, y, size } = this.sourceInfo;
165
- if (size < 0)
166
- return logger.error("[StreamerArea]: Invalid circle size");
167
- this._id = CreateDynamicCircle(
168
- x,
169
- y,
170
- size,
171
- worldid,
172
- interiorid,
173
- playerid
174
- );
175
- } else if (type === "cuboid") {
176
- const { minx, miny, minz, maxx, maxy, maxz } = this.sourceInfo;
177
- this._id = CreateDynamicCuboid(
178
- minx,
179
- miny,
180
- minz,
181
- maxx,
182
- maxy,
183
- maxz,
184
- worldid,
185
- interiorid,
186
- playerid
187
- );
188
- } else if (type === "cylinder") {
189
- const { x, y, minz, maxz, size } = this.sourceInfo;
190
- if (size < 0)
191
- return logger.error("[StreamerArea]: Invalid cylinder size");
192
- this._id = CreateDynamicCylinder(
193
- x,
194
- y,
195
- minz,
196
- maxz,
197
- size,
198
- worldid,
199
- interiorid,
200
- playerid
201
- );
202
- } else if (type === "polygon") {
203
- const { points, minz, maxz } = this.sourceInfo;
204
- if (points.length % 2 !== 0)
205
- return logger.warn(
206
- "[StreamerArea]: Unable to create polygon with asymmetrical points"
207
- );
208
- this._id = CreateDynamicPolygon(
209
- points,
210
- minz,
211
- maxz,
212
- worldid,
213
- interiorid,
214
- playerid
215
- );
216
- } else if (type === "rectangle") {
217
- const { minx, miny, maxx, maxy } = this.sourceInfo;
218
- this._id = CreateDynamicRectangle(
219
- minx,
220
- miny,
221
- maxx,
222
- maxy,
223
- worldid,
224
- interiorid,
225
- playerid
226
- );
227
- } else {
228
- const { x, y, z, size } = this.sourceInfo;
229
- if (size < 0)
230
- return logger.error("[StreamerArea]: Invalid sphere size");
231
- this._id = CreateDynamicSphere(
232
- x,
233
- y,
234
- z,
235
- size,
236
- worldid,
237
- interiorid,
238
- playerid
239
- );
240
- }
241
- }
242
- areaBus.emit(areaHooks.created, this);
243
- return this;
244
- }
245
- destroy(): void | this {
246
- if (this.id === -1)
247
- return logger.warn(
248
- "[StreamerArea]: Unable to destroy the area before create"
249
- );
250
- DestroyDynamicArea(this.id);
251
- areaBus.emit(areaHooks.destroyed, this);
252
- return this;
253
- }
254
- isValid(): boolean {
255
- if (this.id === -1) return false;
256
- return IsValidDynamicArea(this.id);
257
- }
258
- getType(): void | StreamerAreaTypes {
259
- if (this.id !== -1)
260
- return logger.warn("[StreamerArea]: Unable to get type before create");
261
- return GetDynamicAreaType(this.id);
262
- }
263
- getPolygonPoints(): void | number[] {
264
- if (this.id !== -1)
265
- return logger.warn(
266
- "[StreamerArea]: Unable to get polygon points before create"
267
- );
268
- if (this.type !== "polygon") return undefined;
269
- return GetDynamicPolygonPoints(this.id);
270
- }
271
- getPolygonNumberPoints(): void | number {
272
- if (this.id !== -1)
273
- return logger.warn(
274
- "[StreamerArea]: Unable to get polygon points number before create"
275
- );
276
- if (this.type !== "polygon") return undefined;
277
- return GetDynamicPolygonNumberPoints(this.id);
278
- }
279
- isPlayerIn<P extends Player>(player: P, recheck = false): boolean {
280
- if (this.id === -1) return false;
281
- return IsPlayerInDynamicArea(player.id, this.id, recheck);
282
- }
283
- static isPlayerInAny<P extends Player>(player: P, recheck = false): boolean {
284
- return IsPlayerInAnyDynamicArea(player.id, recheck);
285
- }
286
- isAnyPlayerIn(recheck = false): boolean {
287
- if (this.id === -1) return false;
288
- return IsAnyPlayerInDynamicArea(this.id, recheck);
289
- }
290
- static isAnyPlayerInAny(recheck = false): boolean {
291
- return IsAnyPlayerInAnyDynamicArea(recheck);
292
- }
293
- static getPlayerAreas<P extends Player, A extends DynamicArea>(
294
- player: P,
295
- areas: Map<number, A>
296
- ): Array<A | undefined> {
297
- if (!DynamicArea.getPlayerAreasNumber(player)) return [];
298
- const ids = GetPlayerDynamicAreas(player.id);
299
- return ids.map((a) => areas.get(a));
300
- }
301
- static getPlayerAreasNumber<P extends Player>(player: P) {
302
- return GetPlayerNumberDynamicAreas(player.id);
303
- }
304
- isPointIn(x: number, y: number, z: number): boolean {
305
- if (this.id === -1) return false;
306
- return IsPointInDynamicArea(this.id, x, y, z);
307
- }
308
- static isPointInAny(x: number, y: number, z: number): boolean {
309
- return IsPointInAnyDynamicArea(x, y, z);
310
- }
311
- isLineIn(
312
- x1: number,
313
- y1: number,
314
- z1: number,
315
- x2: number,
316
- y2: number,
317
- z2: number
318
- ): boolean {
319
- if (this.id === -1) return false;
320
- return IsLineInDynamicArea(this.id, x1, y1, z1, x2, y2, z2);
321
- }
322
- static isLineInAny(
323
- x1: number,
324
- y1: number,
325
- z1: number,
326
- x2: number,
327
- y2: number,
328
- z2: number
329
- ): boolean {
330
- return IsLineInAnyDynamicArea(x1, y1, z1, x2, y2, z2);
331
- }
332
- static getForPoint<A extends DynamicArea>(
333
- x: number,
334
- y: number,
335
- z: number,
336
- areas: Map<number, A>
337
- ): Array<A | undefined> {
338
- if (!DynamicArea.getNumberForPoint(x, y, z)) return [];
339
- const ids = GetDynamicAreasForPoint(x, y, z);
340
- return ids.map((a) => areas.get(a));
341
- }
342
- static getNumberForPoint(x: number, y: number, z: number): number {
343
- return GetNumberDynamicAreasForPoint(x, y, z);
344
- }
345
- static getForLine<A extends DynamicArea>(
346
- x1: number,
347
- y1: number,
348
- z1: number,
349
- x2: number,
350
- y2: number,
351
- z2: number,
352
- areas: Map<number, A>
353
- ): Array<A | undefined> {
354
- if (!DynamicArea.getNumberForLine(x1, y1, z1, x2, y2, z2)) return [];
355
- const ids = GetDynamicAreasForLine(x1, y1, z1, x2, y2, z2);
356
- return ids.map((a) => areas.get(a));
357
- }
358
- static getNumberForLine(
359
- x1: number,
360
- y1: number,
361
- z1: number,
362
- x2: number,
363
- y2: number,
364
- z2: number
365
- ): number {
366
- return GetNumberDynamicAreasForLine(x1, y1, z1, x2, y2, z2);
367
- }
368
- attachToObject<O extends DynamicObject>(
369
- obj: O,
370
- offsetx = 0.0,
371
- offsety = 0.0,
372
- offsetz = 0.0
373
- ): void | number {
374
- if (this.id === -1 || obj.id === -1)
375
- return logger.warn(
376
- "[StreamerArea]: Unable to toggle attach to object before create"
377
- );
378
- return AttachDynamicAreaToObject(
379
- this.id,
380
- obj.id,
381
- StreamerObjectTypes.DYNAMIC,
382
- InvalidEnum.PLAYER_ID,
383
- offsetx,
384
- offsety,
385
- offsetz
386
- );
387
- }
388
- attachToPlayer<P extends Player>(
389
- player: P,
390
- offsetx = 0.0,
391
- offsety = 0.0,
392
- offsetz = 0.0
393
- ): void | number {
394
- if (this.id === -1 || player.id === -1)
395
- return logger.warn(
396
- "[StreamerArea]: Unable to toggle attach to player before create"
397
- );
398
- return AttachDynamicAreaToPlayer(
399
- this.id,
400
- player.id,
401
- offsetx,
402
- offsety,
403
- offsetz
404
- );
405
- }
406
- attachToVehicle<V extends Vehicle>(
407
- vehicle: V,
408
- offsetx = 0.0,
409
- offsety = 0.0,
410
- offsetz = 0.0
411
- ): void | number {
412
- if (this.id === -1 || vehicle.id === -1)
413
- return logger.warn(
414
- "[StreamerArea]: Unable to toggle attach to vehicle before create"
415
- );
416
- return AttachDynamicAreaToVehicle(
417
- this.id,
418
- vehicle.id,
419
- offsetx,
420
- offsety,
421
- offsetz
422
- );
423
- }
424
- toggleSpectateMode(toggle: boolean): void | number {
425
- if (this.id === -1)
426
- return logger.warn(
427
- "[StreamerArea]: Unable to toggle specate mode before create"
428
- );
429
- return ToggleDynAreaSpectateMode(this.id, toggle);
430
- }
431
- isToggleSpectateMode(): boolean {
432
- if (this.id === -1) return false;
433
- return IsToggleDynAreaSpectateMode(this.id);
434
- }
435
- toggleCallbacks(toggle = true): void | number {
436
- if (this.id === -1)
437
- return logger.warn(
438
- "[StreamerArea]: Unable to toggle callbacks before create"
439
- );
440
- return Streamer.toggleItemCallbacks(
441
- StreamerItemTypes.AREA,
442
- this.id,
443
- toggle
444
- );
445
- }
446
- isToggleCallbacks(): boolean {
447
- if (this.id === -1) false;
448
- return Streamer.isToggleItemCallbacks(StreamerItemTypes.AREA, this.id);
449
- }
450
- }
@@ -1,2 +0,0 @@
1
- export * from "./baseArea";
2
- export * from "./areaEvent";
@@ -1,136 +0,0 @@
1
- import type { Player } from "@/controllers/player";
2
- import { logger } from "@/logger";
3
- import type { IDynamicCheckPoint } from "@/interfaces";
4
- import {
5
- CreateDynamicCP,
6
- CreateDynamicCPEx,
7
- DestroyDynamicCP,
8
- GetPlayerVisibleDynamicCP,
9
- IsPlayerInDynamicCP,
10
- IsValidDynamicCP,
11
- StreamerDistances,
12
- StreamerItemTypes,
13
- TogglePlayerAllDynamicCPs,
14
- TogglePlayerDynamicCP,
15
- } from "@infernus/streamer";
16
- import { checkPointBus, checkPointHooks } from "./checkPointBus";
17
- import { Streamer } from "../common";
18
-
19
- export class DynamicCheckpoint {
20
- private sourceInfo: IDynamicCheckPoint;
21
- private _id = -1;
22
- get id(): number {
23
- return this._id;
24
- }
25
- constructor(checkPoint: IDynamicCheckPoint) {
26
- this.sourceInfo = checkPoint;
27
- }
28
- create(): void | this {
29
- if (this.id !== -1)
30
- return logger.warn(
31
- "[StreamerCheckpoint]: Unable to create checkpoint again"
32
- );
33
- let { streamdistance, worldid, interiorid, playerid, areaid, priority } =
34
- this.sourceInfo;
35
- const { size, x, y, z, extended } = this.sourceInfo;
36
-
37
- if (size < 0)
38
- return logger.error("[StreamerCheckpoint]: Invalid checkpoint size");
39
-
40
- streamdistance ??= StreamerDistances.CP_SD;
41
- priority ??= 0;
42
-
43
- if (extended) {
44
- if (typeof worldid === "number") worldid = [-1];
45
- else worldid ??= [-1];
46
- if (typeof interiorid === "number") interiorid = [-1];
47
- else interiorid ??= [-1];
48
- if (typeof playerid === "number") playerid = [-1];
49
- else playerid ??= [-1];
50
- if (typeof areaid === "number") areaid = [-1];
51
- else areaid ??= [-1];
52
-
53
- this._id = CreateDynamicCPEx(
54
- x,
55
- y,
56
- z,
57
- size,
58
- streamdistance,
59
- worldid,
60
- interiorid,
61
- playerid,
62
- areaid,
63
- priority
64
- );
65
- } else {
66
- if (Array.isArray(worldid)) worldid = -1;
67
- else worldid ??= -1;
68
- if (Array.isArray(interiorid)) interiorid = -1;
69
- else interiorid ??= -1;
70
- if (Array.isArray(playerid)) playerid = -1;
71
- else playerid ??= -1;
72
- if (Array.isArray(areaid)) areaid = -1;
73
- else areaid ??= -1;
74
-
75
- this._id = CreateDynamicCP(
76
- x,
77
- y,
78
- z,
79
- size,
80
- worldid,
81
- interiorid,
82
- playerid,
83
- streamdistance,
84
- areaid,
85
- priority
86
- );
87
- }
88
-
89
- checkPointBus.emit(checkPointHooks.created, this);
90
- return this;
91
- }
92
- destroy(): void | this {
93
- if (this.id === -1)
94
- return logger.warn(
95
- "[StreamerCheckpoint]: Unable to destroy the checkpoint before create"
96
- );
97
- DestroyDynamicCP(this.id);
98
- checkPointBus.emit(checkPointHooks.destroyed, this);
99
- return this;
100
- }
101
- isValid(): boolean {
102
- return IsValidDynamicCP(this.id);
103
- }
104
- togglePlayer<P extends Player>(player: P, toggle: boolean): void | this {
105
- if (this.id === -1)
106
- return logger.warn(
107
- "[StreamerCheckpoint]: Unable to toggle the player before create"
108
- );
109
- TogglePlayerDynamicCP(player.id, this.id, toggle);
110
- return this;
111
- }
112
- static togglePlayerAll<P extends Player>(player: P, toggle: boolean): number {
113
- return TogglePlayerAllDynamicCPs(player.id, toggle);
114
- }
115
- isPlayerIn<P extends Player>(player: P): boolean {
116
- if (this.id === -1) return false;
117
- return IsPlayerInDynamicCP(player.id, this.id);
118
- }
119
- static getPlayerVisible<P extends Player, C extends DynamicCheckpoint>(
120
- player: P,
121
- checkpoints: Map<number, C>
122
- ): C | undefined {
123
- return checkpoints.get(GetPlayerVisibleDynamicCP(player.id));
124
- }
125
- toggleCallbacks(toggle = true): void | number {
126
- if (this.id === -1)
127
- return logger.warn(
128
- "[StreamerCheckpoint]: Unable to toggle callbacks before create"
129
- );
130
- return Streamer.toggleItemCallbacks(StreamerItemTypes.CP, this.id, toggle);
131
- }
132
- isToggleCallbacks(): boolean {
133
- if (this.id === -1) false;
134
- return Streamer.isToggleItemCallbacks(StreamerItemTypes.CP, this.id);
135
- }
136
- }
@@ -1,8 +0,0 @@
1
- import { EventBus } from "@/utils/eventBus";
2
-
3
- export enum checkPointHooks {
4
- created = "OnCheckPointCreate",
5
- destroyed = "OnCheckPointDestroy",
6
- }
7
-
8
- export const checkPointBus = new EventBus();