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
JavaScript
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;
}
}
}