データファイルが読み込まれる度に 呼びだされるイベントハンドラとなります。
データファイルとは、イベント用メッセージや、UI用のメッセージ、 戦国武将列伝、戦国名城物語、戦国名物事典など、 野戦や籠城戦の構成データ などを指します。
BGMやMovieなどは別途それ専用のイベントハンドラが存在します。
このメソッドは極めて重要な働きをします。
Steam配信のゲームは全て、Steamの機能「ゲームキャッシュの整合性を確認」を実行すると、 ファイルが全てオリジナルのものへと戻ります。 この機能は重要なエラー修復の機能であり、利用は必須であり 「改造してるから利用するな」などといった横暴な言い分は現実的ではありません。
そこで便利なのが、このメソッドように、 何かファイルを読み込もうとした時に、状況に応じてその場その場で別ファイルを読み込む リダイレクトという考え方です。
武将列伝や家宝列伝を書き換えた。 Steamの「ゲームキャッシュの整合性を確認」の影響を受けないようにしたい。
public static string My_データファイル読込直前(string 元ファイル名) { // 武将列伝だ // 既存武将を、ちょっと編集しちゃったんで //「bfile*.dat」ではなく、「my_bfile*.dat」という別ファイルから読み込むようにする。 if (元ファイル名.ToLower().Contains(@"\bfile")) { // 新たなファイル名を構築 bfile*.datではなく、my_bfile*.datとする string 新ファイル名 = 元ファイル名.ToLower().Replace("bfile", "my_bfile"); // その新しいファイル名が実際に存在するのなら if (System.IO.File.Exists(新ファイル名)) { // 元のファイルではなく、新ファイルの方を読み込む return 新ファイル名; } } // 家宝列伝だ // 独自家宝を作るなど、ちょっと編集しちゃったんで //「ifile*.dat」ではなく、「my_ifile*.dat」という別ファイルから読み込むようにする。 if (元ファイル名.ToLower().Contains(@"\ifile")) { // 新たなファイル名を構築 ifile*.datではなく、my_ifile*.datとする string 新ファイル名 = 元ファイル名.ToLower().Replace("ifile", "my_ifile"); // その新しいファイル名が実際に存在するのなら if (System.IO.File.Exists(新ファイル名)) { // 元のファイルではなく、新ファイルの方を読み込む return 新ファイル名; } } // ヘックス系データだ。 // ちょっと編集しちゃったんで //「hexmap.nb6」ではなく、「my_hexmap.nb6」という別のファイルから読み込むようにする。 if (元ファイル名.ToLower().Contains(@"\hexmap.nb6")) { // 新たなファイル名を構築 hexmap.nb6ではなく、my_hexmap.nb6とする string 新ファイル名 = 元ファイル名.ToLower().Replace("hexmap", "my_hexmap"); // その新しいファイル名が実際に存在するのなら if (System.IO.File.Exists(新ファイル名)) { // 元のファイルではなく、新ファイルの方を読み込む return 新ファイル名; } } return ""; }
「My_データファイル読込直前」イベントハンドラについて、主な解説は以上となります。