Pre-release
AdventureJS Docs Downloads
Score: 0 Moves: 0
// setPlace.js
(function () {
  /* global adventurejs A */
  var p = adventurejs.Tangible.prototype;
  /**
   * Set an asset's place, aka parent asset and aspect.
   * This is how one thing is put inside another.
   * Accepts two forms of params:
   * cap.setPlace( 'attached', 'pen' );
   * cap.setPlace({ attached: 'pen' });
   * @memberOf adventurejs.Tangible
   * @method adventurejs.Tangible#setPlace
   * @param {String|Object} a
   * @param {String} b
   * @return {Object}
   */
  p.setPlace = function Tangible_setPlace(a, b) {
    let place, aspect, asset;
    if (typeof a === "object") {
      [[aspect, asset]] = Object.entries(a);
    } else {
      aspect = a;
      asset = b;
    }

    if ("string" === typeof asset) asset = this.game.getAsset(asset);

    if (asset && !aspect) {
      aspect = asset.default_aspect;
    }

    if (asset && aspect) {
      this.place = { [aspect]: asset.id };
    } else this.place = {};
    return this.place;
  };
})();