UNPKG

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
"use strict"; 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;