@open-core/framework 1.0.5-beta.1 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/dist/adapters/contracts/IEngineEvents.d.ts +5 -2
  2. package/dist/adapters/contracts/IEngineEvents.js +7 -0
  3. package/dist/adapters/contracts/IExports.d.ts +2 -2
  4. package/dist/adapters/contracts/IPlatformContext.d.ts +43 -0
  5. package/dist/adapters/contracts/IPlatformContext.js +8 -0
  6. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.d.ts +25 -0
  7. package/dist/adapters/contracts/client/IClientLocalPlayerBridge.js +8 -0
  8. package/dist/adapters/contracts/client/IClientLogConsole.d.ts +13 -0
  9. package/dist/adapters/contracts/client/IClientLogConsole.js +2 -0
  10. package/dist/adapters/contracts/client/IClientPlatformBridge.d.ts +195 -0
  11. package/dist/adapters/contracts/client/IClientPlatformBridge.js +282 -0
  12. package/dist/adapters/contracts/client/IClientRuntimeBridge.d.ts +18 -0
  13. package/dist/adapters/contracts/client/IClientRuntimeBridge.js +14 -0
  14. package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.d.ts +26 -0
  15. package/dist/adapters/contracts/client/IGtaPedAppearanceBridge.js +2 -0
  16. package/dist/adapters/contracts/client/camera/IClientCameraPort.d.ts +107 -0
  17. package/dist/adapters/contracts/client/camera/IClientCameraPort.js +8 -0
  18. package/dist/adapters/contracts/client/camera/index.d.ts +1 -0
  19. package/dist/adapters/contracts/client/camera/index.js +1 -0
  20. package/dist/adapters/contracts/client/index.d.ts +11 -0
  21. package/dist/adapters/contracts/client/index.js +11 -0
  22. package/dist/adapters/contracts/client/ped/IClientPedPort.d.ts +62 -0
  23. package/dist/adapters/contracts/client/ped/IClientPedPort.js +5 -0
  24. package/dist/adapters/contracts/client/ped/index.d.ts +1 -0
  25. package/dist/adapters/contracts/client/ped/index.js +1 -0
  26. package/dist/adapters/contracts/client/progress/IClientProgressPort.d.ts +53 -0
  27. package/dist/adapters/contracts/client/progress/IClientProgressPort.js +8 -0
  28. package/dist/adapters/contracts/client/progress/index.d.ts +1 -0
  29. package/dist/adapters/contracts/client/progress/index.js +1 -0
  30. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.d.ts +6 -0
  31. package/dist/adapters/contracts/client/spawn/IClientSpawnBridge.js +6 -0
  32. package/dist/adapters/contracts/client/spawn/IClientSpawnPort.d.ts +19 -0
  33. package/dist/adapters/contracts/client/spawn/IClientSpawnPort.js +2 -0
  34. package/dist/adapters/contracts/client/spawn/index.d.ts +4 -0
  35. package/dist/adapters/contracts/client/spawn/index.js +4 -0
  36. package/dist/adapters/contracts/client/spawn/types.d.ts +17 -0
  37. package/dist/adapters/contracts/client/ui/IClientBlipBridge.d.ts +25 -0
  38. package/dist/adapters/contracts/client/ui/IClientBlipBridge.js +2 -0
  39. package/dist/adapters/contracts/client/ui/IClientMarkerBridge.d.ts +31 -0
  40. package/dist/adapters/contracts/client/ui/IClientMarkerBridge.js +2 -0
  41. package/dist/adapters/contracts/client/ui/IClientNotificationBridge.d.ts +21 -0
  42. package/dist/adapters/contracts/client/ui/IClientNotificationBridge.js +2 -0
  43. package/dist/adapters/contracts/client/ui/index.d.ts +4 -0
  44. package/dist/adapters/contracts/client/ui/index.js +4 -0
  45. package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.d.ts +14 -0
  46. package/dist/adapters/contracts/client/ui/webview/IClientWebViewBridge.js +2 -0
  47. package/dist/adapters/contracts/client/ui/webview/index.d.ts +2 -0
  48. package/dist/adapters/contracts/client/ui/webview/index.js +2 -0
  49. package/dist/adapters/contracts/client/ui/webview/types.d.ts +27 -0
  50. package/dist/adapters/contracts/client/ui/webview/types.js +0 -0
  51. package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.d.ts +166 -0
  52. package/dist/adapters/contracts/client/vehicle/IClientVehiclePort.js +8 -0
  53. package/dist/adapters/contracts/client/vehicle/index.d.ts +1 -0
  54. package/dist/adapters/contracts/client/vehicle/index.js +1 -0
  55. package/dist/adapters/contracts/index.d.ts +4 -2
  56. package/dist/adapters/contracts/index.js +4 -3
  57. package/dist/adapters/contracts/runtime/index.d.ts +1 -0
  58. package/dist/adapters/contracts/runtime/index.js +1 -0
  59. package/dist/adapters/contracts/runtime/runtime-events.d.ts +9 -0
  60. package/dist/adapters/contracts/runtime/runtime-events.js +7 -0
  61. package/dist/adapters/contracts/server/IEntityServer.d.ts +4 -28
  62. package/dist/adapters/contracts/server/IEntityServer.js +0 -26
  63. package/dist/adapters/contracts/server/IPlayerServer.d.ts +7 -26
  64. package/dist/adapters/contracts/server/IPlayerServer.js +0 -26
  65. package/dist/adapters/contracts/server/index.d.ts +10 -0
  66. package/dist/adapters/contracts/server/index.js +10 -0
  67. package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.d.ts +5 -0
  68. package/dist/adapters/contracts/server/npc-lifecycle/INpcLifecycleServer.js +2 -0
  69. package/dist/adapters/contracts/server/npc-lifecycle/index.d.ts +2 -0
  70. package/dist/adapters/contracts/server/npc-lifecycle/index.js +2 -0
  71. package/dist/adapters/contracts/server/npc-lifecycle/types.d.ts +17 -0
  72. package/dist/adapters/contracts/server/npc-lifecycle/types.js +0 -0
  73. package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.d.ts +11 -0
  74. package/dist/adapters/contracts/server/player-appearance/IPlayerAppearanceLifecycleServer.js +2 -0
  75. package/dist/adapters/contracts/server/player-appearance/index.d.ts +1 -0
  76. package/dist/adapters/contracts/server/player-appearance/index.js +1 -0
  77. package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.d.ts +6 -0
  78. package/dist/adapters/contracts/server/player-lifecycle/IPlayerLifecycleServer.js +2 -0
  79. package/dist/adapters/contracts/server/player-lifecycle/index.d.ts +2 -0
  80. package/dist/adapters/contracts/server/player-lifecycle/index.js +2 -0
  81. package/dist/adapters/contracts/server/player-lifecycle/types.d.ts +17 -0
  82. package/dist/adapters/contracts/server/player-lifecycle/types.js +0 -0
  83. package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.d.ts +6 -0
  84. package/dist/adapters/contracts/server/player-state/IPlayerStateSyncServer.js +2 -0
  85. package/dist/adapters/contracts/server/player-state/index.d.ts +1 -0
  86. package/dist/adapters/contracts/server/player-state/index.js +1 -0
  87. package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.d.ts +5 -0
  88. package/dist/adapters/contracts/server/vehicle-lifecycle/IVehicleLifecycleServer.js +2 -0
  89. package/dist/adapters/contracts/server/vehicle-lifecycle/index.d.ts +2 -0
  90. package/dist/adapters/contracts/server/vehicle-lifecycle/index.js +2 -0
  91. package/dist/adapters/contracts/server/vehicle-lifecycle/types.d.ts +16 -0
  92. package/dist/adapters/contracts/server/vehicle-lifecycle/types.js +0 -0
  93. package/dist/adapters/contracts/transport/events.api.d.ts +3 -3
  94. package/dist/adapters/contracts/transport/index.d.ts +4 -0
  95. package/dist/adapters/contracts/transport/index.js +4 -0
  96. package/dist/adapters/contracts/transport/rpc.api.d.ts +3 -3
  97. package/dist/adapters/index.d.ts +3 -14
  98. package/dist/adapters/index.js +3 -20
  99. package/dist/adapters/node/node-capabilities.d.ts +11 -11
  100. package/dist/adapters/node/node-capabilities.js +15 -27
  101. package/dist/adapters/node/node-engine-events.d.ts +1 -1
  102. package/dist/adapters/node/node-engine-events.js +2 -1
  103. package/dist/adapters/node/node-entity-server.d.ts +2 -2
  104. package/dist/adapters/node/node-entity-server.js +2 -2
  105. package/dist/adapters/node/node-ped-appearance-client.d.ts +2 -2
  106. package/dist/adapters/node/node-ped-appearance-client.js +2 -2
  107. package/dist/adapters/node/node-platform.js +4 -4
  108. package/dist/adapters/node/node-player-server.d.ts +3 -2
  109. package/dist/adapters/node/node-player-server.js +8 -2
  110. package/dist/adapters/node/transport/node.events.d.ts +4 -4
  111. package/dist/adapters/node/transport/node.rpc.d.ts +3 -3
  112. package/dist/adapters/node/transport/node.rpc.js +1 -1
  113. package/dist/adapters/register-capabilities.d.ts +1 -1
  114. package/dist/adapters/register-capabilities.js +1 -3
  115. package/dist/adapters/register-client-capabilities.d.ts +3 -2
  116. package/dist/adapters/register-client-capabilities.js +16 -41
  117. package/dist/contracts/client.d.ts +5 -0
  118. package/dist/contracts/client.js +5 -0
  119. package/dist/contracts/server.d.ts +19 -0
  120. package/dist/contracts/server.js +19 -0
  121. package/dist/contracts.d.ts +5 -0
  122. package/dist/contracts.js +5 -0
  123. package/dist/index.d.ts +2 -1
  124. package/dist/index.js +2 -1
  125. package/dist/kernel/logger/client-log-console.d.ts +4 -0
  126. package/dist/kernel/logger/client-log-console.js +43 -0
  127. package/dist/kernel/logger/core-logger.d.ts +3 -1
  128. package/dist/kernel/logger/core-logger.js +4 -2
  129. package/dist/kernel/logger/index.d.ts +3 -1
  130. package/dist/kernel/logger/index.js +2 -1
  131. package/dist/kernel/logger/logger.types.d.ts +1 -0
  132. package/dist/kernel/logger/logger.types.js +35 -0
  133. package/dist/kernel/logger/transports/buffered.transport.js +4 -4
  134. package/dist/kernel/logger/transports/console.transport.js +2 -2
  135. package/dist/kernel/logger/transports/dev-transport.factory.js +1 -1
  136. package/dist/kernel/logger/transports/simple-console.transport.js +15 -10
  137. package/dist/kernel-public.d.ts +1 -0
  138. package/dist/kernel-public.js +1 -0
  139. package/dist/runtime/client/adapter/client-adapter.d.ts +25 -0
  140. package/dist/runtime/client/adapter/client-adapter.js +11 -0
  141. package/dist/runtime/client/adapter/index.d.ts +20 -0
  142. package/dist/runtime/client/adapter/index.js +20 -0
  143. package/dist/runtime/client/adapter/local-player-bridge.d.ts +1 -0
  144. package/dist/runtime/client/adapter/local-player-bridge.js +1 -0
  145. package/dist/runtime/client/adapter/node-blip-bridge.d.ts +9 -0
  146. package/dist/runtime/client/adapter/node-blip-bridge.js +34 -0
  147. package/dist/runtime/client/adapter/node-camera-port.d.ts +19 -0
  148. package/dist/runtime/client/adapter/node-camera-port.js +31 -0
  149. package/dist/runtime/client/adapter/node-client-adapter.d.ts +5 -0
  150. package/dist/runtime/client/adapter/node-client-adapter.js +64 -0
  151. package/dist/runtime/client/adapter/node-local-player-bridge.d.ts +11 -0
  152. package/dist/runtime/client/adapter/node-local-player-bridge.js +27 -0
  153. package/dist/runtime/client/adapter/node-log-console.d.ts +11 -0
  154. package/dist/runtime/client/adapter/node-log-console.js +48 -0
  155. package/dist/runtime/client/adapter/node-marker-bridge.d.ts +10 -0
  156. package/dist/runtime/client/adapter/node-marker-bridge.js +35 -0
  157. package/dist/runtime/client/adapter/node-notification-bridge.d.ts +5 -0
  158. package/dist/{adapters/fivem/fivem-hasher.js → runtime/client/adapter/node-notification-bridge.js} +7 -11
  159. package/dist/runtime/client/adapter/node-ped-port.d.ts +20 -0
  160. package/dist/runtime/client/adapter/node-ped-port.js +38 -0
  161. package/dist/runtime/client/adapter/node-platform-bridge.d.ts +3 -0
  162. package/dist/{adapters/fivem/fivem-tick.js → runtime/client/adapter/node-platform-bridge.js} +5 -10
  163. package/dist/runtime/client/adapter/node-progress-port.d.ts +8 -0
  164. package/dist/runtime/client/adapter/node-progress-port.js +27 -0
  165. package/dist/runtime/client/adapter/node-runtime-bridge.d.ts +22 -0
  166. package/dist/runtime/client/adapter/node-runtime-bridge.js +58 -0
  167. package/dist/runtime/client/adapter/node-spawn-bridge.d.ts +8 -0
  168. package/dist/runtime/client/adapter/node-spawn-bridge.js +22 -0
  169. package/dist/runtime/client/adapter/node-vehicle-port.d.ts +31 -0
  170. package/dist/runtime/client/adapter/node-vehicle-port.js +73 -0
  171. package/dist/runtime/client/adapter/node-webview-bridge.d.ts +16 -0
  172. package/dist/runtime/client/adapter/node-webview-bridge.js +45 -0
  173. package/dist/runtime/client/adapter/platform-bridge.d.ts +1 -0
  174. package/dist/runtime/client/adapter/platform-bridge.js +1 -0
  175. package/dist/runtime/client/adapter/registry.d.ts +9 -0
  176. package/dist/runtime/client/adapter/registry.js +85 -0
  177. package/dist/runtime/client/adapter/runtime-bridge.d.ts +1 -0
  178. package/dist/runtime/client/adapter/runtime-bridge.js +1 -0
  179. package/dist/runtime/client/api.d.ts +2 -1
  180. package/dist/runtime/client/api.js +2 -1
  181. package/dist/runtime/client/client-bootstrap.js +51 -44
  182. package/dist/runtime/client/client-core.d.ts +2 -0
  183. package/dist/runtime/client/client-core.js +9 -0
  184. package/dist/runtime/client/client-runtime.d.ts +3 -0
  185. package/dist/runtime/client/client-runtime.js +3 -0
  186. package/dist/runtime/client/controllers/appearance.controller.d.ts +3 -1
  187. package/dist/runtime/client/controllers/appearance.controller.js +17 -6
  188. package/dist/runtime/client/controllers/spawner.controller.js +6 -3
  189. package/dist/runtime/client/decorators/controller.js +2 -10
  190. package/dist/runtime/client/decorators/onView.d.ts +3 -3
  191. package/dist/runtime/client/decorators/onView.js +3 -3
  192. package/dist/runtime/client/index.d.ts +1 -0
  193. package/dist/runtime/client/index.js +1 -0
  194. package/dist/runtime/client/library/create-client-library.js +9 -1
  195. package/dist/runtime/client/services/appearance.service.d.ts +2 -2
  196. package/dist/runtime/client/services/appearance.service.js +7 -4
  197. package/dist/runtime/client/services/blip.service.d.ts +6 -93
  198. package/dist/runtime/client/services/blip.service.js +58 -153
  199. package/dist/runtime/client/services/camera-effects.registry.d.ts +3 -0
  200. package/dist/runtime/client/services/camera-effects.registry.js +20 -7
  201. package/dist/runtime/client/services/camera.d.ts +4 -106
  202. package/dist/runtime/client/services/camera.js +36 -98
  203. package/dist/runtime/client/services/cinematic.d.ts +5 -1
  204. package/dist/runtime/client/services/cinematic.js +45 -30
  205. package/dist/runtime/client/services/index.d.ts +1 -0
  206. package/dist/runtime/client/services/index.js +1 -0
  207. package/dist/runtime/client/services/marker.service.d.ts +12 -63
  208. package/dist/runtime/client/services/marker.service.js +62 -97
  209. package/dist/runtime/client/services/notification.service.d.ts +6 -57
  210. package/dist/runtime/client/services/notification.service.js +43 -81
  211. package/dist/runtime/client/services/ped.service.d.ts +6 -148
  212. package/dist/runtime/client/services/ped.service.js +42 -221
  213. package/dist/runtime/client/services/progress.service.d.ts +4 -75
  214. package/dist/runtime/client/services/progress.service.js +20 -178
  215. package/dist/runtime/client/services/session-bridge.service.d.ts +15 -0
  216. package/dist/runtime/client/services/session-bridge.service.js +62 -0
  217. package/dist/runtime/client/services/spawn.service.d.ts +4 -56
  218. package/dist/runtime/client/services/spawn.service.js +29 -191
  219. package/dist/runtime/client/services/streaming.service.d.ts +5 -126
  220. package/dist/runtime/client/services/streaming.service.js +72 -217
  221. package/dist/runtime/client/services/textui.service.d.ts +5 -45
  222. package/dist/runtime/client/services/textui.service.js +55 -88
  223. package/dist/runtime/client/services/vehicle-client.service.d.ts +12 -149
  224. package/dist/runtime/client/services/vehicle-client.service.js +128 -374
  225. package/dist/runtime/client/services/vehicle.service.d.ts +4 -147
  226. package/dist/runtime/client/services/vehicle.service.js +33 -239
  227. package/dist/runtime/client/system/processors/export.processor.d.ts +3 -0
  228. package/dist/runtime/client/system/processors/export.processor.js +16 -3
  229. package/dist/runtime/client/system/processors/gameEvent.processor.d.ts +3 -0
  230. package/dist/runtime/client/system/processors/gameEvent.processor.js +16 -3
  231. package/dist/runtime/client/system/processors/interval.processor.d.ts +3 -0
  232. package/dist/runtime/client/system/processors/interval.processor.js +17 -4
  233. package/dist/runtime/client/system/processors/key.processor.d.ts +3 -0
  234. package/dist/runtime/client/system/processors/key.processor.js +18 -5
  235. package/dist/runtime/client/system/processors/localEvent.processor.d.ts +3 -0
  236. package/dist/runtime/client/system/processors/localEvent.processor.js +16 -3
  237. package/dist/runtime/client/system/processors/netEvent.processor.d.ts +3 -0
  238. package/dist/runtime/client/system/processors/netEvent.processor.js +16 -3
  239. package/dist/runtime/client/system/processors/onRpc.processor.js +1 -1
  240. package/dist/runtime/client/system/processors/resourceLifecycle.processor.d.ts +5 -0
  241. package/dist/runtime/client/system/processors/resourceLifecycle.processor.js +26 -7
  242. package/dist/runtime/client/system/processors/tick.processor.d.ts +3 -0
  243. package/dist/runtime/client/system/processors/tick.processor.js +16 -3
  244. package/dist/runtime/client/system/processors/view.processor.d.ts +3 -0
  245. package/dist/runtime/client/system/processors/view.processor.js +21 -10
  246. package/dist/runtime/client/system/processors.register.d.ts +1 -0
  247. package/dist/runtime/client/system/processors.register.js +8 -0
  248. package/dist/runtime/client/ui-bridge.d.ts +2 -114
  249. package/dist/runtime/client/ui-bridge.js +2 -194
  250. package/dist/runtime/client/webview-bridge.d.ts +34 -0
  251. package/dist/runtime/client/webview-bridge.js +103 -0
  252. package/dist/runtime/client/webview.service.d.ts +15 -0
  253. package/dist/runtime/client/webview.service.js +103 -0
  254. package/dist/runtime/server/adapter/index.d.ts +5 -0
  255. package/dist/runtime/server/adapter/index.js +5 -0
  256. package/dist/runtime/server/adapter/node-npc-lifecycle-server.d.ts +12 -0
  257. package/dist/runtime/server/adapter/node-npc-lifecycle-server.js +52 -0
  258. package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.d.ts +22 -0
  259. package/dist/runtime/server/adapter/node-player-appearance-lifecycle-server.js +95 -0
  260. package/dist/runtime/server/adapter/node-player-lifecycle-server.d.ts +11 -0
  261. package/dist/runtime/server/adapter/node-player-lifecycle-server.js +56 -0
  262. package/dist/runtime/server/adapter/node-player-state-sync-server.d.ts +12 -0
  263. package/dist/runtime/server/adapter/node-player-state-sync-server.js +49 -0
  264. package/dist/runtime/server/adapter/node-server-adapter.d.ts +5 -0
  265. package/dist/runtime/server/adapter/node-server-adapter.js +67 -0
  266. package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.d.ts +13 -0
  267. package/dist/runtime/server/adapter/node-vehicle-lifecycle-server.js +58 -0
  268. package/dist/runtime/server/adapter/player-adapter.d.ts +28 -0
  269. package/dist/runtime/server/adapter/player-adapter.js +28 -0
  270. package/dist/runtime/server/adapter/registry.d.ts +26 -0
  271. package/dist/runtime/server/adapter/registry.js +101 -0
  272. package/dist/runtime/server/adapter/serialization.d.ts +6 -0
  273. package/dist/runtime/server/adapter/serialization.js +9 -0
  274. package/dist/runtime/server/adapter/server-adapter.d.ts +28 -0
  275. package/dist/runtime/server/adapter/server-adapter.js +14 -0
  276. package/dist/runtime/server/api.d.ts +2 -1
  277. package/dist/runtime/server/api.js +2 -1
  278. package/dist/runtime/server/apis/appearance.api.d.ts +5 -3
  279. package/dist/runtime/server/apis/appearance.api.js +20 -7
  280. package/dist/runtime/server/apis/chat.api.js +6 -5
  281. package/dist/runtime/server/apis/npcs.api.d.ts +3 -4
  282. package/dist/runtime/server/apis/npcs.api.js +28 -57
  283. package/dist/runtime/server/apis/parallel-compute.api.js +1 -0
  284. package/dist/runtime/server/apis/vehicle-modification.api.d.ts +3 -1
  285. package/dist/runtime/server/apis/vehicle-modification.api.js +13 -6
  286. package/dist/runtime/server/apis/vehicles.api.d.ts +12 -6
  287. package/dist/runtime/server/apis/vehicles.api.js +55 -40
  288. package/dist/runtime/server/bootstrap.js +28 -19
  289. package/dist/runtime/server/controllers/channel.controller.js +2 -1
  290. package/dist/runtime/server/controllers/command-export.controller.js +5 -3
  291. package/dist/runtime/server/controllers/player-export.controller.js +5 -4
  292. package/dist/runtime/server/controllers/remote-command-execution.controller.js +2 -1
  293. package/dist/runtime/server/controllers/session.controller.js +3 -2
  294. package/dist/runtime/server/controllers/vehicle.controller.d.ts +3 -1
  295. package/dist/runtime/server/controllers/vehicle.controller.js +13 -7
  296. package/dist/runtime/server/core.d.ts +2 -0
  297. package/dist/runtime/server/core.js +9 -1
  298. package/dist/runtime/server/decorators/command.d.ts +2 -0
  299. package/dist/runtime/server/decorators/command.js +3 -1
  300. package/dist/runtime/server/decorators/onRuntimeEvent.d.ts +2 -1
  301. package/dist/runtime/server/entities/npc.d.ts +3 -1
  302. package/dist/runtime/server/entities/npc.js +3 -3
  303. package/dist/runtime/server/entities/player.d.ts +9 -12
  304. package/dist/runtime/server/entities/player.js +49 -31
  305. package/dist/runtime/server/entities/vehicle.js +2 -2
  306. package/dist/runtime/server/error-handler.js +13 -2
  307. package/dist/runtime/server/helpers/command-validation.helper.js +21 -8
  308. package/dist/runtime/server/helpers/function-helper.d.ts +1 -0
  309. package/dist/runtime/server/helpers/function-helper.js +15 -8
  310. package/dist/runtime/server/implementations/local/channel.local.d.ts +1 -1
  311. package/dist/runtime/server/implementations/local/channel.local.js +3 -2
  312. package/dist/runtime/server/implementations/local/player.local.d.ts +7 -3
  313. package/dist/runtime/server/implementations/local/player.local.js +23 -11
  314. package/dist/runtime/server/implementations/remote/channel.remote.d.ts +2 -1
  315. package/dist/runtime/server/implementations/remote/channel.remote.js +5 -2
  316. package/dist/runtime/server/implementations/remote/command.remote.d.ts +3 -1
  317. package/dist/runtime/server/implementations/remote/command.remote.js +9 -4
  318. package/dist/runtime/server/implementations/remote/player.remote.d.ts +7 -10
  319. package/dist/runtime/server/implementations/remote/player.remote.js +24 -29
  320. package/dist/runtime/server/library/create-server-library.js +17 -2
  321. package/dist/runtime/server/ports/channel.api-port.d.ts +1 -1
  322. package/dist/runtime/server/runtime.d.ts +3 -0
  323. package/dist/runtime/server/runtime.js +1 -15
  324. package/dist/runtime/server/services/appearance.service.d.ts +0 -95
  325. package/dist/runtime/server/services/appearance.service.js +15 -192
  326. package/dist/runtime/server/services/parallel/worker-pool.d.ts +1 -1
  327. package/dist/runtime/server/services/parallel/worker-pool.js +38 -6
  328. package/dist/runtime/server/services/parallel/worker.js +1 -0
  329. package/dist/runtime/server/services/services.register.js +56 -24
  330. package/dist/runtime/server/system/processors/netEvent.processor.js +1 -1
  331. package/dist/runtime/server/system/processors/onRpc.processor.js +1 -1
  332. package/dist/runtime/server/system/processors/runtimeEvent.processor.d.ts +2 -1
  333. package/dist/runtime/server/system/processors/runtimeEvent.processor.js +1 -1
  334. package/dist/runtime/server/system/schema-generator.d.ts +1 -1
  335. package/dist/runtime/server/system/schema-generator.js +6 -3
  336. package/dist/runtime/server/types/core-exports.types.d.ts +5 -0
  337. package/dist/runtime/shared/helpers/process-tuple-schema.d.ts +2 -0
  338. package/dist/runtime/shared/helpers/process-tuple-schema.js +32 -0
  339. package/dist/runtime/shared/types/system-types.d.ts +55 -0
  340. package/dist/runtime/shared/types/system-types.js +54 -0
  341. package/package.json +41 -13
  342. package/dist/adapters/cfx/cfx-capabilities.d.ts +0 -16
  343. package/dist/adapters/cfx/cfx-capabilities.js +0 -70
  344. package/dist/adapters/cfx/cfx-platform.d.ts +0 -2
  345. package/dist/adapters/cfx/cfx-platform.js +0 -85
  346. package/dist/adapters/cfx/index.d.ts +0 -3
  347. package/dist/adapters/cfx/index.js +0 -3
  348. package/dist/adapters/cfx/runtime-profile.d.ts +0 -3
  349. package/dist/adapters/cfx/runtime-profile.js +0 -37
  350. package/dist/adapters/contracts/IPlatformCapabilities.d.ts +0 -79
  351. package/dist/adapters/contracts/IPlatformCapabilities.js +0 -27
  352. package/dist/adapters/contracts/client/IPedAppearanceClient.d.ts +0 -206
  353. package/dist/adapters/contracts/client/IPedAppearanceClient.js +0 -12
  354. package/dist/adapters/fivem/fivem-capabilities.d.ts +0 -18
  355. package/dist/adapters/fivem/fivem-capabilities.js +0 -61
  356. package/dist/adapters/fivem/fivem-engine-events.d.ts +0 -5
  357. package/dist/adapters/fivem/fivem-engine-events.js +0 -24
  358. package/dist/adapters/fivem/fivem-entity-server.d.ts +0 -26
  359. package/dist/adapters/fivem/fivem-entity-server.js +0 -87
  360. package/dist/adapters/fivem/fivem-exports.d.ts +0 -5
  361. package/dist/adapters/fivem/fivem-exports.js +0 -9
  362. package/dist/adapters/fivem/fivem-hasher.d.ts +0 -7
  363. package/dist/adapters/fivem/fivem-net-transport.d.ts +0 -1
  364. package/dist/adapters/fivem/fivem-ped-appearance-client.d.ts +0 -34
  365. package/dist/adapters/fivem/fivem-ped-appearance-client.js +0 -79
  366. package/dist/adapters/fivem/fivem-ped-appearance-server.d.ts +0 -14
  367. package/dist/adapters/fivem/fivem-ped-appearance-server.js +0 -22
  368. package/dist/adapters/fivem/fivem-ped-server.d.ts +0 -9
  369. package/dist/adapters/fivem/fivem-ped-server.js +0 -30
  370. package/dist/adapters/fivem/fivem-platform.d.ts +0 -5
  371. package/dist/adapters/fivem/fivem-platform.js +0 -74
  372. package/dist/adapters/fivem/fivem-player-server.d.ts +0 -24
  373. package/dist/adapters/fivem/fivem-player-server.js +0 -83
  374. package/dist/adapters/fivem/fivem-playerinfo.d.ts +0 -6
  375. package/dist/adapters/fivem/fivem-playerinfo.js +0 -10
  376. package/dist/adapters/fivem/fivem-resourceinfo.d.ts +0 -5
  377. package/dist/adapters/fivem/fivem-resourceinfo.js +0 -24
  378. package/dist/adapters/fivem/fivem-tick.d.ts +0 -7
  379. package/dist/adapters/fivem/fivem-vehicle-server.d.ts +0 -15
  380. package/dist/adapters/fivem/fivem-vehicle-server.js +0 -44
  381. package/dist/adapters/fivem/index.d.ts +0 -14
  382. package/dist/adapters/fivem/index.js +0 -16
  383. package/dist/adapters/fivem/transport/adapter.d.ts +0 -8
  384. package/dist/adapters/fivem/transport/adapter.js +0 -8
  385. package/dist/adapters/fivem/transport/fivem.events.d.ts +0 -8
  386. package/dist/adapters/fivem/transport/fivem.events.js +0 -36
  387. package/dist/adapters/fivem/transport/fivem.rpc.d.ts +0 -28
  388. package/dist/adapters/fivem/transport/fivem.rpc.js +0 -183
  389. package/dist/runtime/client/controllers/player-sync.controller.d.ts +0 -11
  390. package/dist/runtime/client/controllers/player-sync.controller.js +0 -51
  391. package/dist/runtime/client/player/player.d.ts +0 -262
  392. package/dist/runtime/client/player/player.js +0 -474
  393. package/dist/runtime/client/player/player.loader.d.ts +0 -1
  394. package/dist/runtime/client/player/player.loader.js +0 -18
  395. package/dist/runtime/server/helpers/process-tuple-schema.d.ts +0 -20
  396. package/dist/runtime/server/helpers/process-tuple-schema.js +0 -56
  397. /package/dist/adapters/{fivem/fivem-net-transport.js → contracts/client/spawn/types.js} +0 -0
