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