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

  var p = adventurejs.Game.prototype;

  /**
   * Custom logging function.
   * @method adventurejs.Game#log
   * @memberOf adventurejs.Game
   * @param {String|Number} method 0=log, 1=warn, 2=error
   * @param {String|Number} level 0=critical, 1=high, 2=medium, 3=low
   * @param {*} msg Message for console.
   */
  p.log = function Game_log(code, method, level, msg, keyword) {
    // no logging below 0
    if (0 > this.game.settings.log_level) {
      return;
    }

    if ("string" !== typeof keyword) keyword = "";

    // exclude keywords that haven't been included
    if (
      method === "log" &&
      true !== this.game.settings.log_keywords[keyword.toLowerCase()]
    ) {
      return;
    }

    // don't log above current level
    var levels = ["critical", "high", "medium", "low"];
    if ("string" === typeof level) {
      level = levels.indexOf(level);
    }
    if (level > this.game.settings.log_level) {
      return;
    }

    var methods = ["log", "warn", "error"];
    if ("undefined" === typeof method || null === method) {
      method = "log";
    }
    if ("number" === typeof method) {
      method = methods[method];
    }

    if (Array.isArray(msg)) {
      msg = msg.join(" ");
    }

    let green = "#36e400";
    let yellow = "#e5d254";
    let red = "#ef866d";
    let orange = "#ff9700";
    var codecolor = green;
    var warnOrErr = "";
    if (method === "warn") {
      warnOrErr = "warning";
      codecolor = yellow;
    } else if (method === "error") {
      warnOrErr = "error";
      codecolor = red;
    } else if (keyword.toLowerCase() === "debug") {
      codecolor = orange;
    }
    let fontcolor = codecolor === green ? "#FFF" : codecolor;
    let tagcolor = codecolor === green ? "#ffffff99" : codecolor;
    let codestyle = `background: ${codecolor}; font-weight:bold; color: #4a3532;padding:1px 3px;margin-right:0px;`;
    let tagstyle = `background: ${tagcolor}; font-weight:bold; color: #4a3532;padding:1px 3px;margin-right:0px;`;
    let fontstyle = `color: ${fontcolor}`;
    if (method !== "error") method = "log";
    if ("undefined" !== typeof console[method]) {
      console[method](
        `%c${code}%c %c${keyword.toLowerCase()}%c %c${msg}%c`,
        codestyle,
        "",
        tagstyle,
        "",
        fontstyle,
        ""
      );
      // if (level <= this.game.settings.log_trace_level && method === "log") {
      //   console.groupCollapsed("Trace...");
      //   console.trace();
      //   console.groupEnd();
      // }
    }

    return;
  };
})();