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