@open-core/framework 1.0.1-beta.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.
- package/LICENSE +373 -0
- package/README.md +350 -0
- package/dist/client/client-bootstrap.d.ts +1 -0
- package/dist/client/client-bootstrap.js +53 -0
- package/dist/client/client-container.d.ts +2 -0
- package/dist/client/client-container.js +6 -0
- package/dist/client/client-core.d.ts +18 -0
- package/dist/client/client-core.js +52 -0
- package/dist/client/decorators/controller.d.ts +3 -0
- package/dist/client/decorators/controller.js +14 -0
- package/dist/client/decorators/export.d.ts +7 -0
- package/dist/client/decorators/export.js +15 -0
- package/dist/client/decorators/gameEvent.d.ts +47 -0
- package/dist/client/decorators/gameEvent.js +54 -0
- package/dist/client/decorators/index.d.ts +10 -0
- package/dist/client/decorators/index.js +26 -0
- package/dist/client/decorators/interval.d.ts +7 -0
- package/dist/client/decorators/interval.js +15 -0
- package/dist/client/decorators/key.d.ts +2 -0
- package/dist/client/decorators/key.js +10 -0
- package/dist/client/decorators/localEvent.d.ts +7 -0
- package/dist/client/decorators/localEvent.js +15 -0
- package/dist/client/decorators/nui.d.ts +1 -0
- package/dist/client/decorators/nui.js +9 -0
- package/dist/client/decorators/onNet.d.ts +1 -0
- package/dist/client/decorators/onNet.js +9 -0
- package/dist/client/decorators/resourceLifecycle.d.ts +11 -0
- package/dist/client/decorators/resourceLifecycle.js +24 -0
- package/dist/client/decorators/tick.d.ts +1 -0
- package/dist/client/decorators/tick.js +9 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +22 -0
- package/dist/client/loaders/exports.loader.d.ts +1 -0
- package/dist/client/loaders/exports.loader.js +13 -0
- package/dist/client/player/player.d.ts +262 -0
- package/dist/client/player/player.js +480 -0
- package/dist/client/player/player.loader.d.ts +1 -0
- package/dist/client/player/player.loader.js +22 -0
- package/dist/client/services/core/index.d.ts +1 -0
- package/dist/client/services/core/index.js +17 -0
- package/dist/client/services/core/spawn.service.d.ts +20 -0
- package/dist/client/services/core/spawn.service.js +143 -0
- package/dist/client/services/index.d.ts +4 -0
- package/dist/client/services/index.js +24 -0
- package/dist/client/services/streaming/index.d.ts +1 -0
- package/dist/client/services/streaming/index.js +17 -0
- package/dist/client/services/streaming/streaming.service.d.ts +165 -0
- package/dist/client/services/streaming/streaming.service.js +341 -0
- package/dist/client/services/ui/index.d.ts +3 -0
- package/dist/client/services/ui/index.js +19 -0
- package/dist/client/services/ui/notification.service.d.ts +76 -0
- package/dist/client/services/ui/notification.service.js +111 -0
- package/dist/client/services/ui/progress.service.d.ts +82 -0
- package/dist/client/services/ui/progress.service.js +210 -0
- package/dist/client/services/ui/textui.service.d.ts +82 -0
- package/dist/client/services/ui/textui.service.js +156 -0
- package/dist/client/services/world/blip.service.d.ts +112 -0
- package/dist/client/services/world/blip.service.js +215 -0
- package/dist/client/services/world/index.d.ts +4 -0
- package/dist/client/services/world/index.js +20 -0
- package/dist/client/services/world/marker.service.d.ts +94 -0
- package/dist/client/services/world/marker.service.js +153 -0
- package/dist/client/services/world/ped.service.d.ts +182 -0
- package/dist/client/services/world/ped.service.js +302 -0
- package/dist/client/services/world/vehicle.service.d.ts +168 -0
- package/dist/client/services/world/vehicle.service.js +296 -0
- package/dist/client/system/metadata-client.keys.d.ts +13 -0
- package/dist/client/system/metadata-client.keys.js +16 -0
- package/dist/client/system/processors/export.processor.d.ts +7 -0
- package/dist/client/system/processors/export.processor.js +39 -0
- package/dist/client/system/processors/gameEvent.processor.d.ts +10 -0
- package/dist/client/system/processors/gameEvent.processor.js +58 -0
- package/dist/client/system/processors/interval.processor.d.ts +7 -0
- package/dist/client/system/processors/interval.processor.js +43 -0
- package/dist/client/system/processors/key.processor.d.ts +8 -0
- package/dist/client/system/processors/key.processor.js +27 -0
- package/dist/client/system/processors/localEvent.processor.d.ts +7 -0
- package/dist/client/system/processors/localEvent.processor.js +38 -0
- package/dist/client/system/processors/netEvent.processor.d.ts +7 -0
- package/dist/client/system/processors/netEvent.processor.js +38 -0
- package/dist/client/system/processors/nui.processor.d.ts +7 -0
- package/dist/client/system/processors/nui.processor.js +40 -0
- package/dist/client/system/processors/resourceLifecycle.processor.d.ts +9 -0
- package/dist/client/system/processors/resourceLifecycle.processor.js +69 -0
- package/dist/client/system/processors/tick.processor.d.ts +5 -0
- package/dist/client/system/processors/tick.processor.js +37 -0
- package/dist/client/system/processors.register.d.ts +1 -0
- package/dist/client/system/processors.register.js +27 -0
- package/dist/client/types/game-events.d.ts +126 -0
- package/dist/client/types/game-events.js +83 -0
- package/dist/client/types/index.d.ts +1 -0
- package/dist/client/types/index.js +17 -0
- package/dist/client/ui-bridge.d.ts +116 -0
- package/dist/client/ui-bridge.js +201 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +46 -0
- package/dist/server/bootstrap.d.ts +16 -0
- package/dist/server/bootstrap.js +57 -0
- package/dist/server/bus/core-event-bus.d.ts +6 -0
- package/dist/server/bus/core-event-bus.js +31 -0
- package/dist/server/configs/api.config.d.ts +71 -0
- package/dist/server/configs/api.config.js +81 -0
- package/dist/server/configs/config.base.d.ts +63 -0
- package/dist/server/configs/config.base.js +64 -0
- package/dist/server/configs/index.d.ts +2 -0
- package/dist/server/configs/index.js +18 -0
- package/dist/server/container.d.ts +2 -0
- package/dist/server/container.js +6 -0
- package/dist/server/controllers/chat.controller.d.ts +10 -0
- package/dist/server/controllers/chat.controller.js +50 -0
- package/dist/server/controllers/command.controller.d.ts +7 -0
- package/dist/server/controllers/command.controller.js +47 -0
- package/dist/server/core.d.ts +1 -0
- package/dist/server/core.js +7 -0
- package/dist/server/database/adapters/oxmysql.adapter.d.ts +89 -0
- package/dist/server/database/adapters/oxmysql.adapter.js +149 -0
- package/dist/server/database/database.contract.d.ts +128 -0
- package/dist/server/database/database.contract.js +29 -0
- package/dist/server/database/database.service.d.ts +216 -0
- package/dist/server/database/database.service.js +301 -0
- package/dist/server/database/index.d.ts +53 -0
- package/dist/server/database/index.js +70 -0
- package/dist/server/database/types.d.ts +67 -0
- package/dist/server/database/types.js +7 -0
- package/dist/server/database.d.ts +7 -0
- package/dist/server/database.js +23 -0
- package/dist/server/decorators/bind.d.ts +2 -0
- package/dist/server/decorators/bind.js +15 -0
- package/dist/server/decorators/command.d.ts +19 -0
- package/dist/server/decorators/command.js +18 -0
- package/dist/server/decorators/controller.d.ts +3 -0
- package/dist/server/decorators/controller.js +14 -0
- package/dist/server/decorators/coreEvent.d.ts +2 -0
- package/dist/server/decorators/coreEvent.js +9 -0
- package/dist/server/decorators/export.d.ts +1 -0
- package/dist/server/decorators/export.js +9 -0
- package/dist/server/decorators/guard.d.ts +5 -0
- package/dist/server/decorators/guard.js +39 -0
- package/dist/server/decorators/index.d.ts +10 -0
- package/dist/server/decorators/index.js +26 -0
- package/dist/server/decorators/netEvent.d.ts +36 -0
- package/dist/server/decorators/netEvent.js +40 -0
- package/dist/server/decorators/onTick.d.ts +1 -0
- package/dist/server/decorators/onTick.js +9 -0
- package/dist/server/decorators/public.d.ts +16 -0
- package/dist/server/decorators/public.js +25 -0
- package/dist/server/decorators/requiresState.d.ts +55 -0
- package/dist/server/decorators/requiresState.js +62 -0
- package/dist/server/decorators/throttle.d.ts +9 -0
- package/dist/server/decorators/throttle.js +36 -0
- package/dist/server/decorators/utils.d.ts +7 -0
- package/dist/server/decorators/utils.js +13 -0
- package/dist/server/entities/index.d.ts +1 -0
- package/dist/server/entities/index.js +17 -0
- package/dist/server/entities/player.d.ts +157 -0
- package/dist/server/entities/player.js +217 -0
- package/dist/server/error-handler.d.ts +2 -0
- package/dist/server/error-handler.js +43 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.js +29 -0
- package/dist/server/loaders/exports.loader.d.ts +0 -0
- package/dist/server/loaders/exports.loader.js +23 -0
- package/dist/server/loaders/playerSession.loader.d.ts +1 -0
- package/dist/server/loaders/playerSession.loader.js +42 -0
- package/dist/server/services/access-control.service.d.ts +56 -0
- package/dist/server/services/access-control.service.js +99 -0
- package/dist/server/services/chat.service.d.ts +7 -0
- package/dist/server/services/chat.service.js +31 -0
- package/dist/server/services/command.service.d.ts +15 -0
- package/dist/server/services/command.service.js +74 -0
- package/dist/server/services/config.service.d.ts +75 -0
- package/dist/server/services/config.service.js +116 -0
- package/dist/server/services/default/default-security.handler.d.ts +6 -0
- package/dist/server/services/default/default-security.handler.js +26 -0
- package/dist/server/services/http/http.service.d.ts +50 -0
- package/dist/server/services/http/http.service.js +126 -0
- package/dist/server/services/index.d.ts +10 -0
- package/dist/server/services/index.js +26 -0
- package/dist/server/services/parallel/index.d.ts +49 -0
- package/dist/server/services/parallel/index.js +67 -0
- package/dist/server/services/parallel/parallel-compute.service.d.ts +132 -0
- package/dist/server/services/parallel/parallel-compute.service.js +449 -0
- package/dist/server/services/parallel/types.d.ts +188 -0
- package/dist/server/services/parallel/types.js +7 -0
- package/dist/server/services/parallel/worker-pool.d.ts +83 -0
- package/dist/server/services/parallel/worker-pool.js +350 -0
- package/dist/server/services/parallel/worker.d.ts +19 -0
- package/dist/server/services/parallel/worker.js +49 -0
- package/dist/server/services/persistence.service.d.ts +59 -0
- package/dist/server/services/persistence.service.js +166 -0
- package/dist/server/services/player.service.d.ts +96 -0
- package/dist/server/services/player.service.js +132 -0
- package/dist/server/services/rate-limiter.service.d.ts +5 -0
- package/dist/server/services/rate-limiter.service.js +39 -0
- package/dist/server/services/registers.d.ts +1 -0
- package/dist/server/services/registers.js +18 -0
- package/dist/server/setup.d.ts +9 -0
- package/dist/server/setup.js +28 -0
- package/dist/server/system/metadata-server.keys.d.ts +9 -0
- package/dist/server/system/metadata-server.keys.js +12 -0
- package/dist/server/system/processors/command.processor.d.ts +9 -0
- package/dist/server/system/processors/command.processor.js +31 -0
- package/dist/server/system/processors/coreEvent.processor.d.ts +7 -0
- package/dist/server/system/processors/coreEvent.processor.js +38 -0
- package/dist/server/system/processors/export.processor.d.ts +7 -0
- package/dist/server/system/processors/export.processor.js +26 -0
- package/dist/server/system/processors/netEvent.processor.d.ts +11 -0
- package/dist/server/system/processors/netEvent.processor.js +100 -0
- package/dist/server/system/processors/tick.processor.d.ts +5 -0
- package/dist/server/system/processors/tick.processor.js +36 -0
- package/dist/server/system/processors.register.d.ts +1 -0
- package/dist/server/system/processors.register.js +21 -0
- package/dist/server/templates/admin/admin.controller-template.d.ts +10 -0
- package/dist/server/templates/admin/admin.controller-template.js +2 -0
- package/dist/server/templates/auth/auth-provider.contract.d.ts +58 -0
- package/dist/server/templates/auth/auth-provider.contract.js +23 -0
- package/dist/server/templates/index.d.ts +8 -0
- package/dist/server/templates/index.js +21 -0
- package/dist/server/templates/persistence/index.d.ts +30 -0
- package/dist/server/templates/persistence/index.js +34 -0
- package/dist/server/templates/persistence/player-persistence.contract.d.ts +86 -0
- package/dist/server/templates/persistence/player-persistence.contract.js +52 -0
- package/dist/server/templates/repository/index.d.ts +57 -0
- package/dist/server/templates/repository/index.js +61 -0
- package/dist/server/templates/repository/repository.contract.d.ts +224 -0
- package/dist/server/templates/repository/repository.contract.js +342 -0
- package/dist/server/templates/repository/repository.types.d.ts +51 -0
- package/dist/server/templates/repository/repository.types.js +7 -0
- package/dist/server/templates/security/permission.types.d.ts +32 -0
- package/dist/server/templates/security/permission.types.js +2 -0
- package/dist/server/templates/security/principal-provider.contract.d.ts +43 -0
- package/dist/server/templates/security/principal-provider.contract.js +19 -0
- package/dist/server/templates/security/security-handler.contract.d.ts +5 -0
- package/dist/server/templates/security/security-handler.contract.js +6 -0
- package/dist/server/types/core-events.d.ts +17 -0
- package/dist/server/types/core-events.js +2 -0
- package/dist/server/types/security.types.d.ts +7 -0
- package/dist/server/types/security.types.js +2 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +17 -0
- package/dist/shared/logger/core-logger.d.ts +35 -0
- package/dist/shared/logger/core-logger.js +52 -0
- package/dist/shared/logger/index.d.ts +11 -0
- package/dist/shared/logger/index.js +26 -0
- package/dist/shared/logger/logger.config.d.ts +47 -0
- package/dist/shared/logger/logger.config.js +33 -0
- package/dist/shared/logger/logger.service.d.ts +161 -0
- package/dist/shared/logger/logger.service.js +279 -0
- package/dist/shared/logger/logger.types.d.ts +85 -0
- package/dist/shared/logger/logger.types.js +74 -0
- package/dist/shared/logger/transports/buffered.transport.d.ts +88 -0
- package/dist/shared/logger/transports/buffered.transport.js +174 -0
- package/dist/shared/logger/transports/console.transport.d.ts +37 -0
- package/dist/shared/logger/transports/console.transport.js +134 -0
- package/dist/shared/logger/transports/index.d.ts +3 -0
- package/dist/shared/logger/transports/index.js +19 -0
- package/dist/shared/logger/transports/transport.interface.d.ts +40 -0
- package/dist/shared/logger/transports/transport.interface.js +2 -0
- package/dist/system/class-constructor.d.ts +1 -0
- package/dist/system/class-constructor.js +2 -0
- package/dist/system/decorator-processor.d.ts +4 -0
- package/dist/system/decorator-processor.js +2 -0
- package/dist/system/metadata.scanner.d.ts +7 -0
- package/dist/system/metadata.scanner.js +45 -0
- package/dist/utils/errors.d.ts +14 -0
- package/dist/utils/errors.js +25 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/result.d.ts +12 -0
- package/dist/utils/result.js +10 -0
- package/dist/utils/rgb.d.ts +5 -0
- package/dist/utils/rgb.js +2 -0
- package/dist/utils/vector3.d.ts +13 -0
- package/dist/utils/vector3.js +27 -0
- package/package.json +70 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Core services
|
|
18
|
+
__exportStar(require("./core"), exports);
|
|
19
|
+
// UI services
|
|
20
|
+
__exportStar(require("./ui"), exports);
|
|
21
|
+
// World services
|
|
22
|
+
__exportStar(require("./world"), exports);
|
|
23
|
+
// Streaming services
|
|
24
|
+
__exportStar(require("./streaming"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './streaming.service';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./streaming.service"), exports);
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
export interface StreamingRequest {
|
|
2
|
+
type: 'model' | 'animDict' | 'ptfx' | 'texture' | 'audio';
|
|
3
|
+
asset: string;
|
|
4
|
+
loaded: boolean;
|
|
5
|
+
hash?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Service for managing asset streaming (models, animations, particles, etc.).
|
|
9
|
+
*/
|
|
10
|
+
export declare class StreamingService {
|
|
11
|
+
private loadedAssets;
|
|
12
|
+
/**
|
|
13
|
+
* Request and load a model.
|
|
14
|
+
*
|
|
15
|
+
* @param model - Model name or hash
|
|
16
|
+
* @param timeout - Maximum wait time in ms
|
|
17
|
+
* @returns Whether the model was loaded successfully
|
|
18
|
+
*/
|
|
19
|
+
requestModel(model: string | number, timeout?: number): Promise<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* Check if a model is loaded.
|
|
22
|
+
*
|
|
23
|
+
* @param model - Model name or hash
|
|
24
|
+
*/
|
|
25
|
+
isModelLoaded(model: string | number): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Release a loaded model.
|
|
28
|
+
*
|
|
29
|
+
* @param model - Model name or hash
|
|
30
|
+
*/
|
|
31
|
+
releaseModel(model: string | number): void;
|
|
32
|
+
/**
|
|
33
|
+
* Check if a model is valid and exists in the game files.
|
|
34
|
+
*
|
|
35
|
+
* @param model - Model name or hash
|
|
36
|
+
*/
|
|
37
|
+
isModelValid(model: string | number): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a model is a vehicle.
|
|
40
|
+
*
|
|
41
|
+
* @param model - Model name or hash
|
|
42
|
+
*/
|
|
43
|
+
isModelVehicle(model: string | number): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Check if a model is a ped.
|
|
46
|
+
*
|
|
47
|
+
* @param model - Model name or hash
|
|
48
|
+
*/
|
|
49
|
+
isModelPed(model: string | number): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* Request and load an animation dictionary.
|
|
52
|
+
*
|
|
53
|
+
* @param dict - Animation dictionary name
|
|
54
|
+
* @param timeout - Maximum wait time in ms
|
|
55
|
+
* @returns Whether the dictionary was loaded successfully
|
|
56
|
+
*/
|
|
57
|
+
requestAnimDict(dict: string, timeout?: number): Promise<boolean>;
|
|
58
|
+
/**
|
|
59
|
+
* Check if an animation dictionary is loaded.
|
|
60
|
+
*
|
|
61
|
+
* @param dict - Animation dictionary name
|
|
62
|
+
*/
|
|
63
|
+
isAnimDictLoaded(dict: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Release a loaded animation dictionary.
|
|
66
|
+
*
|
|
67
|
+
* @param dict - Animation dictionary name
|
|
68
|
+
*/
|
|
69
|
+
releaseAnimDict(dict: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Request and load a particle effect asset.
|
|
72
|
+
*
|
|
73
|
+
* @param asset - PTFX asset name
|
|
74
|
+
* @param timeout - Maximum wait time in ms
|
|
75
|
+
* @returns Whether the asset was loaded successfully
|
|
76
|
+
*/
|
|
77
|
+
requestPtfxAsset(asset: string, timeout?: number): Promise<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* Check if a PTFX asset is loaded.
|
|
80
|
+
*
|
|
81
|
+
* @param asset - PTFX asset name
|
|
82
|
+
*/
|
|
83
|
+
isPtfxAssetLoaded(asset: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Release a loaded PTFX asset.
|
|
86
|
+
*
|
|
87
|
+
* @param asset - PTFX asset name
|
|
88
|
+
*/
|
|
89
|
+
releasePtfxAsset(asset: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* Start a particle effect at a position.
|
|
92
|
+
*
|
|
93
|
+
* @param asset - PTFX asset name
|
|
94
|
+
* @param effectName - Effect name within the asset
|
|
95
|
+
* @param position - World position
|
|
96
|
+
* @param rotation - Rotation
|
|
97
|
+
* @param scale - Scale
|
|
98
|
+
* @param looped - Whether to loop
|
|
99
|
+
* @returns The particle effect handle
|
|
100
|
+
*/
|
|
101
|
+
startParticleEffect(asset: string, effectName: string, position: {
|
|
102
|
+
x: number;
|
|
103
|
+
y: number;
|
|
104
|
+
z: number;
|
|
105
|
+
}, rotation?: {
|
|
106
|
+
x: number;
|
|
107
|
+
y: number;
|
|
108
|
+
z: number;
|
|
109
|
+
}, scale?: number, looped?: boolean): Promise<number>;
|
|
110
|
+
/**
|
|
111
|
+
* Stop a looped particle effect.
|
|
112
|
+
*
|
|
113
|
+
* @param handle - Particle effect handle
|
|
114
|
+
*/
|
|
115
|
+
stopParticleEffect(handle: number): void;
|
|
116
|
+
/**
|
|
117
|
+
* Request and load a texture dictionary.
|
|
118
|
+
*
|
|
119
|
+
* @param dict - Texture dictionary name
|
|
120
|
+
* @param timeout - Maximum wait time in ms
|
|
121
|
+
* @returns Whether the dictionary was loaded successfully
|
|
122
|
+
*/
|
|
123
|
+
requestTextureDict(dict: string, timeout?: number): Promise<boolean>;
|
|
124
|
+
/**
|
|
125
|
+
* Check if a texture dictionary is loaded.
|
|
126
|
+
*
|
|
127
|
+
* @param dict - Texture dictionary name
|
|
128
|
+
*/
|
|
129
|
+
isTextureDictLoaded(dict: string): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Release a loaded texture dictionary.
|
|
132
|
+
*
|
|
133
|
+
* @param dict - Texture dictionary name
|
|
134
|
+
*/
|
|
135
|
+
releaseTextureDict(dict: string): void;
|
|
136
|
+
/**
|
|
137
|
+
* Request and load a script audio bank.
|
|
138
|
+
*
|
|
139
|
+
* @param audioBank - Audio bank name
|
|
140
|
+
* @param networked - Whether the audio should be networked
|
|
141
|
+
* @param timeout - Maximum wait time in ms
|
|
142
|
+
* @returns Whether the audio bank was loaded successfully
|
|
143
|
+
*/
|
|
144
|
+
requestAudioBank(audioBank: string, networked?: boolean, _timeout?: number): Promise<boolean>;
|
|
145
|
+
/**
|
|
146
|
+
* Release a loaded audio bank.
|
|
147
|
+
*
|
|
148
|
+
* @param audioBank - Audio bank name
|
|
149
|
+
*/
|
|
150
|
+
releaseAudioBank(audioBank: string): void;
|
|
151
|
+
/**
|
|
152
|
+
* Get all currently loaded assets.
|
|
153
|
+
*/
|
|
154
|
+
getLoadedAssets(): StreamingRequest[];
|
|
155
|
+
/**
|
|
156
|
+
* Release all loaded assets.
|
|
157
|
+
*/
|
|
158
|
+
releaseAll(): void;
|
|
159
|
+
/**
|
|
160
|
+
* Get hash key for a string.
|
|
161
|
+
*
|
|
162
|
+
* @param str - String to hash
|
|
163
|
+
*/
|
|
164
|
+
getHash(str: string): number;
|
|
165
|
+
}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.StreamingService = void 0;
|
|
10
|
+
const tsyringe_1 = require("tsyringe");
|
|
11
|
+
/**
|
|
12
|
+
* Service for managing asset streaming (models, animations, particles, etc.).
|
|
13
|
+
*/
|
|
14
|
+
let StreamingService = class StreamingService {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.loadedAssets = new Map();
|
|
17
|
+
}
|
|
18
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
19
|
+
// Model Loading
|
|
20
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
/**
|
|
22
|
+
* Request and load a model.
|
|
23
|
+
*
|
|
24
|
+
* @param model - Model name or hash
|
|
25
|
+
* @param timeout - Maximum wait time in ms
|
|
26
|
+
* @returns Whether the model was loaded successfully
|
|
27
|
+
*/
|
|
28
|
+
async requestModel(model, timeout = 10000) {
|
|
29
|
+
var _a;
|
|
30
|
+
const hash = typeof model === 'string' ? GetHashKey(model) : model;
|
|
31
|
+
const key = `model:${hash}`;
|
|
32
|
+
// Already loaded
|
|
33
|
+
if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
// Check if valid
|
|
37
|
+
if (!IsModelInCdimage(hash) || !IsModelValid(hash)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
RequestModel(hash);
|
|
41
|
+
const startTime = GetGameTimer();
|
|
42
|
+
while (!HasModelLoaded(hash)) {
|
|
43
|
+
if (GetGameTimer() - startTime > timeout) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
47
|
+
}
|
|
48
|
+
this.loadedAssets.set(key, { type: 'model', asset: String(model), loaded: true, hash });
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if a model is loaded.
|
|
53
|
+
*
|
|
54
|
+
* @param model - Model name or hash
|
|
55
|
+
*/
|
|
56
|
+
isModelLoaded(model) {
|
|
57
|
+
const hash = typeof model === 'string' ? GetHashKey(model) : model;
|
|
58
|
+
return HasModelLoaded(hash);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Release a loaded model.
|
|
62
|
+
*
|
|
63
|
+
* @param model - Model name or hash
|
|
64
|
+
*/
|
|
65
|
+
releaseModel(model) {
|
|
66
|
+
const hash = typeof model === 'string' ? GetHashKey(model) : model;
|
|
67
|
+
SetModelAsNoLongerNeeded(hash);
|
|
68
|
+
this.loadedAssets.delete(`model:${hash}`);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Check if a model is valid and exists in the game files.
|
|
72
|
+
*
|
|
73
|
+
* @param model - Model name or hash
|
|
74
|
+
*/
|
|
75
|
+
isModelValid(model) {
|
|
76
|
+
const hash = typeof model === 'string' ? GetHashKey(model) : model;
|
|
77
|
+
return IsModelInCdimage(hash) && IsModelValid(hash);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if a model is a vehicle.
|
|
81
|
+
*
|
|
82
|
+
* @param model - Model name or hash
|
|
83
|
+
*/
|
|
84
|
+
isModelVehicle(model) {
|
|
85
|
+
const hash = typeof model === 'string' ? GetHashKey(model) : model;
|
|
86
|
+
return IsModelAVehicle(hash);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if a model is a ped.
|
|
90
|
+
*
|
|
91
|
+
* @param model - Model name or hash
|
|
92
|
+
*/
|
|
93
|
+
isModelPed(model) {
|
|
94
|
+
const hash = typeof model === 'string' ? GetHashKey(model) : model;
|
|
95
|
+
return IsModelAPed(hash);
|
|
96
|
+
}
|
|
97
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
98
|
+
// Animation Dictionary Loading
|
|
99
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
100
|
+
/**
|
|
101
|
+
* Request and load an animation dictionary.
|
|
102
|
+
*
|
|
103
|
+
* @param dict - Animation dictionary name
|
|
104
|
+
* @param timeout - Maximum wait time in ms
|
|
105
|
+
* @returns Whether the dictionary was loaded successfully
|
|
106
|
+
*/
|
|
107
|
+
async requestAnimDict(dict, timeout = 10000) {
|
|
108
|
+
var _a;
|
|
109
|
+
const key = `anim:${dict}`;
|
|
110
|
+
// Already loaded
|
|
111
|
+
if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
RequestAnimDict(dict);
|
|
115
|
+
const startTime = GetGameTimer();
|
|
116
|
+
while (!HasAnimDictLoaded(dict)) {
|
|
117
|
+
if (GetGameTimer() - startTime > timeout) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
121
|
+
}
|
|
122
|
+
this.loadedAssets.set(key, { type: 'animDict', asset: dict, loaded: true });
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Check if an animation dictionary is loaded.
|
|
127
|
+
*
|
|
128
|
+
* @param dict - Animation dictionary name
|
|
129
|
+
*/
|
|
130
|
+
isAnimDictLoaded(dict) {
|
|
131
|
+
return HasAnimDictLoaded(dict);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Release a loaded animation dictionary.
|
|
135
|
+
*
|
|
136
|
+
* @param dict - Animation dictionary name
|
|
137
|
+
*/
|
|
138
|
+
releaseAnimDict(dict) {
|
|
139
|
+
RemoveAnimDict(dict);
|
|
140
|
+
this.loadedAssets.delete(`anim:${dict}`);
|
|
141
|
+
}
|
|
142
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
143
|
+
// Particle Effects (PTFX) Loading
|
|
144
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
145
|
+
/**
|
|
146
|
+
* Request and load a particle effect asset.
|
|
147
|
+
*
|
|
148
|
+
* @param asset - PTFX asset name
|
|
149
|
+
* @param timeout - Maximum wait time in ms
|
|
150
|
+
* @returns Whether the asset was loaded successfully
|
|
151
|
+
*/
|
|
152
|
+
async requestPtfxAsset(asset, timeout = 10000) {
|
|
153
|
+
var _a;
|
|
154
|
+
const key = `ptfx:${asset}`;
|
|
155
|
+
// Already loaded
|
|
156
|
+
if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
RequestNamedPtfxAsset(asset);
|
|
160
|
+
const startTime = GetGameTimer();
|
|
161
|
+
while (!HasNamedPtfxAssetLoaded(asset)) {
|
|
162
|
+
if (GetGameTimer() - startTime > timeout) {
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
166
|
+
}
|
|
167
|
+
this.loadedAssets.set(key, { type: 'ptfx', asset, loaded: true });
|
|
168
|
+
return true;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Check if a PTFX asset is loaded.
|
|
172
|
+
*
|
|
173
|
+
* @param asset - PTFX asset name
|
|
174
|
+
*/
|
|
175
|
+
isPtfxAssetLoaded(asset) {
|
|
176
|
+
return HasNamedPtfxAssetLoaded(asset);
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Release a loaded PTFX asset.
|
|
180
|
+
*
|
|
181
|
+
* @param asset - PTFX asset name
|
|
182
|
+
*/
|
|
183
|
+
releasePtfxAsset(asset) {
|
|
184
|
+
RemoveNamedPtfxAsset(asset);
|
|
185
|
+
this.loadedAssets.delete(`ptfx:${asset}`);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Start a particle effect at a position.
|
|
189
|
+
*
|
|
190
|
+
* @param asset - PTFX asset name
|
|
191
|
+
* @param effectName - Effect name within the asset
|
|
192
|
+
* @param position - World position
|
|
193
|
+
* @param rotation - Rotation
|
|
194
|
+
* @param scale - Scale
|
|
195
|
+
* @param looped - Whether to loop
|
|
196
|
+
* @returns The particle effect handle
|
|
197
|
+
*/
|
|
198
|
+
async startParticleEffect(asset, effectName, position, rotation = { x: 0, y: 0, z: 0 }, scale = 1.0, looped = false) {
|
|
199
|
+
await this.requestPtfxAsset(asset);
|
|
200
|
+
UseParticleFxAssetNextCall(asset);
|
|
201
|
+
if (looped) {
|
|
202
|
+
return StartParticleFxLoopedAtCoord(effectName, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z, scale, false, false, false, false);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
return StartParticleFxNonLoopedAtCoord(effectName, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z, scale, false, false, false);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Stop a looped particle effect.
|
|
210
|
+
*
|
|
211
|
+
* @param handle - Particle effect handle
|
|
212
|
+
*/
|
|
213
|
+
stopParticleEffect(handle) {
|
|
214
|
+
StopParticleFxLooped(handle, false);
|
|
215
|
+
}
|
|
216
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
217
|
+
// Texture Dictionary Loading
|
|
218
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
219
|
+
/**
|
|
220
|
+
* Request and load a texture dictionary.
|
|
221
|
+
*
|
|
222
|
+
* @param dict - Texture dictionary name
|
|
223
|
+
* @param timeout - Maximum wait time in ms
|
|
224
|
+
* @returns Whether the dictionary was loaded successfully
|
|
225
|
+
*/
|
|
226
|
+
async requestTextureDict(dict, timeout = 10000) {
|
|
227
|
+
var _a;
|
|
228
|
+
const key = `texture:${dict}`;
|
|
229
|
+
// Already loaded
|
|
230
|
+
if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
RequestStreamedTextureDict(dict, true);
|
|
234
|
+
const startTime = GetGameTimer();
|
|
235
|
+
while (!HasStreamedTextureDictLoaded(dict)) {
|
|
236
|
+
if (GetGameTimer() - startTime > timeout) {
|
|
237
|
+
return false;
|
|
238
|
+
}
|
|
239
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
240
|
+
}
|
|
241
|
+
this.loadedAssets.set(key, { type: 'texture', asset: dict, loaded: true });
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Check if a texture dictionary is loaded.
|
|
246
|
+
*
|
|
247
|
+
* @param dict - Texture dictionary name
|
|
248
|
+
*/
|
|
249
|
+
isTextureDictLoaded(dict) {
|
|
250
|
+
return HasStreamedTextureDictLoaded(dict);
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Release a loaded texture dictionary.
|
|
254
|
+
*
|
|
255
|
+
* @param dict - Texture dictionary name
|
|
256
|
+
*/
|
|
257
|
+
releaseTextureDict(dict) {
|
|
258
|
+
SetStreamedTextureDictAsNoLongerNeeded(dict);
|
|
259
|
+
this.loadedAssets.delete(`texture:${dict}`);
|
|
260
|
+
}
|
|
261
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
262
|
+
// Audio Loading
|
|
263
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
264
|
+
/**
|
|
265
|
+
* Request and load a script audio bank.
|
|
266
|
+
*
|
|
267
|
+
* @param audioBank - Audio bank name
|
|
268
|
+
* @param networked - Whether the audio should be networked
|
|
269
|
+
* @param timeout - Maximum wait time in ms
|
|
270
|
+
* @returns Whether the audio bank was loaded successfully
|
|
271
|
+
*/
|
|
272
|
+
async requestAudioBank(audioBank, networked = false, _timeout = 10000) {
|
|
273
|
+
var _a;
|
|
274
|
+
const key = `audio:${audioBank}`;
|
|
275
|
+
// Already loaded
|
|
276
|
+
if ((_a = this.loadedAssets.get(key)) === null || _a === void 0 ? void 0 : _a.loaded) {
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
const success = RequestScriptAudioBank(audioBank, networked);
|
|
280
|
+
if (!success)
|
|
281
|
+
return false;
|
|
282
|
+
this.loadedAssets.set(key, { type: 'audio', asset: audioBank, loaded: true });
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Release a loaded audio bank.
|
|
287
|
+
*
|
|
288
|
+
* @param audioBank - Audio bank name
|
|
289
|
+
*/
|
|
290
|
+
releaseAudioBank(audioBank) {
|
|
291
|
+
ReleaseScriptAudioBank();
|
|
292
|
+
this.loadedAssets.delete(`audio:${audioBank}`);
|
|
293
|
+
}
|
|
294
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
295
|
+
// Utility Methods
|
|
296
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
297
|
+
/**
|
|
298
|
+
* Get all currently loaded assets.
|
|
299
|
+
*/
|
|
300
|
+
getLoadedAssets() {
|
|
301
|
+
return Array.from(this.loadedAssets.values());
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Release all loaded assets.
|
|
305
|
+
*/
|
|
306
|
+
releaseAll() {
|
|
307
|
+
for (const asset of this.loadedAssets.values()) {
|
|
308
|
+
switch (asset.type) {
|
|
309
|
+
case 'model':
|
|
310
|
+
if (asset.hash)
|
|
311
|
+
SetModelAsNoLongerNeeded(asset.hash);
|
|
312
|
+
break;
|
|
313
|
+
case 'animDict':
|
|
314
|
+
RemoveAnimDict(asset.asset);
|
|
315
|
+
break;
|
|
316
|
+
case 'ptfx':
|
|
317
|
+
RemoveNamedPtfxAsset(asset.asset);
|
|
318
|
+
break;
|
|
319
|
+
case 'texture':
|
|
320
|
+
SetStreamedTextureDictAsNoLongerNeeded(asset.asset);
|
|
321
|
+
break;
|
|
322
|
+
case 'audio':
|
|
323
|
+
ReleaseScriptAudioBank();
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
this.loadedAssets.clear();
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Get hash key for a string.
|
|
331
|
+
*
|
|
332
|
+
* @param str - String to hash
|
|
333
|
+
*/
|
|
334
|
+
getHash(str) {
|
|
335
|
+
return GetHashKey(str);
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
exports.StreamingService = StreamingService;
|
|
339
|
+
exports.StreamingService = StreamingService = __decorate([
|
|
340
|
+
(0, tsyringe_1.injectable)()
|
|
341
|
+
], StreamingService);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./notification.service"), exports);
|
|
18
|
+
__exportStar(require("./textui.service"), exports);
|
|
19
|
+
__exportStar(require("./progress.service"), exports);
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export type NotificationType = 'info' | 'success' | 'warning' | 'error';
|
|
2
|
+
export interface AdvancedNotificationOptions {
|
|
3
|
+
/** Notification title */
|
|
4
|
+
title: string;
|
|
5
|
+
/** Notification subtitle */
|
|
6
|
+
subtitle?: string;
|
|
7
|
+
/** Message text */
|
|
8
|
+
message: string;
|
|
9
|
+
/** Texture dictionary for the icon */
|
|
10
|
+
textureDict?: string;
|
|
11
|
+
/** Texture name for the icon */
|
|
12
|
+
textureName?: string;
|
|
13
|
+
/** Icon type (1-7) */
|
|
14
|
+
iconType?: number;
|
|
15
|
+
/** Flash the notification */
|
|
16
|
+
flash?: boolean;
|
|
17
|
+
/** Save to brief (map menu) */
|
|
18
|
+
saveToBrief?: boolean;
|
|
19
|
+
/** Background color index */
|
|
20
|
+
backgroundColor?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Service for displaying native GTA V notifications.
|
|
24
|
+
*/
|
|
25
|
+
export declare class NotificationService {
|
|
26
|
+
/**
|
|
27
|
+
* Show a simple notification on screen.
|
|
28
|
+
*
|
|
29
|
+
* @param message - The message to display
|
|
30
|
+
* @param blink - Whether the notification should blink
|
|
31
|
+
*/
|
|
32
|
+
show(message: string, blink?: boolean): void;
|
|
33
|
+
/**
|
|
34
|
+
* Show a notification with a type indicator using throbber icons.
|
|
35
|
+
*
|
|
36
|
+
* @param message - The message to display
|
|
37
|
+
* @param type - The notification type
|
|
38
|
+
*/
|
|
39
|
+
showWithType(message: string, type?: NotificationType): void;
|
|
40
|
+
/**
|
|
41
|
+
* Show an advanced notification with picture/icon.
|
|
42
|
+
*
|
|
43
|
+
* @param options - Advanced notification options
|
|
44
|
+
*/
|
|
45
|
+
showAdvanced(options: AdvancedNotificationOptions): void;
|
|
46
|
+
/**
|
|
47
|
+
* Show a help notification (appears at top-left).
|
|
48
|
+
*
|
|
49
|
+
* @param message - The help message
|
|
50
|
+
* @param duration - How long to show in milliseconds (-1 for indefinite)
|
|
51
|
+
* @param beep - Play a beep sound
|
|
52
|
+
* @param looped - Keep showing until cleared
|
|
53
|
+
*/
|
|
54
|
+
showHelp(message: string, duration?: number, beep?: boolean, looped?: boolean): void;
|
|
55
|
+
/**
|
|
56
|
+
* Clear all help messages.
|
|
57
|
+
*/
|
|
58
|
+
clearHelp(): void;
|
|
59
|
+
/**
|
|
60
|
+
* Show a subtitle (centered at bottom of screen).
|
|
61
|
+
*
|
|
62
|
+
* @param message - The subtitle text
|
|
63
|
+
* @param duration - Duration in milliseconds
|
|
64
|
+
*/
|
|
65
|
+
showSubtitle(message: string, duration?: number): void;
|
|
66
|
+
/**
|
|
67
|
+
* Clear the current subtitle.
|
|
68
|
+
*/
|
|
69
|
+
clearSubtitle(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Show a floating help text above the player's head.
|
|
72
|
+
*
|
|
73
|
+
* @param message - The message to display
|
|
74
|
+
*/
|
|
75
|
+
showFloatingHelp(message: string): void;
|
|
76
|
+
}
|