Pre-release
AdventureJS Docs Downloads
Score: 0 Moves: 0
// findSubstanceContainers.js

(function () {
  /*global adventurejs A*/

  var p = adventurejs.Game.prototype;

  /**
   * Find assets containing the specified substance.
   * @method adventurejs.Game#findSubstanceContainers
   * @memberOf adventurejs.Game
   * @param {String} substance_id
   * @param {Array} selects
   * @returns {Array}
   */
  p.findSubstanceContainers = function Game_getSubstanceContainers(
    substance_id,
    parent,
    selects = []
  ) {
    this.game.log(
      "L1076",
      "log",
      "high",
      "game.findSubstanceContainers > received: " + substance_id,
      "Game"
    );

    if (typeof substance_id !== "string") {
      console.warn("findSubstanceContainers received non-string", substance_id);
      return [];
    }

    var containers = [];
    var contents = parent.getAllNestedContents(); // returns [ids]
    for (let i in contents) {
      let asset = this.game.getAsset(contents[i]);
      if (!asset) continue;
      if (asset.containsSubstance(substance_id)) {
        containers.push(asset);
      }
    }

    if ("string" === typeof selects) selects = selects.split(" ");
    for (let i in selects) {
      containers = this.parser["select" + selects[i]](containers);
    }

    this.game.log(
      "L1077",
      "log",
      "high",
      "findSubstanceContainers.js > return: " + containers,
      "Game"
    );
    return containers;
  };
})();