最終更新日 2024-09-25

My_データファイル読込直前

My_データファイル読込直前

データファイルが読み込まれる度に
呼びだされるイベントハンドラとなります。

データファイルとは、イベント用メッセージや、UI用のメッセージ、
戦国武将列伝、戦国名城物語、戦国名物事典など、
野戦や籠城戦の構成データ
などを指します。

BGMやMovieなどは別途それ専用のイベントハンドラが存在します。

注意点

このメソッドは極めて重要な働きをします。

Steam配信のゲームは全て、Steamの機能「ゲームキャッシュの整合性を確認」を実行すると、
ファイルが全てオリジナルのものへと戻ります
この機能は重要なエラー修復の機能であり、利用は必須であり
「改造してるから利用するな」などといった横暴な言い分は現実的ではありません。

そこで便利なのが、このメソッドように、
何かファイルを読み込もうとした時に、状況に応じてその場その場で別ファイルを読み込む
リダイレクトという考え方です。

使い処

武将列伝や家宝列伝を書き換えた。
Steamの「ゲームキャッシュの整合性を確認」の影響を受けないようにしたい。

使用例

武将列伝・家宝列伝・HEXMAPの構成データを別ファイルから読み込めるようにする
    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_データファイル読込直前」イベントハンドラについて、主な解説は以上となります。