UNPKG

rock-mod

Version:

Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.

142 lines (141 loc) 6.17 kB
import { ClientInternalEventName } from "../../../net/common/events/types"; import { RockMod } from "../../../RockMod"; import { ServerToClientEventName } from "../../../../shared/net/common/events/types"; import { Vector3D } from "../../../../shared/common/utils"; export class RageEventsBridge { constructor(events, entityPoolRouter) { this._lastEnteredVehicle = null; this._events = events; this._entityPoolRouter = entityPoolRouter; } registerRawEvents() { this._events.onRaw({ playerReady: () => { var _a; const playersManager = (_a = this._rockMod) === null || _a === void 0 ? void 0 : _a.players; if (!playersManager) { return; } playersManager.syncWithMpPool(); this._syncEntityPools(); const localPlayer = playersManager.findLocalPlayer(); if (!localPlayer) { return; } this._events.emitInternal(ClientInternalEventName.PlayerReady, localPlayer); }, playerJoin: (mpPlayer) => { const player = this._entityPoolRouter.registerFromMp(mpPlayer); if (!player) { return; } this._events.emitInternal(ClientInternalEventName.PlayerConnected, player); }, playerQuit: (mpPlayer) => { var _a; const playersManager = (_a = this._rockMod) === null || _a === void 0 ? void 0 : _a.players; if (!playersManager) { return; } const player = playersManager.unregisterById(mpPlayer.id); if (!player) { return; } this._events.emitInternal(ClientInternalEventName.PlayerDisconnected, player); }, entityStreamIn: (mpEntity) => { const entity = this._entityPoolRouter.resolveFromMp(mpEntity); if (!entity) { return; } this._events.emitInternal(ClientInternalEventName.EntityStreamIn, entity); }, entityStreamOut: (mpEntity) => { const entity = this._entityPoolRouter.resolveFromMp(mpEntity); if (!entity) { return; } this._events.emitInternal(ClientInternalEventName.EntityStreamOut, entity); }, playerEnterVehicle: (mpVehicle, seat) => { const vehicle = this._entityPoolRouter.registerFromMp(mpVehicle); if (!vehicle) { return; } this._lastEnteredVehicle = vehicle; this._events.emitInternal(ClientInternalEventName.PlayerEnterVehicle, vehicle, seat); }, playerLeaveVehicle: (mpVehicle, seat) => { var _a; const vehicle = (_a = this._entityPoolRouter.resolveFromMp(mpVehicle)) !== null && _a !== void 0 ? _a : this._lastEnteredVehicle; if (!vehicle) { return; } this._lastEnteredVehicle = null; this._events.emitInternal(ClientInternalEventName.PlayerLeaveVehicle, vehicle, seat); }, playerDeath: (mpPlayer) => { const player = this._entityPoolRouter.registerFromMp(mpPlayer); if (!player) { return; } this._events.emitInternal(ClientInternalEventName.PlayerDeath, player); }, playerSpawn: (mpPlayer) => { const player = this._entityPoolRouter.registerFromMp(mpPlayer); if (!player) { return; } this._events.emitInternal(ClientInternalEventName.PlayerSpawn, player); }, playerWeaponShot: () => { this._events.emitInternal(ClientInternalEventName.PlayerWeaponShot); }, browserDomReady: () => { this._events.emitInternal(ClientInternalEventName.BrowserDomReady); }, render: () => { this._events.emitInternal(ClientInternalEventName.Render); }, click: (absoluteX, absoluteY, upOrDown, leftOrRight, relativeX, relativeY, worldPosition, hitEntity) => { const clickedWorldPosition = worldPosition ? new Vector3D(worldPosition.x, worldPosition.y, worldPosition.z) : null; this._events.emitInternal(ClientInternalEventName.Click, { absoluteX, absoluteY, upOrDown, leftOrRight, relativeX: relativeX !== null && relativeX !== void 0 ? relativeX : null, relativeY: relativeY !== null && relativeY !== void 0 ? relativeY : null, hitEntity: hitEntity !== null && hitEntity !== void 0 ? hitEntity : null, worldPosition: clickedWorldPosition, }); }, }); } registerServerEvents() { this._events.onServer({ [ServerToClientEventName.EntityCreated]: (serverEntity) => { this._entityPoolRouter.registerByDto(serverEntity); }, [ServerToClientEventName.EntityDestroyed]: (serverEntity) => { this._entityPoolRouter.unregisterByDto(serverEntity); }, }); } get _rockMod() { try { return RockMod.instance; } catch (_a) { return null; } } _syncEntityPools() { var _a, _b, _c; (_a = this._rockMod) === null || _a === void 0 ? void 0 : _a.vehicles.syncWithMpPool(); (_b = this._rockMod) === null || _b === void 0 ? void 0 : _b.objects.syncWithMpPool(); (_c = this._rockMod) === null || _c === void 0 ? void 0 : _c.peds.syncWithMpPool(); } }