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

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

  var p = adventurejs.Display.prototype;

  /**
   * Set exits in status bar and custom compass roses.
   * @method adventurejs.Display#updateCompasses
   * @param {String} exits
   */
  p.updateCompasses = function Display_updateCompasses(exitlist) {
    let exitnames = Object.keys(exitlist).join(" ");
    this.compasses.forEach(function (element) {
      let compass = element.querySelector(".ajs-compasspoints");
      compass?.setAttribute("class", `ajs-compasspoints ${exitnames}`);
      compass?.querySelectorAll(".ajs-compasspoint").forEach(function (point) {
        let exit = exitlist[point.dataset.exit];
        if (exitnames.includes(point.dataset.exit)) {
          point.setAttribute("aria-disabled", false);
          if (exit) {
            if (exit.is.used) point.classList.add("ajs-used");
            if (exit.is.closed) point.classList.add("ajs-closed");
            if (exit.is.locked) point.classList.add("ajs-locked");
            if (exit.is.locked) point.classList.add("ajs-sealed");
          }
        } else {
          point.setAttribute("aria-disabled", true);
          point.classList.remove("ajs-used");
          point.classList.remove("ajs-closed");
          point.classList.remove("ajs-locked");
          point.classList.remove("ajs-sealed");
        }
      });
    });
  };
})();