Pre-release
AdventureJS Docs Downloads Bundler Devlog
Score: 0 Moves: 0
// renderAssetIsOr.js
(function () {
  /* global AdventureJS A */

  var p = AdventureJS.Game.prototype;

  /**
   *
   * @method AdventureJS.Game#renderAssetIsOr
   * @memberOf AdventureJS.Game
   * @param {String} token
   */
  p.renderAssetIsOr = function Game_renderAssetIsOr(token) {
    let token_array = token.split("[is]").map((e) => e.trim());
    let token_id = token_array[0];
    let token_state = token_array[1]; // everything after 'is'
    let new_string = "in an unknown state";
    let asset = this.renderAssetFromTokenId(token_id);
    let verb_states = token_state.split("[or]").map((e) => e.trim());
    if (verb_states.length) {
      // we expect something like verb_states=[ "plugged", "unplugged" ]
      // but we can handle one or more than two
      let found = false;
      for (let i = 0; i < verb_states.length; i++) {
        let state = verb_states[i];
        let state_string;
        if (state) {
          // state_string = getVerbState(asset, state);
          state_string = this.renderVerbState(asset, state);
        }
        if (state_string) {
          new_string = state_string;
          found = true;
          break;
        }
      }

      if (!found) {
        // we didn't find a clear verb state
        // is there a state property we can get?
        for (let i = 0; i < verb_states.length; i++) {
          if (asset.is[verb_states[i]]) {
            new_string = verb_states[i];
            break;
          }
        }
      }
    } // verb_states

    return new_string;
  }; // renderAssetIsOr
})();