memo

ゲーム制作やデザインについての個人的メモ

【ティラノスクリプト】セーブ時のバックログをロード時に再現する

自分が欲しかったので(以下略)

セーブデータをロードすると、バックログはロード前の内容のままで表示されるのですが、バックログの内容もセーブしてロードしたときに読み返せたら便利だなあ、と思って試してみました。
前回のプレイから時間があくと内容を忘れてることもあるからね…(自分だけ?)。

※本体部分を改造してるのでご利用は自己責任でお願いします

kag.menu.js

  doSave: function (num) {
    var array_save = this.getSaveData();
    var data = {};
    var that = this;
    /* 追加ここから */
    that.kag.stat.f.backlog = that.kag.variable.tf.system.backlog;
    /* 追加ここまで */
    if (this.snap == null) this.snapSave(this.kag.stat.current_save_str, function () {
      data = that.snap;
      data.save_date = $.getNowDate() + " " + $.getNowTime();
      array_save.data[num] = data;
      $.setStorage(that.kag.config.projectID + "_tyrano_data", array_save, that.kag.config.configSave)
    })
  },
  loadGameData: function (data, options) {
    var auto_next = "no";
    (中略)
    this.kag.clearTmpVariable();
    /* 追加ここから */
    this.kag.variable.tf.system.backlog = this.kag.stat.f.backlog;
    /* 追加ここまで */
    this.kag.ftag.nextOrderWithIndex(data.current_order_index, data.stat.current_scenario, true, insert, "yes")
  },

セーブ時に現在のバックログ(「tf.system.backlog」に配列として格納されている)をゲーム変数「f.backlog」に代入して、ロード時には逆に「f.backlog」を「tf.system.backlog」に代入しています。
クイックセーブやオートセーブにも対応させたい場合はdoSaveに追加した内容をsetQuickSaveやdoSetAutoSaveにも追加してください。

そもそもバックログ自体をゲーム変数にすればいい気もしますが、勝手に変更していいものか悩んだのでとりあえずこの方法で対応してみました。もっと良い方法があれば教えていただけると嬉しいです。