UNPKG

rock-mod

Version:

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

46 lines (45 loc) 1.86 kB
import { ClientInternalEventName } from "../../common/events/types"; /** * Translates CCMP `streamSyncedMetaChange` into Rock-Mod's internal * `rm::syncedMetaChange` for stream-synced base objects. */ export class CCMPSyncedMetaBridge { constructor(events, managers) { this._registered = false; this._events = events; this._managers = managers; } register() { if (this._registered) { return; } this._registered = true; ccmp.on("streamSyncedMetaChange", (payload) => { const object = this._resolveObject(payload.entityType, payload.entityId); if (!object) { return; } this._events.emitInternal(ClientInternalEventName.SyncedMetaChange, object, payload.key, payload.newValue, payload.oldValue); }); } _resolveObject(entityType, entityId) { switch (entityType) { case ccmp.entities.ENTITY_TYPE.Player: return this._managers.players.findByRemoteId(entityId); case ccmp.entities.ENTITY_TYPE.Vehicle: return this._managers.vehicles.findByRemoteID(entityId); case ccmp.entities.ENTITY_TYPE.Object: return this._managers.objects.findByRemoteID(entityId); case ccmp.entities.ENTITY_TYPE.Ped: return this._managers.peds.findByRemoteID(entityId); case ccmp.entities.ENTITY_TYPE.Marker: return this._managers.markers.findByRemoteID(entityId); case ccmp.entities.ENTITY_TYPE.Blip: return this._managers.blips.findByRemoteID(entityId); case ccmp.entities.ENTITY_TYPE.Colshape: return this._managers.colshapes.findByRemoteID(entityId); default: return null; } } }