// removeAssetFromLookup.js
(function () {
/* global adventurejs A */
var p = adventurejs.Game.prototype;
/**
* <strong>removeAssetFromLookup()</strong> removes all
* references to an asset's ID from game.world_lookup.
* @method adventurejs.Game#removeAssetFromLookup
* @memberOf adventurejs.Game
* @param {Object} asset The asset to be removed.
*/
p.removeAssetFromLookup = function Game_removeAssetFromWorld(asset) {
if ("string" === typeof asset) asset = this.game.getAsset(asset);
if (!asset) return false;
// remove the primary reference
delete this.game.world_lookup[asset.id];
// remove references under other keywords
for (let prop in this.game.world_lookup) {
const index = this.game.world_lookup[prop].IDs.indexOf(asset.id);
if (index > -1) {
this.game.world_lookup[prop].IDs.splice(index, 1);
}
}
// references stored in dispensed_assets?
if (
asset.is.dispensed &&
"undefined" !== typeof this.game.dispensed_assets[asset.id]
) {
delete this.game.dispensed_assets[asset.id];
}
return true;
};
})();