@open-core/framework 1.0.5-beta.2 → 1.0.6
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/README.md +2 -8
- package/dist/adapters/contracts/IEngineEvents.d.ts +3 -3
- package/dist/adapters/contracts/IExports.d.ts +2 -2
- package/dist/adapters/contracts/client/IClientLocalPlayerBridge.d.ts +21 -0
- package/dist/adapters/contracts/client/IClientLocalPlayerBridge.js +6 -0
- package/dist/adapters/contracts/client/IClientRuntimeBridge.d.ts +5 -5
- package/dist/adapters/contracts/client/camera/IClientCameraPort.d.ts +107 -0
- package/dist/adapters/contracts/client/camera/IClientCameraPort.js +8 -0
- package/dist/adapters/contracts/client/camera/index.d.ts +1 -0
- package/dist/adapters/contracts/client/camera/index.js +1 -0
- package/dist/adapters/contracts/client/index.d.ts +4 -0
- package/dist/adapters/contracts/client/index.js +4 -0
- package/dist/adapters/contracts/client/ped/IClientPedPort.d.ts +62 -0
- package/dist/adapters/contracts/client/ped/IClientPedPort.js +5 -0
- package/dist/adapters/contracts/client/ped/index.d.ts +1 -0
- package/dist/adapters/contracts/client/ped/index.js +1 -0
- package/dist/adapters/contracts/client/progress/IClientProgressPort.d.ts +53 -0
- package/dist/adapters/contracts/client/progress/IClientProgressPort.js +8 -0
- package/dist/adapters/contracts/client/progress/index.d.ts +1 -0
- package/dist/adapters/contracts/client/progress/index.js +1 -0
- package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.d.ts +5 -6
- package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.js +5 -1
- package/dist/adapters/contracts/client/spawn/IClientSpawnPort.d.ts +19 -0
- package/dist/adapters/contracts/client/spawn/IClientSpawnPort.js +2 -0
- package/dist/adapters/contracts/client/spawn/index.d.ts +2 -0
- package/dist/adapters/contracts/client/spawn/index.js +2 -0
- package/dist/adapters/contracts/client/spawn/types.d.ts +3 -0
- package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.d.ts +1 -0
- package/dist/adapters/contracts/client/ui/webview/types.d.ts +2 -0
- package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.d.ts +166 -0
- package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.js +8 -0
- package/dist/adapters/contracts/client/vehicle/index.d.ts +1 -0
- package/dist/adapters/contracts/client/vehicle/index.js +1 -0
- package/dist/adapters/contracts/transport/events.api.d.ts +3 -3
- package/dist/adapters/contracts/transport/index.d.ts +1 -0
- package/dist/adapters/contracts/transport/index.js +1 -0
- package/dist/adapters/contracts/transport/rpc-error.d.ts +17 -0
- package/dist/adapters/contracts/transport/rpc-error.js +28 -0
- package/dist/adapters/contracts/transport/rpc.api.d.ts +3 -3
- package/dist/adapters/node/transport/node.events.d.ts +4 -4
- package/dist/adapters/node/transport/node.rpc.d.ts +3 -3
- package/dist/adapters/node/transport/node.rpc.js +1 -1
- package/dist/contracts.d.ts +1 -0
- package/dist/contracts.js +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/kernel/logger/client-log-console.js +8 -8
- package/dist/kernel/logger/index.d.ts +1 -1
- package/dist/kernel/logger/index.js +1 -1
- package/dist/kernel/logger/logger.types.d.ts +1 -0
- package/dist/kernel/logger/logger.types.js +35 -0
- package/dist/kernel/logger/transports/buffered.transport.js +4 -4
- package/dist/kernel/logger/transports/console.transport.js +2 -2
- package/dist/kernel/logger/transports/simple-console.transport.js +2 -2
- package/dist/runtime/client/adapter/index.d.ts +5 -0
- package/dist/runtime/client/adapter/index.js +5 -0
- package/dist/runtime/client/adapter/node-camera-port.d.ts +19 -0
- package/dist/runtime/client/adapter/node-camera-port.js +31 -0
- package/dist/runtime/client/adapter/node-client-adapter.js +15 -1
- package/dist/runtime/client/adapter/node-local-player-bridge.d.ts +3 -0
- package/dist/runtime/client/adapter/node-local-player-bridge.js +9 -0
- package/dist/runtime/client/adapter/node-log-console.js +8 -8
- package/dist/runtime/client/adapter/node-ped-port.d.ts +20 -0
- package/dist/runtime/client/adapter/node-ped-port.js +38 -0
- package/dist/runtime/client/adapter/node-progress-port.d.ts +8 -0
- package/dist/runtime/client/adapter/node-progress-port.js +27 -0
- package/dist/runtime/client/adapter/node-runtime-bridge.d.ts +2 -4
- package/dist/runtime/client/adapter/node-spawn-bridge.d.ts +5 -5
- package/dist/runtime/client/adapter/node-spawn-bridge.js +8 -4
- package/dist/runtime/client/adapter/node-vehicle-port.d.ts +31 -0
- package/dist/runtime/client/adapter/node-vehicle-port.js +73 -0
- package/dist/runtime/client/adapter/node-webview-bridge.d.ts +1 -0
- package/dist/runtime/client/adapter/node-webview-bridge.js +2 -0
- package/dist/runtime/client/controllers/appearance.controller.d.ts +3 -3
- package/dist/runtime/client/controllers/appearance.controller.js +11 -10
- package/dist/runtime/client/controllers/spawner.controller.js +4 -3
- package/dist/runtime/client/services/camera.d.ts +4 -26
- package/dist/runtime/client/services/camera.js +21 -27
- package/dist/runtime/client/services/notification.service.d.ts +3 -3
- package/dist/runtime/client/services/notification.service.js +7 -7
- package/dist/runtime/client/services/ped.service.d.ts +6 -21
- package/dist/runtime/client/services/ped.service.js +31 -78
- package/dist/runtime/client/services/progress.service.d.ts +4 -50
- package/dist/runtime/client/services/progress.service.js +11 -143
- package/dist/runtime/client/services/session-bridge.service.js +3 -2
- package/dist/runtime/client/services/spawn.service.d.ts +3 -5
- package/dist/runtime/client/services/spawn.service.js +12 -17
- package/dist/runtime/client/services/vehicle-client.service.d.ts +3 -3
- package/dist/runtime/client/services/vehicle-client.service.js +43 -143
- package/dist/runtime/client/services/vehicle.service.d.ts +4 -41
- package/dist/runtime/client/services/vehicle.service.js +24 -130
- package/dist/runtime/client/webview-bridge.d.ts +3 -0
- package/dist/runtime/client/webview-bridge.js +6 -0
- package/dist/runtime/client/webview.service.d.ts +1 -0
- package/dist/runtime/client/webview.service.js +5 -0
- package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.js +3 -2
- package/dist/runtime/server/adapter/node-player-lifecycle-server.js +4 -3
- package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.js +2 -1
- package/dist/runtime/server/apis/chat.api.js +6 -5
- package/dist/runtime/server/apis/npcs.api.js +2 -1
- package/dist/runtime/server/apis/parallel-compute.api.js +1 -0
- package/dist/runtime/server/apis/vehicle-modification.api.js +6 -4
- package/dist/runtime/server/apis/vehicles.api.js +7 -4
- package/dist/runtime/server/bootstrap.js +13 -12
- package/dist/runtime/server/controllers/command-export.controller.js +4 -2
- package/dist/runtime/server/controllers/remote-command-execution.controller.js +2 -1
- package/dist/runtime/server/controllers/vehicle.controller.js +6 -5
- package/dist/runtime/server/decorators/command.d.ts +2 -0
- package/dist/runtime/server/decorators/command.js +3 -1
- package/dist/runtime/server/entities/npc.d.ts +1 -1
- package/dist/runtime/server/entities/player.d.ts +1 -1
- package/dist/runtime/server/entities/player.js +10 -3
- package/dist/runtime/server/helpers/command-validation.helper.js +20 -7
- package/dist/runtime/server/helpers/function-helper.d.ts +1 -0
- package/dist/runtime/server/helpers/function-helper.js +15 -8
- package/dist/runtime/server/implementations/local/channel.local.d.ts +1 -1
- package/dist/runtime/server/implementations/local/channel.local.js +3 -2
- package/dist/runtime/server/ports/channel.api-port.d.ts +1 -1
- package/dist/runtime/server/services/parallel/worker-pool.d.ts +1 -1
- package/dist/runtime/server/services/parallel/worker-pool.js +38 -6
- package/dist/runtime/server/services/parallel/worker.js +1 -0
- package/dist/runtime/server/system/processors/onRpc.processor.js +14 -3
- package/dist/runtime/server/system/schema-generator.d.ts +1 -1
- package/dist/runtime/server/system/schema-generator.js +6 -3
- package/dist/runtime/shared/helpers/process-tuple-schema.js +3 -0
- package/dist/runtime/shared/types/system-types.d.ts +55 -0
- package/dist/runtime/shared/types/system-types.js +54 -0
- package/package.json +21 -11
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { PlayerAppearance } from '../../../kernel';
|
|
2
2
|
import { Vector3 } from '../../../kernel/utils/vector3';
|
|
3
|
-
import { IClientPlatformBridge } from '../adapter/platform-bridge';
|
|
4
3
|
import { AppearanceService } from './appearance.service';
|
|
5
|
-
import {
|
|
4
|
+
import { IClientSpawnPort } from '../../../adapters/contracts/client/spawn/IClientSpawnPort';
|
|
6
5
|
interface SpawnOptions {
|
|
7
6
|
appearance?: PlayerAppearance;
|
|
8
7
|
}
|
|
9
8
|
export declare class SpawnService {
|
|
10
9
|
private readonly appearanceService;
|
|
11
|
-
private readonly
|
|
12
|
-
private readonly platform;
|
|
10
|
+
private readonly spawnPort;
|
|
13
11
|
private spawned;
|
|
14
12
|
private spawning;
|
|
15
|
-
constructor(appearanceService: AppearanceService,
|
|
13
|
+
constructor(appearanceService: AppearanceService, spawnPort: IClientSpawnPort);
|
|
16
14
|
init(): Promise<void>;
|
|
17
15
|
spawn(position: Vector3, model: string, heading?: number, options?: SpawnOptions): Promise<void>;
|
|
18
16
|
teleportTo(position: Vector3, heading?: number): Promise<void>;
|
|
@@ -12,19 +12,16 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
import { inject, injectable } from 'tsyringe';
|
|
14
14
|
import { loggers } from '../../../kernel';
|
|
15
|
-
import { IClientPlatformBridge } from '../adapter/platform-bridge';
|
|
16
15
|
import { AppearanceService } from './appearance.service';
|
|
17
|
-
import {
|
|
16
|
+
import { IClientSpawnPort } from '../../../adapters/contracts/client/spawn/IClientSpawnPort';
|
|
18
17
|
let SpawnService = class SpawnService {
|
|
19
18
|
appearanceService;
|
|
20
|
-
|
|
21
|
-
platform;
|
|
19
|
+
spawnPort;
|
|
22
20
|
spawned = false;
|
|
23
21
|
spawning = false;
|
|
24
|
-
constructor(appearanceService,
|
|
22
|
+
constructor(appearanceService, spawnPort) {
|
|
25
23
|
this.appearanceService = appearanceService;
|
|
26
|
-
this.
|
|
27
|
-
this.platform = platform;
|
|
24
|
+
this.spawnPort = spawnPort;
|
|
28
25
|
}
|
|
29
26
|
async init() {
|
|
30
27
|
loggers.spawn.debug('SpawnService initialized');
|
|
@@ -37,10 +34,10 @@ let SpawnService = class SpawnService {
|
|
|
37
34
|
this.spawning = true;
|
|
38
35
|
try {
|
|
39
36
|
loggers.spawn.debug('Waiting for spawn bridge readiness');
|
|
40
|
-
await this.
|
|
37
|
+
await this.spawnPort.waitUntilReady();
|
|
41
38
|
loggers.spawn.debug('Spawn bridge ready, executing spawn', { position, model, heading });
|
|
42
|
-
await this.
|
|
43
|
-
const ped =
|
|
39
|
+
const outcome = await this.spawnPort.spawn({ position, model, heading });
|
|
40
|
+
const ped = outcome.localPlayerHandle ?? 0;
|
|
44
41
|
if (ped !== 0) {
|
|
45
42
|
if (options?.appearance) {
|
|
46
43
|
loggers.spawn.debug('Applying post-spawn appearance', { ped });
|
|
@@ -67,11 +64,11 @@ let SpawnService = class SpawnService {
|
|
|
67
64
|
}
|
|
68
65
|
}
|
|
69
66
|
async teleportTo(position, heading) {
|
|
70
|
-
await this.
|
|
67
|
+
await this.spawnPort.teleport({ position, heading });
|
|
71
68
|
}
|
|
72
69
|
async respawn(position, heading = 0.0) {
|
|
73
|
-
await this.
|
|
74
|
-
await this.
|
|
70
|
+
await this.spawnPort.waitUntilReady();
|
|
71
|
+
await this.spawnPort.respawn({ position, heading });
|
|
75
72
|
this.spawned = true;
|
|
76
73
|
loggers.spawn.info('Player respawned', {
|
|
77
74
|
position: { x: position.x, y: position.y, z: position.z },
|
|
@@ -89,10 +86,8 @@ let SpawnService = class SpawnService {
|
|
|
89
86
|
};
|
|
90
87
|
SpawnService = __decorate([
|
|
91
88
|
injectable(),
|
|
92
|
-
__param(1, inject(
|
|
93
|
-
__param(2, inject(IClientPlatformBridge)),
|
|
89
|
+
__param(1, inject(IClientSpawnPort)),
|
|
94
90
|
__metadata("design:paramtypes", [AppearanceService,
|
|
95
|
-
|
|
96
|
-
IClientPlatformBridge])
|
|
91
|
+
IClientSpawnPort])
|
|
97
92
|
], SpawnService);
|
|
98
93
|
export { SpawnService };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import { IClientVehiclePort } from '../../../adapters/contracts/client/vehicle/IClientVehiclePort';
|
|
1
2
|
import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
|
|
2
3
|
import { Vector3 } from '../../../kernel/utils/vector3';
|
|
3
|
-
import { IClientPlatformBridge } from '../adapter/platform-bridge';
|
|
4
4
|
import { IClientRuntimeBridge } from '../adapter/runtime-bridge';
|
|
5
5
|
import { SerializedVehicleData, VehicleCreateOptions, VehicleSpawnResult } from '../../server/types/vehicle.types';
|
|
6
6
|
export declare class VehicleClientService {
|
|
7
7
|
private readonly events;
|
|
8
|
-
private readonly
|
|
8
|
+
private readonly vehicles;
|
|
9
9
|
private readonly runtime;
|
|
10
10
|
private pendingCreations;
|
|
11
11
|
private pendingDeletes;
|
|
@@ -13,7 +13,7 @@ export declare class VehicleClientService {
|
|
|
13
13
|
private pendingData;
|
|
14
14
|
private pendingPlayerVehicles;
|
|
15
15
|
private requestIdCounter;
|
|
16
|
-
constructor(events: EventsAPI<'client'>,
|
|
16
|
+
constructor(events: EventsAPI<'client'>, vehicles: IClientVehiclePort, runtime: IClientRuntimeBridge);
|
|
17
17
|
createVehicle(options: Omit<VehicleCreateOptions, 'ownership'>): Promise<VehicleSpawnResult>;
|
|
18
18
|
deleteVehicle(networkId: number): Promise<boolean>;
|
|
19
19
|
repairVehicle(networkId: number): Promise<boolean>;
|
|
@@ -11,12 +11,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
11
11
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
12
|
};
|
|
13
13
|
import { inject, injectable } from 'tsyringe';
|
|
14
|
+
import { IClientVehiclePort } from '../../../adapters/contracts/client/vehicle/IClientVehiclePort';
|
|
14
15
|
import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
|
|
15
|
-
import {
|
|
16
|
+
import { SYSTEM_EVENTS } from '../../shared/types/system-types';
|
|
16
17
|
import { IClientRuntimeBridge } from '../adapter/runtime-bridge';
|
|
17
18
|
let VehicleClientService = class VehicleClientService {
|
|
18
19
|
events;
|
|
19
|
-
|
|
20
|
+
vehicles;
|
|
20
21
|
runtime;
|
|
21
22
|
pendingCreations = new Map();
|
|
22
23
|
pendingDeletes = new Map();
|
|
@@ -24,9 +25,9 @@ let VehicleClientService = class VehicleClientService {
|
|
|
24
25
|
pendingData = new Map();
|
|
25
26
|
pendingPlayerVehicles = null;
|
|
26
27
|
requestIdCounter = 0;
|
|
27
|
-
constructor(events,
|
|
28
|
+
constructor(events, vehicles, runtime) {
|
|
28
29
|
this.events = events;
|
|
29
|
-
this.
|
|
30
|
+
this.vehicles = vehicles;
|
|
30
31
|
this.runtime = runtime;
|
|
31
32
|
this.registerEventHandlers();
|
|
32
33
|
}
|
|
@@ -34,7 +35,7 @@ let VehicleClientService = class VehicleClientService {
|
|
|
34
35
|
return new Promise((resolve) => {
|
|
35
36
|
const requestId = this.requestIdCounter++;
|
|
36
37
|
this.pendingCreations.set(requestId, resolve);
|
|
37
|
-
this.events.emit(
|
|
38
|
+
this.events.emit(SYSTEM_EVENTS.vehicle.create, { ...options, _requestId: requestId });
|
|
38
39
|
setTimeout(() => {
|
|
39
40
|
if (!this.pendingCreations.has(requestId))
|
|
40
41
|
return;
|
|
@@ -46,7 +47,7 @@ let VehicleClientService = class VehicleClientService {
|
|
|
46
47
|
async deleteVehicle(networkId) {
|
|
47
48
|
return new Promise((resolve) => {
|
|
48
49
|
this.pendingDeletes.set(networkId, resolve);
|
|
49
|
-
this.events.emit(
|
|
50
|
+
this.events.emit(SYSTEM_EVENTS.vehicle.delete, networkId);
|
|
50
51
|
setTimeout(() => {
|
|
51
52
|
if (!this.pendingDeletes.has(networkId))
|
|
52
53
|
return;
|
|
@@ -58,7 +59,7 @@ let VehicleClientService = class VehicleClientService {
|
|
|
58
59
|
async repairVehicle(networkId) {
|
|
59
60
|
return new Promise((resolve) => {
|
|
60
61
|
this.pendingRepairs.set(networkId, resolve);
|
|
61
|
-
this.events.emit(
|
|
62
|
+
this.events.emit(SYSTEM_EVENTS.vehicle.repair, networkId);
|
|
62
63
|
setTimeout(() => {
|
|
63
64
|
if (!this.pendingRepairs.has(networkId))
|
|
64
65
|
return;
|
|
@@ -68,54 +69,42 @@ let VehicleClientService = class VehicleClientService {
|
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
71
|
getClosestVehicle(radius = 10.0) {
|
|
71
|
-
|
|
72
|
-
return this.platform.getClosestVehicle(this.platform.getEntityCoords(playerPed), radius);
|
|
72
|
+
return this.vehicles.getClosest(radius);
|
|
73
73
|
}
|
|
74
74
|
isPlayerInVehicle() {
|
|
75
|
-
return this.
|
|
75
|
+
return this.vehicles.isLocalPlayerInVehicle();
|
|
76
76
|
}
|
|
77
77
|
getCurrentVehicle() {
|
|
78
|
-
|
|
79
|
-
if (!this.platform.isPedInAnyVehicle(ped))
|
|
80
|
-
return null;
|
|
81
|
-
return this.platform.getVehiclePedIsIn(ped, false);
|
|
78
|
+
return this.vehicles.getCurrentForLocalPlayer();
|
|
82
79
|
}
|
|
83
80
|
getLastVehicle() {
|
|
84
|
-
return this.
|
|
81
|
+
return this.vehicles.getLastForLocalPlayer();
|
|
85
82
|
}
|
|
86
83
|
isPlayerDriver() {
|
|
87
84
|
const vehicle = this.getCurrentVehicle();
|
|
88
85
|
if (!vehicle)
|
|
89
86
|
return false;
|
|
90
|
-
return this.
|
|
87
|
+
return this.vehicles.isLocalPlayerDriver(vehicle);
|
|
91
88
|
}
|
|
92
89
|
getSpeed(vehicle) {
|
|
93
|
-
|
|
94
|
-
return 0;
|
|
95
|
-
return this.platform.getEntitySpeed(vehicle) * 3.6;
|
|
90
|
+
return this.vehicles.getSpeed(vehicle) * 3.6;
|
|
96
91
|
}
|
|
97
92
|
getNetworkId(vehicle) {
|
|
98
|
-
|
|
99
|
-
return 0;
|
|
100
|
-
return this.platform.networkGetNetworkIdFromEntity(vehicle);
|
|
93
|
+
return this.vehicles.getNetworkId(vehicle);
|
|
101
94
|
}
|
|
102
95
|
getVehicleFromNetworkId(networkId) {
|
|
103
|
-
|
|
104
|
-
return 0;
|
|
105
|
-
return this.platform.networkGetEntityFromNetworkId(networkId);
|
|
96
|
+
return this.vehicles.getFromNetworkId(networkId);
|
|
106
97
|
}
|
|
107
98
|
getVehicleState(vehicle, key) {
|
|
108
|
-
|
|
109
|
-
return undefined;
|
|
110
|
-
return this.platform.getEntityState(vehicle, key);
|
|
99
|
+
return this.vehicles.getState(vehicle, key);
|
|
111
100
|
}
|
|
112
101
|
setDoorsLocked(networkId, locked) {
|
|
113
|
-
this.events.emit(
|
|
102
|
+
this.events.emit(SYSTEM_EVENTS.vehicle.setLocked, networkId, locked);
|
|
114
103
|
}
|
|
115
104
|
async getVehicleData(networkId) {
|
|
116
105
|
return new Promise((resolve) => {
|
|
117
106
|
this.pendingData.set(networkId, resolve);
|
|
118
|
-
this.events.emit(
|
|
107
|
+
this.events.emit(SYSTEM_EVENTS.vehicle.getData, networkId);
|
|
119
108
|
setTimeout(() => {
|
|
120
109
|
if (!this.pendingData.has(networkId))
|
|
121
110
|
return;
|
|
@@ -127,7 +116,7 @@ let VehicleClientService = class VehicleClientService {
|
|
|
127
116
|
async getPlayerVehicles() {
|
|
128
117
|
return new Promise((resolve) => {
|
|
129
118
|
this.pendingPlayerVehicles = resolve;
|
|
130
|
-
this.events.emit(
|
|
119
|
+
this.events.emit(SYSTEM_EVENTS.vehicle.getPlayerVehicles);
|
|
131
120
|
setTimeout(() => {
|
|
132
121
|
if (!this.pendingPlayerVehicles)
|
|
133
122
|
return;
|
|
@@ -137,123 +126,34 @@ let VehicleClientService = class VehicleClientService {
|
|
|
137
126
|
});
|
|
138
127
|
}
|
|
139
128
|
warpIntoVehicle(vehicle, seatIndex = -1) {
|
|
140
|
-
|
|
141
|
-
return;
|
|
142
|
-
this.platform.taskWarpPedIntoVehicle(this.platform.getLocalPlayerPed(), vehicle, seatIndex);
|
|
129
|
+
this.vehicles.warpLocalPlayerInto(vehicle, seatIndex);
|
|
143
130
|
}
|
|
144
131
|
setHeading(vehicle, heading) {
|
|
145
|
-
|
|
146
|
-
return;
|
|
147
|
-
this.platform.setEntityHeading(vehicle, heading);
|
|
132
|
+
this.vehicles.setHeading(vehicle, heading);
|
|
148
133
|
}
|
|
149
134
|
getPosition(vehicle) {
|
|
150
|
-
|
|
151
|
-
return null;
|
|
152
|
-
return this.platform.getEntityCoords(vehicle);
|
|
135
|
+
return this.vehicles.getPosition(vehicle);
|
|
153
136
|
}
|
|
154
137
|
getHeading(vehicle) {
|
|
155
|
-
|
|
156
|
-
return 0;
|
|
157
|
-
return this.platform.getEntityHeading(vehicle);
|
|
138
|
+
return this.vehicles.getHeading(vehicle);
|
|
158
139
|
}
|
|
159
140
|
getModel(vehicle) {
|
|
160
|
-
|
|
161
|
-
return 0;
|
|
162
|
-
return this.platform.getEntityModel(vehicle);
|
|
141
|
+
return this.vehicles.getModel(vehicle);
|
|
163
142
|
}
|
|
164
143
|
getPlate(vehicle) {
|
|
165
|
-
|
|
166
|
-
return '';
|
|
167
|
-
return this.platform.getVehicleNumberPlateText(vehicle);
|
|
144
|
+
return this.vehicles.getPlate(vehicle);
|
|
168
145
|
}
|
|
169
146
|
applyMods(vehicle, mods) {
|
|
170
|
-
|
|
171
|
-
return;
|
|
172
|
-
this.platform.setVehicleModKit(vehicle, 0);
|
|
173
|
-
if (mods.spoiler !== undefined)
|
|
174
|
-
this.platform.setVehicleMod(vehicle, 0, mods.spoiler, false);
|
|
175
|
-
if (mods.frontBumper !== undefined)
|
|
176
|
-
this.platform.setVehicleMod(vehicle, 1, mods.frontBumper, false);
|
|
177
|
-
if (mods.rearBumper !== undefined)
|
|
178
|
-
this.platform.setVehicleMod(vehicle, 2, mods.rearBumper, false);
|
|
179
|
-
if (mods.sideSkirt !== undefined)
|
|
180
|
-
this.platform.setVehicleMod(vehicle, 3, mods.sideSkirt, false);
|
|
181
|
-
if (mods.exhaust !== undefined)
|
|
182
|
-
this.platform.setVehicleMod(vehicle, 4, mods.exhaust, false);
|
|
183
|
-
if (mods.frame !== undefined)
|
|
184
|
-
this.platform.setVehicleMod(vehicle, 5, mods.frame, false);
|
|
185
|
-
if (mods.grille !== undefined)
|
|
186
|
-
this.platform.setVehicleMod(vehicle, 6, mods.grille, false);
|
|
187
|
-
if (mods.hood !== undefined)
|
|
188
|
-
this.platform.setVehicleMod(vehicle, 7, mods.hood, false);
|
|
189
|
-
if (mods.fender !== undefined)
|
|
190
|
-
this.platform.setVehicleMod(vehicle, 8, mods.fender, false);
|
|
191
|
-
if (mods.rightFender !== undefined)
|
|
192
|
-
this.platform.setVehicleMod(vehicle, 9, mods.rightFender, false);
|
|
193
|
-
if (mods.roof !== undefined)
|
|
194
|
-
this.platform.setVehicleMod(vehicle, 10, mods.roof, false);
|
|
195
|
-
if (mods.engine !== undefined)
|
|
196
|
-
this.platform.setVehicleMod(vehicle, 11, mods.engine, false);
|
|
197
|
-
if (mods.brakes !== undefined)
|
|
198
|
-
this.platform.setVehicleMod(vehicle, 12, mods.brakes, false);
|
|
199
|
-
if (mods.transmission !== undefined)
|
|
200
|
-
this.platform.setVehicleMod(vehicle, 13, mods.transmission, false);
|
|
201
|
-
if (mods.horns !== undefined)
|
|
202
|
-
this.platform.setVehicleMod(vehicle, 14, mods.horns, false);
|
|
203
|
-
if (mods.suspension !== undefined)
|
|
204
|
-
this.platform.setVehicleMod(vehicle, 15, mods.suspension, false);
|
|
205
|
-
if (mods.armor !== undefined)
|
|
206
|
-
this.platform.setVehicleMod(vehicle, 16, mods.armor, false);
|
|
207
|
-
if (mods.turbo !== undefined)
|
|
208
|
-
this.platform.toggleVehicleMod(vehicle, 18, mods.turbo);
|
|
209
|
-
if (mods.xenon !== undefined)
|
|
210
|
-
this.platform.toggleVehicleMod(vehicle, 22, mods.xenon);
|
|
211
|
-
if (mods.wheelType !== undefined)
|
|
212
|
-
this.platform.setVehicleWheelType(vehicle, mods.wheelType);
|
|
213
|
-
if (mods.wheels !== undefined)
|
|
214
|
-
this.platform.setVehicleMod(vehicle, 23, mods.wheels, false);
|
|
215
|
-
if (mods.windowTint !== undefined)
|
|
216
|
-
this.platform.setVehicleWindowTint(vehicle, mods.windowTint);
|
|
217
|
-
if (mods.livery !== undefined)
|
|
218
|
-
this.platform.setVehicleLivery(vehicle, mods.livery);
|
|
219
|
-
if (mods.plateStyle !== undefined)
|
|
220
|
-
this.platform.setVehicleNumberPlateTextIndex(vehicle, mods.plateStyle);
|
|
221
|
-
if (mods.neonEnabled !== undefined) {
|
|
222
|
-
this.platform.setVehicleNeonLightEnabled(vehicle, 0, mods.neonEnabled[0]);
|
|
223
|
-
this.platform.setVehicleNeonLightEnabled(vehicle, 1, mods.neonEnabled[1]);
|
|
224
|
-
this.platform.setVehicleNeonLightEnabled(vehicle, 2, mods.neonEnabled[2]);
|
|
225
|
-
this.platform.setVehicleNeonLightEnabled(vehicle, 3, mods.neonEnabled[3]);
|
|
226
|
-
}
|
|
227
|
-
if (mods.neonColor !== undefined) {
|
|
228
|
-
this.platform.setVehicleNeonLightsColour(vehicle, mods.neonColor[0], mods.neonColor[1], mods.neonColor[2]);
|
|
229
|
-
}
|
|
230
|
-
if (mods.extras) {
|
|
231
|
-
for (const [extraId, enabled] of Object.entries(mods.extras)) {
|
|
232
|
-
this.platform.setVehicleExtra(vehicle, Number(extraId), !enabled);
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
if (mods.pearlescentColor !== undefined || mods.wheelColor !== undefined) {
|
|
236
|
-
const [currentPearl, currentWheel] = this.platform.getVehicleExtraColours(vehicle);
|
|
237
|
-
this.platform.setVehicleExtraColours(vehicle, mods.pearlescentColor ?? currentPearl, mods.wheelColor ?? currentWheel);
|
|
238
|
-
}
|
|
147
|
+
this.vehicles.applyMods(vehicle, mods);
|
|
239
148
|
}
|
|
240
149
|
repair(vehicle) {
|
|
241
|
-
|
|
242
|
-
return;
|
|
243
|
-
this.platform.setVehicleFixed(vehicle);
|
|
244
|
-
this.platform.setVehicleDeformationFixed(vehicle);
|
|
245
|
-
this.platform.setVehicleUndriveable(vehicle, false);
|
|
246
|
-
this.platform.setVehicleEngineOn(vehicle, true, true, false);
|
|
247
|
-
this.platform.setVehicleEngineHealth(vehicle, 1000.0);
|
|
248
|
-
this.platform.setVehiclePetrolTankHealth(vehicle, 1000.0);
|
|
150
|
+
this.vehicles.repair(vehicle);
|
|
249
151
|
}
|
|
250
152
|
setFuel(vehicle, level) {
|
|
251
|
-
|
|
252
|
-
return;
|
|
253
|
-
this.platform.setVehicleFuelLevel(vehicle, Math.max(0, Math.min(100, level)));
|
|
153
|
+
this.vehicles.setFuel(vehicle, level);
|
|
254
154
|
}
|
|
255
155
|
registerEventHandlers() {
|
|
256
|
-
this.events.on(
|
|
156
|
+
this.events.on(SYSTEM_EVENTS.vehicle.createResult, (_ctx, result) => {
|
|
257
157
|
if (result._requestId === undefined)
|
|
258
158
|
return;
|
|
259
159
|
const callback = this.pendingCreations.get(result._requestId);
|
|
@@ -262,21 +162,21 @@ let VehicleClientService = class VehicleClientService {
|
|
|
262
162
|
callback(result);
|
|
263
163
|
this.pendingCreations.delete(result._requestId);
|
|
264
164
|
});
|
|
265
|
-
this.events.on(
|
|
165
|
+
this.events.on(SYSTEM_EVENTS.vehicle.deleteResult, (_ctx, result) => {
|
|
266
166
|
const callback = this.pendingDeletes.get(result.networkId);
|
|
267
167
|
if (!callback)
|
|
268
168
|
return;
|
|
269
169
|
callback(result.success);
|
|
270
170
|
this.pendingDeletes.delete(result.networkId);
|
|
271
171
|
});
|
|
272
|
-
this.events.on(
|
|
172
|
+
this.events.on(SYSTEM_EVENTS.vehicle.repairResult, (_ctx, result) => {
|
|
273
173
|
const callback = this.pendingRepairs.get(result.networkId);
|
|
274
174
|
if (!callback)
|
|
275
175
|
return;
|
|
276
176
|
callback(result.success);
|
|
277
177
|
this.pendingRepairs.delete(result.networkId);
|
|
278
178
|
});
|
|
279
|
-
this.events.on(
|
|
179
|
+
this.events.on(SYSTEM_EVENTS.vehicle.dataResult, (_ctx, data) => {
|
|
280
180
|
if (!data)
|
|
281
181
|
return;
|
|
282
182
|
const callback = this.pendingData.get(data.networkId);
|
|
@@ -285,11 +185,11 @@ let VehicleClientService = class VehicleClientService {
|
|
|
285
185
|
callback(data);
|
|
286
186
|
this.pendingData.delete(data.networkId);
|
|
287
187
|
});
|
|
288
|
-
this.events.on(
|
|
188
|
+
this.events.on(SYSTEM_EVENTS.vehicle.playerVehiclesResult, (_ctx, vehicles) => {
|
|
289
189
|
this.pendingPlayerVehicles?.(vehicles);
|
|
290
190
|
this.pendingPlayerVehicles = null;
|
|
291
191
|
});
|
|
292
|
-
this.events.on(
|
|
192
|
+
this.events.on(SYSTEM_EVENTS.vehicle.created, async (_ctx, data) => {
|
|
293
193
|
const veh = await this.waitForVehicle(data.networkId);
|
|
294
194
|
if (!veh)
|
|
295
195
|
return;
|
|
@@ -298,17 +198,17 @@ let VehicleClientService = class VehicleClientService {
|
|
|
298
198
|
if (data.metadata?.fuel !== undefined)
|
|
299
199
|
this.setFuel(veh, data.metadata.fuel);
|
|
300
200
|
});
|
|
301
|
-
this.events.on(
|
|
201
|
+
this.events.on(SYSTEM_EVENTS.vehicle.modified, (_ctx, data) => {
|
|
302
202
|
const veh = this.getVehicleFromNetworkId(data.networkId);
|
|
303
|
-
if (veh && this.
|
|
203
|
+
if (veh && this.vehicles.exists(veh))
|
|
304
204
|
this.applyMods(veh, data.mods);
|
|
305
205
|
});
|
|
306
|
-
this.events.on(
|
|
206
|
+
this.events.on(SYSTEM_EVENTS.vehicle.repaired, (_ctx, networkId) => {
|
|
307
207
|
const veh = this.getVehicleFromNetworkId(networkId);
|
|
308
|
-
if (veh && this.
|
|
208
|
+
if (veh && this.vehicles.exists(veh))
|
|
309
209
|
this.repair(veh);
|
|
310
210
|
});
|
|
311
|
-
this.events.on(
|
|
211
|
+
this.events.on(SYSTEM_EVENTS.vehicle.warpInto, async (_ctx, networkId, seatIndex = -1) => {
|
|
312
212
|
const veh = await this.waitForVehicle(networkId);
|
|
313
213
|
if (veh)
|
|
314
214
|
this.warpIntoVehicle(veh, seatIndex);
|
|
@@ -318,7 +218,7 @@ let VehicleClientService = class VehicleClientService {
|
|
|
318
218
|
const started = this.runtime.getGameTimer();
|
|
319
219
|
while (this.runtime.getGameTimer() - started < 5000) {
|
|
320
220
|
const veh = this.getVehicleFromNetworkId(networkId);
|
|
321
|
-
if (veh && this.
|
|
221
|
+
if (veh && this.vehicles.exists(veh))
|
|
322
222
|
return veh;
|
|
323
223
|
await new Promise((r) => setTimeout(r, 0));
|
|
324
224
|
}
|
|
@@ -328,10 +228,10 @@ let VehicleClientService = class VehicleClientService {
|
|
|
328
228
|
VehicleClientService = __decorate([
|
|
329
229
|
injectable(),
|
|
330
230
|
__param(0, inject(EventsAPI)),
|
|
331
|
-
__param(1, inject(
|
|
231
|
+
__param(1, inject(IClientVehiclePort)),
|
|
332
232
|
__param(2, inject(IClientRuntimeBridge)),
|
|
333
233
|
__metadata("design:paramtypes", [EventsAPI,
|
|
334
|
-
|
|
234
|
+
IClientVehiclePort,
|
|
335
235
|
IClientRuntimeBridge])
|
|
336
236
|
], VehicleClientService);
|
|
337
237
|
export { VehicleClientService };
|
|
@@ -1,46 +1,9 @@
|
|
|
1
1
|
import { Vector3 } from '../../../kernel/utils/vector3';
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
model: string;
|
|
5
|
-
position: Vector3;
|
|
6
|
-
heading?: number;
|
|
7
|
-
placeOnGround?: boolean;
|
|
8
|
-
warpIntoVehicle?: boolean;
|
|
9
|
-
seatIndex?: number;
|
|
10
|
-
primaryColor?: number;
|
|
11
|
-
secondaryColor?: number;
|
|
12
|
-
plate?: string;
|
|
13
|
-
networked?: boolean;
|
|
14
|
-
}
|
|
15
|
-
export interface VehicleMods {
|
|
16
|
-
spoiler?: number;
|
|
17
|
-
frontBumper?: number;
|
|
18
|
-
rearBumper?: number;
|
|
19
|
-
sideSkirt?: number;
|
|
20
|
-
exhaust?: number;
|
|
21
|
-
frame?: number;
|
|
22
|
-
grille?: number;
|
|
23
|
-
hood?: number;
|
|
24
|
-
fender?: number;
|
|
25
|
-
rightFender?: number;
|
|
26
|
-
roof?: number;
|
|
27
|
-
engine?: number;
|
|
28
|
-
brakes?: number;
|
|
29
|
-
transmission?: number;
|
|
30
|
-
horns?: number;
|
|
31
|
-
suspension?: number;
|
|
32
|
-
armor?: number;
|
|
33
|
-
turbo?: boolean;
|
|
34
|
-
xenon?: boolean;
|
|
35
|
-
wheelType?: number;
|
|
36
|
-
wheels?: number;
|
|
37
|
-
windowTint?: number;
|
|
38
|
-
livery?: number;
|
|
39
|
-
plateStyle?: number;
|
|
40
|
-
}
|
|
2
|
+
import { type ClientVehicleMods as VehicleMods, type ClientVehicleSpawnOptions as VehicleSpawnOptions, IClientVehiclePort } from '../../../adapters/contracts/client/vehicle/IClientVehiclePort';
|
|
3
|
+
export type { VehicleSpawnOptions, VehicleMods };
|
|
41
4
|
export declare class VehicleService {
|
|
42
|
-
private readonly
|
|
43
|
-
constructor(
|
|
5
|
+
private readonly vehicles;
|
|
6
|
+
constructor(vehicles: IClientVehiclePort);
|
|
44
7
|
spawn(options: VehicleSpawnOptions): Promise<number>;
|
|
45
8
|
delete(vehicle: number): void;
|
|
46
9
|
deleteCurrentVehicle(): void;
|