Pre-release
AdventureJS Docs Downloads Bundler Devlog
Score: 0 Moves: 0
// getPrintableObjectList.js

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

  var p = AdventureJS.Game.prototype;

  /**
   *
   * @method AdventureJS.Game#getPrintableObjectList
   * @memberOf AdventureJS.Game
   * @param {Object} objects An array of object ID strings.
   * @param {Object} exclusions An array of of object ID strings to exclude.
   * @returns {String} A formatted string.
   */
  p.getPrintableObjectList = function Game_getPrintableObjectList({
    article,
    objects,
    exclusions,
  }) {
    console.warn(objects);
    this.game.log(
      "L1074",
      "log",
      "high",
      `[getPrintableObjectList.js] getPrintableObjectList() receive:\n${objects.map((a) => a.id).join(", ")}`,
      "Game"
    );
    let list = "";
    let definite = false;
    let assets = {};
    let names = [];

    if ("definite" === article) {
      definite = true;
    }

    // remove any exclusions from objects list
    if ("undefined" !== typeof exclusions) {
      // convert params string to array if needed
      if ("string" === typeof exclusions) {
        exclusions = [exclusions];
      }
      objects = objects.filter(function (objects) {
        return exclusions.indexOf(objects) < 0;
      });
    }

    // convert object IDs to assets
    objects.map((object) => {
      const asset = this.getAsset(object);
      assets[asset.id] = asset;
    });

    Object.entries(assets).forEach((item) => {
      let name,
        article = "";
      const asset = item[1];
      name = definite ? asset.definite_name : asset.indefinite_name;
      names.push(name);
    });

    for (var i = 0; i < names.length; i++) {
      if (i > 0 && i < names.length - 1) {
        list += ", ";
      }
      if (names.length > 1 && i === names.length - 1) {
        list += " and ";
      }
      list += names[i];
    }

    return list;
  };
})();