UNPKG

rock-mod

Version:

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

50 lines (49 loc) 2.1 kB
import { ClientInternalEventName } from "../../../net/common/events/types"; import { RockMod } from "../../../RockMod"; /** * Legacy bridge slot for CCMP raw events. * * Player lifecycle and stream events are handled by `CCMPPlayersManager`, * because it can resolve every native `ccmp.players.Player` into the stable * Rock-Mod `CCMPPlayer` instance before emitting internal `rm::*` events. */ export class CCMPEventsBridge { constructor(_events) { this._events = _events; } registerRawEvents() { this._events.register("playerEnterVehicle", (payload) => { const event = this._resolveVehicleEventPayload(payload); if (!event) return; this._events.emitInternal(ClientInternalEventName.PlayerEnterVehicle, event.vehicle, event.seat); }); this._events.register("playerLeaveVehicle", (payload) => { const event = this._resolveVehicleEventPayload(payload); if (!event) return; this._events.emitInternal(ClientInternalEventName.PlayerLeaveVehicle, event.vehicle, event.seat); }); } registerServerEvents() { // No-op: ранее тут жил handler для cooperation `rm::clientReady`-ответа. // Теперь это responsibility `CCMPPlayersManager`. } _resolveVehicleEventPayload(payload) { var _a; const ccmpPayload = payload; const ccmpVehicleId = (_a = ccmpPayload === null || ccmpPayload === void 0 ? void 0 : ccmpPayload.vehicle) === null || _a === void 0 ? void 0 : _a.id; if (typeof ccmpVehicleId !== "number" || !Number.isFinite(ccmpVehicleId)) { return null; } const rawSeat = Number(ccmpPayload === null || ccmpPayload === void 0 ? void 0 : ccmpPayload.seat); const seat = Number.isFinite(rawSeat) ? rawSeat : -1; try { const vehicle = RockMod.instance.vehicles.registerById(ccmpVehicleId); return { vehicle, seat }; } catch (_b) { return null; } } }