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

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

  var p = adventurejs.Game.prototype;

  /**
   * A method to let author set default descriptions for global
   * objects such as sun, moon, sky, floor, walls.
   * @memberOf adventurejs.Game
   * @method adventurejs.Game#setAreaScenery
   * @kind function
   * @param {Object} globals A list of globle Scenery Assets.
   */
  p.setAreaScenery = function Game_setAreaScenery(globals) {
    // console.warn(globals);

    var globalsKeys = Object.keys(globals);
    for (var i = 0; i < globalsKeys.length; i++) {
      const id = globalsKeys[i];
      const global_id = id.startsWith("global_") ? id : "global_" + id;

      var global_precursor = globals[id];
      var global_asset = this.game.world[global_id];

      if ("undefined" === typeof global_asset) {
        var see =
          "See adventurejs.Game#setAreaScenery for info about setting area scenery. ";
        var msg =
          "setAreaScenery received an id for which there is no global object. ";
        this.game.log("L1084", "warn", "critical", msg + see, "Game");
        continue; // @todo make new global?
      }

      var description;
      if (global_precursor.descriptions && global_precursor.descriptions.look) {
        description = global_precursor.descriptions.look;
      } else if (global_precursor.description) {
        description = global_precursor.description;
      } else {
        description = "";
      }

      var enabled = global_precursor.enabled;

      if ("undefined" !== typeof global_asset) {
        global_asset.descriptions.look = description;
        global_asset.enabled = enabled;
      }
    }

    return this;
  };
})();