string カスタム::On_フルカラー顔グラファイル要求時(string ファイル名) { return ""; }
特定のファイルが要求されたら、別のファイルへと無条件でリダイレクトする例
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 ""; }