@infernus/core 0.8.7 → 0.9.0
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/bundle.js +1 -1
- package/dist/bundle.mjs +1 -0
- package/package.json +10 -3
- package/rollup.config.mjs +5 -2
- package/.eslintrc +0 -3
- package/src/controllers/command/index.ts +0 -57
- package/src/controllers/filterscript/index.ts +0 -69
- package/src/controllers/gamemode/index.ts +0 -277
- package/src/controllers/gamemode/settings.ts +0 -3
- package/src/controllers/gametext/index.ts +0 -61
- package/src/controllers/gangzone/baseGangZone.ts +0 -284
- package/src/controllers/gangzone/gangZoneBus.ts +0 -8
- package/src/controllers/gangzone/gangZoneEvent.ts +0 -91
- package/src/controllers/gangzone/index.ts +0 -2
- package/src/controllers/i18n/index.ts +0 -81
- package/src/controllers/index.ts +0 -12
- package/src/controllers/menu/baseMenu.ts +0 -203
- package/src/controllers/menu/index.ts +0 -2
- package/src/controllers/menu/menuBus.ts +0 -8
- package/src/controllers/menu/menuEvent.ts +0 -76
- package/src/controllers/netstats/index.ts +0 -43
- package/src/controllers/npc/index.ts +0 -2
- package/src/controllers/npc/npcEvent.ts +0 -26
- package/src/controllers/npc/npcFunc.ts +0 -64
- package/src/controllers/player/basePlayer.ts +0 -980
- package/src/controllers/player/index.ts +0 -3
- package/src/controllers/player/pauseChecker.ts +0 -39
- package/src/controllers/player/playerBus.ts +0 -9
- package/src/controllers/player/playerEvent.ts +0 -468
- package/src/controllers/promise/client/index.ts +0 -31
- package/src/controllers/promise/dialog/index.ts +0 -143
- package/src/controllers/textdraw/baseTextDraw.ts +0 -416
- package/src/controllers/textdraw/index.ts +0 -2
- package/src/controllers/textdraw/textdrawBus.ts +0 -8
- package/src/controllers/textdraw/textdrawEvent.ts +0 -61
- package/src/controllers/vehicle/baseVehicle.ts +0 -503
- package/src/controllers/vehicle/index.ts +0 -2
- package/src/controllers/vehicle/vehicleBus.ts +0 -8
- package/src/controllers/vehicle/vehicleEvent.ts +0 -201
- package/src/enums/artwork.ts +0 -5
- package/src/enums/clickSources.ts +0 -3
- package/src/enums/dialogStyles.ts +0 -8
- package/src/enums/editResponseTypes.ts +0 -5
- package/src/enums/index.ts +0 -18
- package/src/enums/invalid.ts +0 -13
- package/src/enums/keys.ts +0 -25
- package/src/enums/limits.ts +0 -18
- package/src/enums/marker.ts +0 -5
- package/src/enums/netstat.ts +0 -11
- package/src/enums/npc.ts +0 -11
- package/src/enums/object.ts +0 -25
- package/src/enums/player.ts +0 -92
- package/src/enums/record.ts +0 -5
- package/src/enums/specialActions.ts +0 -22
- package/src/enums/streamer.ts +0 -10
- package/src/enums/textdrawFonts.ts +0 -23
- package/src/enums/vehicle.ts +0 -32
- package/src/enums/weapon.ts +0 -82
- package/src/interfaces/index.ts +0 -233
- package/src/logger/index.ts +0 -24
- package/src/main.ts +0 -6
- package/src/types/index.ts +0 -48
- package/src/utils/EventBus.ts +0 -60
- package/src/utils/animateUtils.ts +0 -2504
- package/src/utils/colorUtils.ts +0 -43
- package/src/utils/helperUtils.ts +0 -403
- package/src/utils/vehicleUtils.ts +0 -321
- package/src/wrapper/native/callbacks/index.ts +0 -395
- package/src/wrapper/native/functions/index.ts +0 -3131
- package/src/wrapper/streamer/3dtext/3dTextBus.ts +0 -8
- package/src/wrapper/streamer/3dtext/3dTextEvent.ts +0 -70
- package/src/wrapper/streamer/3dtext/base3DText.ts +0 -184
- package/src/wrapper/streamer/3dtext/index.ts +0 -2
- package/src/wrapper/streamer/actor/actorBus.ts +0 -8
- package/src/wrapper/streamer/actor/actorEvent.ts +0 -95
- package/src/wrapper/streamer/actor/baseActor.ts +0 -278
- package/src/wrapper/streamer/actor/index.ts +0 -2
- package/src/wrapper/streamer/area/areaBus.ts +0 -8
- package/src/wrapper/streamer/area/areaEvent.ts +0 -99
- package/src/wrapper/streamer/area/baseArea.ts +0 -450
- package/src/wrapper/streamer/area/index.ts +0 -2
- package/src/wrapper/streamer/checkpoint/baseCheckpoint.ts +0 -136
- package/src/wrapper/streamer/checkpoint/checkPointBus.ts +0 -8
- package/src/wrapper/streamer/checkpoint/checkPointEvent.ts +0 -100
- package/src/wrapper/streamer/checkpoint/index.ts +0 -2
- package/src/wrapper/streamer/common/index.ts +0 -318
- package/src/wrapper/streamer/index.ts +0 -9
- package/src/wrapper/streamer/mapIcon/baseMapIcon.ts +0 -128
- package/src/wrapper/streamer/mapIcon/index.ts +0 -2
- package/src/wrapper/streamer/mapIcon/mapIconBus.ts +0 -8
- package/src/wrapper/streamer/mapIcon/mapIconEvent.ts +0 -67
- package/src/wrapper/streamer/object/baseObject.ts +0 -415
- package/src/wrapper/streamer/object/index.ts +0 -2
- package/src/wrapper/streamer/object/objectBus.ts +0 -8
- package/src/wrapper/streamer/object/objectEvent.ts +0 -177
- package/src/wrapper/streamer/pickup/basePickup.ts +0 -114
- package/src/wrapper/streamer/pickup/index.ts +0 -2
- package/src/wrapper/streamer/pickup/pickupBus.ts +0 -8
- package/src/wrapper/streamer/pickup/pickupEvent.ts +0 -84
- package/src/wrapper/streamer/raceCP/baseRaceCP.ts +0 -151
- package/src/wrapper/streamer/raceCP/index.ts +0 -2
- package/src/wrapper/streamer/raceCP/raceCPBus.ts +0 -8
- package/src/wrapper/streamer/raceCP/raceCPEvent.ts +0 -100
- package/tsconfig.json +0 -16
- /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,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
|
-
}
|