Open Spoonail-Iroiro opened 2 months ago
タイトル画面に戻った時のイベントのユースケース見つけた。マスターデータを改変せざるを得ないケース。union.jsでマスターデータが直接参照されているとパッチできないから、マスターデータを直接改変しないといけない。でもそれだとセーブデータごとに挙動を変更できない。
思いついた解決策は二つ
これをやるならsaveLoading
イベントハンドラ内かと。
マスターデータの改変に限らず、「セーブデータごとに異なる処理をする」時、その境界は各セーブの読み込み時(saveLoading
イベントまたはsaveLoaded
イベント)でいいはずで、タイトル画面に戻った時ではないのでは。
セーブデータで使われているModが変更されていたら警告を表示する(RimWorldのModがたしかそう)
これが今出てくる理由がわからなかったので もし重要な事項であればもう少し説明お願いします🙏
Modが有効なセーブデータを読み込んだ後にタイトルに戻ってModが無効なセーブデータを読み込むと、マスターデータが書き換わったままになると思います。それを防ぐために「タイトル画面に戻るときに元の値に戻す」という方法が考えられます。
しかしその方法も完全ではなく、マスターデータを書き換える複数のModを使ったときにマスターデータを元に戻すのはパッチの実行順序を考えると難しいことがわかります。そこで二つ目の解決策を思いつきました。
いつも説明不足で済みません。
機能的には、セーブとセーブの境界の処理・セーブごとの初期化処理はsaveLoading
イベントでやればいいけど
実装する時のわかりやすさ的にタイトル画面に戻った時のイベントもあっていいかもと思い始めた
以下の2点悩み中
gameLoadFinished
イベントがトリガーされるようになっているため
59 が実装されれば不要かも