@@ -7,477 +7,231 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { injectable } from 'tsyringe';
11
- /**
12
- * Client-side vehicle service.
13
- *
14
- * This service provides a simplified interface for vehicle operations on the client.
15
- * Most operations delegate to the server for security and synchronization.
16
- *
17
- * @remarks
18
- * - Vehicle creation is server-authoritative (prevents spawning exploits)
19
- * - Modifications require server validation
20
- * - Local operations (queries, visual changes) are safe to perform client-side
21
- */
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { inject, injectable } from 'tsyringe';
14
+ import { IClientVehiclePort } from '../../../adapters/contracts/client/vehicle/IClientVehiclePort';
15
+ import { EventsAPI } from '../../../adapters/contracts/transport/events.api';
16
+ import { SYSTEM_EVENTS } from '../../shared/types/system-types';
17
+ import { IClientRuntimeBridge } from '../adapter/runtime-bridge';
22
18
  let VehicleClientService = class VehicleClientService {
19
+ events;
20
+ vehicles;
21
+ runtime;
23
22
  pendingCreations = new Map();
23
+ pendingDeletes = new Map();
24
+ pendingRepairs = new Map();
25
+ pendingData = new Map();
26
+ pendingPlayerVehicles = null;
24
27
  requestIdCounter = 0;
25
- constructor() {
28
+ constructor(events, vehicles, runtime) {
29
+ this.events = events;
30
+ this.vehicles = vehicles;
31
+ this.runtime = runtime;
26
32
  this.registerEventHandlers();
27
33
  }
28
- /**
29
- * Requests vehicle creation from the server.
30
- *
31
- * @param options - Vehicle creation options
32
- * @returns Promise resolving to spawn result
33
- */
34
34
  async createVehicle(options) {
35
35
  return new Promise((resolve) => {
36
36
  const requestId = this.requestIdCounter++;
37
37
  this.pendingCreations.set(requestId, resolve);
38
- emitNet('opencore:vehicle:create', {
39
- ...options,
40
- _requestId: requestId,
41
- });
38
+ this.events.emit(SYSTEM_EVENTS.vehicle.create, { ...options, _requestId: requestId });
42
39
  setTimeout(() => {
43
- if (this.pendingCreations.has(requestId)) {
44
- this.pendingCreations.delete(requestId);
45
- resolve({
46
- networkId: 0,
47
- handle: 0,
48
- success: false,
49
- error: 'Request timeout',
50
- });
51
- }
40
+ if (!this.pendingCreations.has(requestId))
41
+ return;
42
+ this.pendingCreations.delete(requestId);
43
+ resolve({ networkId: 0, handle: 0, success: false, error: 'Request timeout' });
52
44
  }, 5000);
53
45
  });
54
46
  }
55
- /**
56
- * Requests vehicle deletion from the server.
57
- *
58
- * @param networkId - Network ID of the vehicle
59
- * @returns Promise resolving to success status
60
- */
61
47
  async deleteVehicle(networkId) {
62
48
  return new Promise((resolve) => {
63
- const handler = (result) => {
64
- if (result.networkId === networkId) {
65
- resolve(result.success);
66
- }
67
- };
68
- const eventName = 'opencore:vehicle:deleteResult';
69
- onNet(eventName, handler);
70
- emitNet('opencore:vehicle:delete', networkId);
49
+ this.pendingDeletes.set(networkId, resolve);
50
+ this.events.emit(SYSTEM_EVENTS.vehicle.delete, networkId);
71
51
  setTimeout(() => {
72
- removeEventListener(eventName, handler);
52
+ if (!this.pendingDeletes.has(networkId))
53
+ return;
54
+ this.pendingDeletes.delete(networkId);
73
55
  resolve(false);
74
56
  }, 5000);
75
57
  });
76
58
  }
77
- /**
78
- * Requests vehicle repair from the server.
79
- *
80
- * @param networkId - Network ID of the vehicle
81
- * @returns Promise resolving to success status
82
- */
83
59
  async repairVehicle(networkId) {
84
60
  return new Promise((resolve) => {
85
- const handler = (result) => {
86
- if (result.networkId === networkId) {
87
- resolve(result.success);
88
- }
89
- };
90
- const eventName = 'opencore:vehicle:repairResult';
91
- onNet(eventName, handler);
92
- emitNet('opencore:vehicle:repair', networkId);
61
+ this.pendingRepairs.set(networkId, resolve);
62
+ this.events.emit(SYSTEM_EVENTS.vehicle.repair, networkId);
93
63
  setTimeout(() => {
94
- removeEventListener(eventName, handler);
64
+ if (!this.pendingRepairs.has(networkId))
65
+ return;
66
+ this.pendingRepairs.delete(networkId);
95
67
  resolve(false);
96
68
  }, 5000);
97
69
  });
98
70
  }
99
- /**
100
- * Gets the closest vehicle to the player.
101
- *
102
- * @param radius - Search radius
103
- * @returns Vehicle handle or null
104
- */
105
71
  getClosestVehicle(radius = 10.0) {
106
- const playerPed = PlayerPedId();
107
- const [px, py, pz] = GetEntityCoords(playerPed, true);
108
- const vehicle = GetClosestVehicle(px, py, pz, radius, 0, 71);
109
- return vehicle !== 0 ? vehicle : null;
72
+ return this.vehicles.getClosest(radius);
110
73
  }
111
- /**
112
- * Checks if the player is in a vehicle.
113
- */
114
74
  isPlayerInVehicle() {
115
- return IsPedInAnyVehicle(PlayerPedId(), false);
75
+ return this.vehicles.isLocalPlayerInVehicle();
116
76
  }
117
- /**
118
- * Gets the vehicle the player is currently in.
119
- *
120
- * @returns Vehicle handle or null
121
- */
122
77
  getCurrentVehicle() {
123
- const ped = PlayerPedId();
124
- if (!IsPedInAnyVehicle(ped, false))
125
- return null;
126
- return GetVehiclePedIsIn(ped, false);
78
+ return this.vehicles.getCurrentForLocalPlayer();
127
79
  }
128
- /**
129
- * Gets the last vehicle the player was in.
130
- *
131
- * @returns Vehicle handle or null
132
- */
133
80
  getLastVehicle() {
134
- const vehicle = GetVehiclePedIsIn(PlayerPedId(), true);
135
- return vehicle !== 0 ? vehicle : null;
81
+ return this.vehicles.getLastForLocalPlayer();
136
82
  }
137
- /**
138
- * Checks if player is the driver of their current vehicle.
139
- */
140
83
  isPlayerDriver() {
141
84
  const vehicle = this.getCurrentVehicle();
142
85
  if (!vehicle)
143
86
  return false;
144
- return GetPedInVehicleSeat(vehicle, -1) === PlayerPedId();
87
+ return this.vehicles.isLocalPlayerDriver(vehicle);
145
88
  }
146
- /**
147
- * Gets vehicle speed in km/h.
148
- *
149
- * @param vehicle - Vehicle handle
150
- */
151
89
  getSpeed(vehicle) {
152
- if (!DoesEntityExist(vehicle))
153
- return 0;
154
- return GetEntitySpeed(vehicle) * 3.6;
90
+ return this.vehicles.getSpeed(vehicle) * 3.6;
155
91
  }
156
- /**
157
- * Gets the network ID from a vehicle handle.
158
- *
159
- * @param vehicle - Vehicle handle
160
- * @returns Network ID or 0 if invalid
161
- */
162
92
  getNetworkId(vehicle) {
163
- if (!DoesEntityExist(vehicle))
164
- return 0;
165
- return NetworkGetNetworkIdFromEntity(vehicle);
93
+ return this.vehicles.getNetworkId(vehicle);
166
94
  }
167
- /**
168
- * Gets the vehicle handle from a network ID.
169
- *
170
- * @param networkId - Network ID
171
- * @returns Vehicle handle or 0 if not found
172
- */
173
95
  getVehicleFromNetworkId(networkId) {
174
- if (!NetworkDoesEntityExistWithNetworkId(networkId))
175
- return 0;
176
- return NetworkGetEntityFromNetworkId(networkId);
96
+ return this.vehicles.getFromNetworkId(networkId);
177
97
  }
178
- /**
179
- * Gets vehicle data from state bag.
180
- *
181
- * @param vehicle - Vehicle handle
182
- * @param key - State bag key
183
- * @returns State value or undefined
184
- */
185
98
  getVehicleState(vehicle, key) {
186
- if (!DoesEntityExist(vehicle))
187
- return undefined;
188
- const stateBag = Entity(vehicle).state;
189
- return stateBag[key];
99
+ return this.vehicles.getState(vehicle, key);
190
100
  }
191
- /**
192
- * Requests to lock/unlock vehicle doors.
193
- *
194
- * @param networkId - Network ID of the vehicle
195
- * @param locked - Whether to lock or unlock
196
- */
197
101
  setDoorsLocked(networkId, locked) {
198
- emitNet('opencore:vehicle:setLocked', networkId, locked);
102
+ this.events.emit(SYSTEM_EVENTS.vehicle.setLocked, networkId, locked);
199
103
  }
200
- /**
201
- * Requests vehicle data from the server.
202
- *
203
- * @param networkId - Network ID of the vehicle
204
- * @returns Promise resolving to vehicle data
205
- */
206
104
  async getVehicleData(networkId) {
207
105
  return new Promise((resolve) => {
208
- const handler = (data) => {
209
- resolve(data);
210
- };
211
- const eventName = 'opencore:vehicle:dataResult';
212
- onNet(eventName, handler);
213
- emitNet('opencore:vehicle:getData', networkId);
106
+ this.pendingData.set(networkId, resolve);
107
+ this.events.emit(SYSTEM_EVENTS.vehicle.getData, networkId);
214
108
  setTimeout(() => {
215
- removeEventListener(eventName, handler);
109
+ if (!this.pendingData.has(networkId))
110
+ return;
111
+ this.pendingData.delete(networkId);
216
112
  resolve(null);
217
113
  }, 5000);
218
114
  });
219
115
  }
220
- /**
221
- * Requests all player vehicles from the server.
222
- *
223
- * @returns Promise resolving to array of vehicle data
224
- */
225
116
  async getPlayerVehicles() {
226
117
  return new Promise((resolve) => {
227
- const handler = (vehicles) => {
228
- resolve(vehicles);
229
- };
230
- const eventName = 'opencore:vehicle:playerVehiclesResult';
231
- onNet(eventName, handler);
232
- emitNet('opencore:vehicle:getPlayerVehicles');
118
+ this.pendingPlayerVehicles = resolve;
119
+ this.events.emit(SYSTEM_EVENTS.vehicle.getPlayerVehicles);
233
120
  setTimeout(() => {
234
- removeEventListener(eventName, handler);
121
+ if (!this.pendingPlayerVehicles)
122
+ return;
123
+ this.pendingPlayerVehicles = null;
235
124
  resolve([]);
236
125
  }, 5000);
237
126
  });
238
127
  }
239
- /**
240
- * Local-only: Warps player into a vehicle.
241
- *
242
- * @param vehicle - Vehicle handle
243
- * @param seatIndex - Seat index (-1 = driver)
244
- */
245
128
  warpIntoVehicle(vehicle, seatIndex = -1) {
246
- if (!DoesEntityExist(vehicle))
247
- return;
248
- TaskWarpPedIntoVehicle(PlayerPedId(), vehicle, seatIndex);
129
+ this.vehicles.warpLocalPlayerInto(vehicle, seatIndex);
249
130
  }
250
- /**
251
- * Local-only: Sets vehicle heading.
252
- *
253
- * @param vehicle - Vehicle handle
254
- * @param heading - Heading in degrees
255
- */
256
131
  setHeading(vehicle, heading) {
257
- if (!DoesEntityExist(vehicle))
258
- return;
259
- SetEntityHeading(vehicle, heading);
132
+ this.vehicles.setHeading(vehicle, heading);
260
133
  }
261
- /**
262
- * Local-only: Gets vehicle position.
263
- *
264
- * @param vehicle - Vehicle handle
265
- * @returns Position vector
266
- */
267
134
  getPosition(vehicle) {
268
- if (!DoesEntityExist(vehicle))
269
- return null;
270
- const coords = GetEntityCoords(vehicle, true);
271
- return { x: coords[0], y: coords[1], z: coords[2] };
135
+ return this.vehicles.getPosition(vehicle);
272
136
  }
273
- /**
274
- * Local-only: Gets vehicle heading.
275
- *
276
- * @param vehicle - Vehicle handle
277
- * @returns Heading in degrees
278
- */
279
137
  getHeading(vehicle) {
280
- if (!DoesEntityExist(vehicle))
281
- return 0;
282
- return GetEntityHeading(vehicle);
138
+ return this.vehicles.getHeading(vehicle);
283
139
  }
284
- /**
285
- * Local-only: Gets vehicle model hash.
286
- *
287
- * @param vehicle - Vehicle handle
288
- * @returns Model hash
289
- */
290
140
  getModel(vehicle) {
291
- if (!DoesEntityExist(vehicle))
292
- return 0;
293
- return GetEntityModel(vehicle);
141
+ return this.vehicles.getModel(vehicle);
294
142
  }
295
- /**
296
- * Local-only: Gets vehicle license plate.
297
- *
298
- * @param vehicle - Vehicle handle
299
- * @returns License plate text
300
- */
301
143
  getPlate(vehicle) {
302
- if (!DoesEntityExist(vehicle))
303
- return '';
304
- return GetVehicleNumberPlateText(vehicle);
144
+ return this.vehicles.getPlate(vehicle);
305
145
  }
306
- /**
307
- * Applies vehicle mods from state bag data.
308
- *
309
- * @param vehicle - Vehicle handle
310
- * @param mods - Mods object from state bag
311
- */
312
146
  applyMods(vehicle, mods) {
313
- if (!DoesEntityExist(vehicle))
314
- return;
315
- SetVehicleModKit(vehicle, 0);
316
- if (mods.spoiler !== undefined)
317
- SetVehicleMod(vehicle, 0, mods.spoiler, false);
318
- if (mods.frontBumper !== undefined)
319
- SetVehicleMod(vehicle, 1, mods.frontBumper, false);
320
- if (mods.rearBumper !== undefined)
321
- SetVehicleMod(vehicle, 2, mods.rearBumper, false);
322
- if (mods.sideSkirt !== undefined)
323
- SetVehicleMod(vehicle, 3, mods.sideSkirt, false);
324
- if (mods.exhaust !== undefined)
325
- SetVehicleMod(vehicle, 4, mods.exhaust, false);
326
- if (mods.frame !== undefined)
327
- SetVehicleMod(vehicle, 5, mods.frame, false);
328
- if (mods.grille !== undefined)
329
- SetVehicleMod(vehicle, 6, mods.grille, false);
330
- if (mods.hood !== undefined)
331
- SetVehicleMod(vehicle, 7, mods.hood, false);
332
- if (mods.fender !== undefined)
333
- SetVehicleMod(vehicle, 8, mods.fender, false);
334
- if (mods.rightFender !== undefined)
335
- SetVehicleMod(vehicle, 9, mods.rightFender, false);
336
- if (mods.roof !== undefined)
337
- SetVehicleMod(vehicle, 10, mods.roof, false);
338
- if (mods.engine !== undefined)
339
- SetVehicleMod(vehicle, 11, mods.engine, false);
340
- if (mods.brakes !== undefined)
341
- SetVehicleMod(vehicle, 12, mods.brakes, false);
342
- if (mods.transmission !== undefined)
343
- SetVehicleMod(vehicle, 13, mods.transmission, false);
344
- if (mods.horns !== undefined)
345
- SetVehicleMod(vehicle, 14, mods.horns, false);
346
- if (mods.suspension !== undefined)
347
- SetVehicleMod(vehicle, 15, mods.suspension, false);
348
- if (mods.armor !== undefined)
349
- SetVehicleMod(vehicle, 16, mods.armor, false);
350
- if (mods.turbo !== undefined)
351
- ToggleVehicleMod(vehicle, 18, mods.turbo);
352
- if (mods.xenon !== undefined)
353
- ToggleVehicleMod(vehicle, 22, mods.xenon);
354
- if (mods.wheelType !== undefined)
355
- SetVehicleWheelType(vehicle, mods.wheelType);
356
- if (mods.wheels !== undefined)
357
- SetVehicleMod(vehicle, 23, mods.wheels, false);
358
- if (mods.windowTint !== undefined)
359
- SetVehicleWindowTint(vehicle, mods.windowTint);
360
- if (mods.livery !== undefined)
361
- SetVehicleLivery(vehicle, mods.livery);
362
- if (mods.plateStyle !== undefined)
363
- SetVehicleNumberPlateTextIndex(vehicle, mods.plateStyle);
364
- if (mods.neonEnabled !== undefined) {
365
- SetVehicleNeonLightEnabled(vehicle, 0, mods.neonEnabled[0]);
366
- SetVehicleNeonLightEnabled(vehicle, 1, mods.neonEnabled[1]);
367
- SetVehicleNeonLightEnabled(vehicle, 2, mods.neonEnabled[2]);
368
- SetVehicleNeonLightEnabled(vehicle, 3, mods.neonEnabled[3]);
369
- }
370
- if (mods.neonColor !== undefined) {
371
- SetVehicleNeonLightsColour(vehicle, mods.neonColor[0], mods.neonColor[1], mods.neonColor[2]);
372
- }
373
- if (mods.extras) {
374
- for (const [extraId, enabled] of Object.entries(mods.extras)) {
375
- SetVehicleExtra(vehicle, Number(extraId), !enabled);
376
- }
377
- }
378
- if (mods.pearlescentColor !== undefined || mods.wheelColor !== undefined) {
379
- const [currentPearl, currentWheel] = GetVehicleExtraColours(vehicle);
380
- SetVehicleExtraColours(vehicle, mods.pearlescentColor ?? currentPearl, mods.wheelColor ?? currentWheel);
381
- }
147
+ this.vehicles.applyMods(vehicle, mods);
382
148
  }
383
- /**
384
- * Repairs a vehicle completely (client-side).
385
- *
386
- * @param vehicle - Vehicle handle
387
- */
388
149
  repair(vehicle) {
389
- if (!DoesEntityExist(vehicle))
390
- return;
391
- SetVehicleFixed(vehicle);
392
- SetVehicleDeformationFixed(vehicle);
393
- SetVehicleUndriveable(vehicle, false);
394
- SetVehicleEngineOn(vehicle, true, true, false);
395
- SetVehicleEngineHealth(vehicle, 1000.0);
396
- SetVehiclePetrolTankHealth(vehicle, 1000.0);
150
+ this.vehicles.repair(vehicle);
397
151
  }
398
- /**
399
- * Sets fuel level on a vehicle (client-side).
400
- *
401
- * @param vehicle - Vehicle handle
402
- * @param level - Fuel level (0-100)
403
- */
404
152
  setFuel(vehicle, level) {
405
- if (!DoesEntityExist(vehicle))
406
- return;
407
- SetVehicleFuelLevel(vehicle, Math.max(0, Math.min(100, level)));
153
+ this.vehicles.setFuel(vehicle, level);
408
154
  }
409
- /**
410
- * Registers event handlers for server responses.
411
- */
412
155
  registerEventHandlers() {
413
- onNet('opencore:vehicle:createResult', (result) => {
414
- if (result._requestId !== undefined) {
415
- const callback = this.pendingCreations.get(result._requestId);
416
- if (callback) {
417
- callback(result);
418
- this.pendingCreations.delete(result._requestId);
419
- }
420
- }
156
+ this.events.on(SYSTEM_EVENTS.vehicle.createResult, (_ctx, result) => {
157
+ if (result._requestId === undefined)
158
+ return;
159
+ const callback = this.pendingCreations.get(result._requestId);
160
+ if (!callback)
161
+ return;
162
+ callback(result);
163
+ this.pendingCreations.delete(result._requestId);
164
+ });
165
+ this.events.on(SYSTEM_EVENTS.vehicle.deleteResult, (_ctx, result) => {
166
+ const callback = this.pendingDeletes.get(result.networkId);
167
+ if (!callback)
168
+ return;
169
+ callback(result.success);
170
+ this.pendingDeletes.delete(result.networkId);
171
+ });
172
+ this.events.on(SYSTEM_EVENTS.vehicle.repairResult, (_ctx, result) => {
173
+ const callback = this.pendingRepairs.get(result.networkId);
174
+ if (!callback)
175
+ return;
176
+ callback(result.success);
177
+ this.pendingRepairs.delete(result.networkId);
421
178
  });
422
- onNet('opencore:vehicle:created', async (data) => {
423
- // Wait for vehicle to exist locally
424
- const started = GetGameTimer();
425
- let veh = 0;
426
- while (GetGameTimer() - started < 5000) {
427
- veh = this.getVehicleFromNetworkId(data.networkId);
428
- if (veh && DoesEntityExist(veh))
429
- break;
430
- await new Promise((r) => setTimeout(r, 0));
431
- }
432
- if (veh && DoesEntityExist(veh)) {
433
- // Apply mods from server data
434
- if (data.mods && Object.keys(data.mods).length > 0) {
435
- this.applyMods(veh, data.mods);
436
- }
437
- // Apply fuel from metadata
438
- if (data.metadata?.fuel !== undefined) {
439
- this.setFuel(veh, data.metadata.fuel);
440
- }
441
- }
179
+ this.events.on(SYSTEM_EVENTS.vehicle.dataResult, (_ctx, data) => {
180
+ if (!data)
181
+ return;
182
+ const callback = this.pendingData.get(data.networkId);
183
+ if (!callback)
184
+ return;
185
+ callback(data);
186
+ this.pendingData.delete(data.networkId);
442
187
  });
443
- onNet('opencore:vehicle:deleted', (networkId) => {
444
- console.log('[VehicleClient] Vehicle deleted:', networkId);
188
+ this.events.on(SYSTEM_EVENTS.vehicle.playerVehiclesResult, (_ctx, vehicles) => {
189
+ this.pendingPlayerVehicles?.(vehicles);
190
+ this.pendingPlayerVehicles = null;
445
191
  });
446
- onNet('opencore:vehicle:modified', (data) => {
192
+ this.events.on(SYSTEM_EVENTS.vehicle.created, async (_ctx, data) => {
193
+ const veh = await this.waitForVehicle(data.networkId);
194
+ if (!veh)
195
+ return;
196
+ if (data.mods && Object.keys(data.mods).length > 0)
197
+ this.applyMods(veh, data.mods);
198
+ if (data.metadata?.fuel !== undefined)
199
+ this.setFuel(veh, data.metadata.fuel);
200
+ });
201
+ this.events.on(SYSTEM_EVENTS.vehicle.modified, (_ctx, data) => {
447
202
  const veh = this.getVehicleFromNetworkId(data.networkId);
448
- if (veh && DoesEntityExist(veh)) {
203
+ if (veh && this.vehicles.exists(veh))
449
204
  this.applyMods(veh, data.mods);
450
- }
451
205
  });
452
- onNet('opencore:vehicle:repaired', (networkId) => {
206
+ this.events.on(SYSTEM_EVENTS.vehicle.repaired, (_ctx, networkId) => {
453
207
  const veh = this.getVehicleFromNetworkId(networkId);
454
- if (veh && DoesEntityExist(veh)) {
208
+ if (veh && this.vehicles.exists(veh))
455
209
  this.repair(veh);
456
- }
457
- });
458
- onNet('opencore:vehicle:lockedChanged', (data) => {
459
- console.log('[VehicleClient] Vehicle lock changed:', data.networkId, data.locked);
460
210
  });
461
- onNet('opencore:vehicle:warpInto', async (networkId, seatIndex = -1) => {
462
- const started = GetGameTimer();
463
- let veh = 0;
464
- while (GetGameTimer() - started < 5000) {
465
- veh = this.getVehicleFromNetworkId(networkId);
466
- if (veh && DoesEntityExist(veh))
467
- break;
468
- await new Promise((r) => setTimeout(r, 0));
469
- }
470
- if (veh && DoesEntityExist(veh)) {
211
+ this.events.on(SYSTEM_EVENTS.vehicle.warpInto, async (_ctx, networkId, seatIndex = -1) => {
212
+ const veh = await this.waitForVehicle(networkId);
213
+ if (veh)
471
214
  this.warpIntoVehicle(veh, seatIndex);
472
- }
473
- else {
474
- console.error('[VehicleClient] Failed to warp into vehicle:', networkId);
475
- }
476
215
  });
477
216
  }
217
+ async waitForVehicle(networkId) {
218
+ const started = this.runtime.getGameTimer();
219
+ while (this.runtime.getGameTimer() - started < 5000) {
220
+ const veh = this.getVehicleFromNetworkId(networkId);
221
+ if (veh && this.vehicles.exists(veh))
222
+ return veh;
223
+ await new Promise((r) => setTimeout(r, 0));
224
+ }
225
+ return null;
226
+ }
478
227
  };
479
228
  VehicleClientService = __decorate([
480
229
  injectable(),
481
- __metadata("design:paramtypes", [])
230
+ __param(0, inject(EventsAPI)),
231
+ __param(1, inject(IClientVehiclePort)),
232
+ __param(2, inject(IClientRuntimeBridge)),
233
+ __metadata("design:paramtypes", [EventsAPI,
234
+ IClientVehiclePort,
235
+ IClientRuntimeBridge])
482
236
  ], VehicleClientService);
483
237
  export { VehicleClientService };