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) • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CCMPBaseObjectsManager = void 0;
const CCMPBaseObjectsIterator_1 = require("./CCMPBaseObjectsIterator");
const RockMod_1 = require("../../../RockMod");
const types_1 = require("../../../net/common/events/types");
class CCMPBaseObjectsManager {
_baseObjects;
_baseObjectsType;
_iterator;
get baseObjects() {
return this._baseObjects;
}
get baseObjectsType() {
return this._baseObjectsType;
}
get iterator() {
return this._iterator;
}
constructor(options) {
this._baseObjects = new Map();
this._baseObjectsType = options.baseObjectsType;
this._iterator = new CCMPBaseObjectsIterator_1.CCMPBaseObjectsIterator(this._baseObjects);
}
getByID(id) {
const baseObject = this.findByID(id);
if (!baseObject) {
throw new Error(`BaseObject [${this._baseObjectsType}] with id ${id} not found`);
}
return baseObject;
}
findByID(id) {
return this._baseObjects.get(id) ?? null;
}
registerBaseObject(baseObject) {
if (this._baseObjects.has(baseObject.id)) {
throw new Error(`BaseObject [${this._baseObjectsType}] with id ${baseObject.id} already exists`);
}
this._baseObjects.set(baseObject.id, baseObject);
RockMod_1.RockMod.instance.net.events.emitInternal(types_1.ServerInternalEventName.EntityCreated, baseObject);
}
unregisterBaseObject(baseObject) {
if (!this._baseObjects.delete(baseObject.id)) {
throw new Error(`BaseObject [${this._baseObjectsType}] with id ${baseObject.id} not found`);
}
RockMod_1.RockMod.instance.net.events.emitInternal(types_1.ServerInternalEventName.EntityDestroyed, baseObject);
}
}
exports.CCMPBaseObjectsManager = CCMPBaseObjectsManager;