string カスタム::On_フルカラー顔グラファイル要求時(string ファイル名)

string カスタム::On_フルカラー顔グラファイル要求時(string ファイル名) {
  return "";
}

引数の補足

  • ファイル名:

    要求されたフルカラー画像のファイル名が入っている。比較判定ミスを避けるため、全て小文字(LowerCase)になっている。

タイミング

  • フルカラーの新たな顔グラファイルが要求されたタイミングで呼び出される
    (すでに画面上に該当の顔グラが表示されている場合は、そのまま利用されるため、呼び出されない)

    PICTURE

一般的用途

  • 特定の条件下で武将のフルカラー顔グラの「画素(画像内容)」のみを変更したい場合に利用する

例①

特定のファイルが要求されたら、別のファイルへと無条件でリダイレクトする例

string カスタム::On_フルカラー顔グラファイル要求時(string ファイル名) {
    // ファイル名の「kao_24bit\0001.bmp」が要求された
    if (ファイル名 == "kao_24bit\\0001.bmp") {
        return "kao_24bit\\0001_C.bmp"; // 自分の独自のファイルを返す。 "my_kao_24bit\\0001.bmp"など別のフォルダのファイルを指定しても良い。
    }

    // 変更しない場合""
    return "";
}

例②

ゲーム内で特定の条件の時だけ、別のファイルへとリダイレクトする例

string カスタム::On_フルカラー顔グラファイル要求時(string ファイル名) {

    // ファイル名の「kao_24bit\0001.bmp」が要求された
    if (ファイル名 == "kao_24bit\\0001.bmp") {

        // 織田信長が存在するならば、
        int iBushouID = Get_武将番号【配列用】(列挙::武将::顔番号::織田信長);
        if (0 <= iBushouID && iBushouID < 最大数::武将情報::配列数) {

            // 年齢で画像を振り分ける
            if (Get_武将年齢(iBushouID) >= 50) {
                return "kao_24bit\\0001_old50.bmp";
            }
            else if (Get_武将年齢(iBushouID) >= 30) {
                return "kao_24bit\\0001_old30.bmp";
            }
            else if (Get_武将年齢(iBushouID) >= 10) {
                return ""; // 画像は元々のkao_24bit\0001.bmpを使用
            }
        }
    }

    // 変更しない場合""
    return "";
}

例③

「kao_24bit\XXXX.bmp」に対応する「my_kao_24bit\XXXX_BTL.bmp」というファイルが存在するならば、
それを戦争中だけ採用する。
そういったファイルがないならば、変更しない。

string カスタム::On_フルカラー顔グラファイル要求時(string ファイル名) {

    if (Is_野戦中() || Is_攻城戦中()) {

        正規表現マッチ結果型 マッチ結果;
        if (Is_正規表現マッチ(ファイル名, "(\\d{4})\\.bmp", &マッチ結果)) {

            デバッグ出力 << マッチ結果[1] << " が番号相当部分です。" << endl;

            string str_number = マッチ結果[1];

            // kao_24bit\0000.bmp というパターンを  my_kao_24bit\0000_BTL.bmp に変更する。
            string new_filename = "my_kao_24bit\\" + str_number + "_BTL.bmp";

            デバッグ出力 << new_filename << " というファイル名があるかどうか。" << endl;

            // そのようなファイルが存在する場合
            if (PathFileExists(new_filename.c_str())) {
                return new_filename;
            }
        }

    }
    // 変更しない場合""
    return "";
}

例④

なんらかの都合で.NET Frameworkのマネージドクラスや文字列を使いたい、といったことも考えられる。

string カスタム::On_フルカラー顔グラファイル要求時(string ファイル名) {

    if (Is_野戦中() || Is_攻城戦中()) {

        String^ mngファイル名 = gcnew String(ファイル名.c_str());

        // kao_24bit\XXXX.bmp -> my_kao_24bit\XXXX_BTL.bmp
        mngファイル名 = mngファイル名->Replace("kao_24bit", "my_kao_24bit");
        mngファイル名 = mngファイル名->Replace(".bmp", "_BTL.bmp");

        // そのようなファイルが存在する場合
        if (System::IO::File::Exists(mngファイル名)) {
            string nativeファイル名 = string←String(mngファイル名);
            return nativeファイル名;
        }

    }
    // 変更しない場合""
    return "";
}