Pre-release
AdventureJS Docs Downloads
Score: 0 Moves: 0
// 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;
  };
})();