void ApplyDrawFontPatch() { HowDoYouLikePatch2Form.CheckAndShowPopupDialog(HowDoYouLikePatch2Form.TYPE.DrawFont_By_Translate); }
public static bool CheckAndShowPopupDialog(TYPE type) { Func <bool> checkFunc = null; string reason = ""; string patchName1 = ""; string patchName2 = ""; string patchShowName = null; string patchCombo = ""; if (type == TYPE.Anti_Huffman_By_Translate) { checkFunc = PatchUtil.SearchAntiHuffmanPatch; reason = R._("翻訳された文章がハフマン符号化テーブルを超えている可能性があります。\r\nAntiHuffmanPatchを適応しておくことをお勧めします。"); patchName1 = "Anti-Huffman";///No Translate } if (type == TYPE.Anti_Huffman_By_English) { checkFunc = PatchUtil.SearchAntiHuffmanPatch; reason = R._("英語版で、テキストを変更するためには、Anti-Huffman Patchが必要です。"); patchName1 = "Anti-Huffman";///No Translate } else if (type == TYPE.C01Hack_By_ImageBattleAnimation) { checkFunc = PatchUtil.SearchC01HackPatch; reason = R._("このアニメーションには、C01 命令が使われています。\r\n現在、C01ハックパッチは、まだインストールされていません。\r\nアニメーションを再生するためには、\r\nC01ハックを有効にした方がいいと思われますが、どうしますか?\r\n"); patchName1 = "01command_hack"; ///No Translate patchName2 = "01コマンドハック"; ///No Translate } else if (type == TYPE.C48Hack_By_ImageBattleAnimation) { checkFunc = PatchUtil.SearchC48HackPatch; reason = R._("このアニメーションには、C48 命令(or Sxx命令)が使われています。\r\n現在、C48ハックパッチは、まだインストールされていません。\r\nアニメーションを再生するためには、\r\nC48ハックを有効にした方がいいと思われますが、どうしますか?\r\n"); patchName1 = "48command_hack"; ///No Translate patchName2 = "48コマンドハック"; ///No Translate } else if (type == TYPE.NIMAP_By_SongTrack) { checkFunc = PatchUtil.SearchNIMAP; reason = R._("Midi楽器はFE楽器と並び順が違うので、\r\nNIMAPを利用することをお勧めします。"); if (Program.ROM.RomInfo.version() == 8) { //FE8用には更新されたバージョンを利用する. patchName1 = "SOUND_NIMAP2(Native Instrument Map)"; ///No Translate patchName2 = "SOUND_NIMAP2"; ///No Translate } else { patchName1 = "SOUND_NIMAP(Native Instrument Map)"; ///No Translate patchName2 = "SOUND_NIMAP"; ///No Translate } } else if (type == TYPE.Track12_Over_By_SongTrack) { checkFunc = PatchUtil.Search16tracks12soundsPatch; reason = R._("この楽曲の楽譜は、12以上のトラックが存在しています。\r\nこの曲をゲームで再生するには、16_tracks_12_soundsが必要です。\r\nこのパッチを適応しますか?"); patchName1 = "16_tracks_12_sounds";///No Translate } else if (type == TYPE.MeleeAndMagicFix_By_Unit) { checkFunc = PatchUtil.SearchMeleeAndMagicFixPatch; reason = R._("武器と魔法を同時に利用するにはMeleeAndMagicPatchが必要です。\r\n有効にしますか?"); patchName1 = "MeleeAndMagicFix";///No Translate } else if (type == TYPE.ItemIconExpands) { checkFunc = PatchUtil.SearchIconExpandsPatch; reason = R._("アイコンを拡張するには、テーブルを拡張する前にパッチを適応する必要があります。\r\n有効にしますか?"); patchName1 = "Extended to item icon 0xFE"; ///No Translate patchName2 = "Extend Item Icon List Length"; ///No Translate patchCombo = "fix"; } else if (type == TYPE.MagicPatch_By_Menu) { return(HowDoYouLikePatch2Form.CheckAndShowPopupDialog(HowDoYouLikePatch2Form.TYPE.MagicPatch_By_Menu)); } else if (type == TYPE.Skill) { if (Program.ROM.RomInfo.version() != 8) { return(false); } if (Program.ROM.RomInfo.is_multibyte()) { checkFunc = () => { PatchUtil.skill_system_enum a = PatchUtil.SearchSkillSystem(); return(a == PatchUtil.skill_system_enum.FE8N || a == PatchUtil.skill_system_enum.FE8N_ver2 || a == PatchUtil.skill_system_enum.yugudora ); }; reason = R._("スキル拡張 FE8N が必要です。\r\n有効にしますか?"); patchName1 = "Skill Extension FE8N 2019_02_19"; ///No Translate patchName2 = "skill_2019_02_19"; ///No Translate } else { checkFunc = () => { return(PatchUtil.SearchSkillSystem() == PatchUtil.skill_system_enum.SkillSystem); }; reason = R._("スキル拡張 SkillSystems が必要です。\r\n有効にしますか?"); patchName1 = "Skill20200223"; ///No Translate patchName2 = "Skill20200223"; ///No Translate } } else if (type == TYPE.SkipWorldmapFix) { if (Program.ROM.RomInfo.version() != 8) { return(false); } checkFunc = () => { return(PatchUtil.SearchSkipWorldMapPatch() != PatchUtil.mnc2_fix_enum.NO); }; reason = R._("FE8のマップをワールドマップを経由しないで移動させるには、パッチが必要です。\r\n有効にしますか?"); patchName1 = "MNC2Fix"; ///No Translate patchName2 = "MNC2Fix"; ///No Translate patchShowName = "Skip Worldmap"; patchCombo = "fix"; } else if (type == TYPE.CAMERA_Event_OutOfBand_Fix) { if (Program.ROM.RomInfo.version() != 8) { return(false); } checkFunc = () => { return(PatchUtil.SearchCAMERA_Event_OutOfBand_FixPatch()); }; reason = R._("カメラを移動する命令で、画面外に飛び出してしまうバグを修正するパッチをインストールしますか?"); patchName1 = "Fix CAM1_CAMERA2 going out of bounds"; ///No Translate patchName2 = "Fix CAM1_CAMERA2 going out of bounds"; ///No Translate patchShowName = "Fix CAM1_CAMERA2 going out of bounds"; patchCombo = "Fix"; } else if (type == TYPE.CAMERA_Event_NotExistsUnit_Fix) { if (Program.ROM.RomInfo.version() != 8) { return(false); } checkFunc = () => { return(PatchUtil.SearchCAMERA_Event_NotExistsUnit_FixPatch()); }; reason = R._("存在しないユニットを指定した時にフリーズするバグを修正するパッチをインストールしますか?"); patchName1 = "Event26_CameraControlMaybe_Fix not to freeze even nonexistent units"; ///No Translate patchName2 = "Event26_CameraControlMaybe_Fix not to freeze even nonexistent units"; ///No Translate patchShowName = "Event26_CameraControlMaybe_Fix not to freeze even nonexistent units"; patchCombo = "Fix"; } else if (type == TYPE.UnitStateEvent_0x34_Fix) { if (Program.ROM.RomInfo.version() != 8) { return(false); } checkFunc = () => { return(PatchUtil.SearchUnitStateEvent_0x34_FixPatch()); }; reason = R._("存在しないユニットを指定した時にフリーズするバグを修正するパッチをインストールしますか?"); patchName1 = "Event34_MessWithUnitState_Fix not to freeze even nonexistent units"; ///No Translate patchName2 = "Event34_MessWithUnitState_Fix not to freeze even nonexistent units"; ///No Translate patchShowName = "Event34_MessWithUnitState_Fix not to freeze even nonexistent units"; patchCombo = "Fix"; } else if (type == TYPE.WakuEvent_0x3B_Fix) { if (Program.ROM.RomInfo.version() != 8) { return(false); } checkFunc = () => { return(PatchUtil.SearchWakuEvent_0x3B_FixPatch()); }; reason = R._("存在しないユニットを指定した時にフリーズするバグを修正するパッチをインストールしますか?"); patchName1 = "Event3B_frame_Fix not to freeze even nonexistent units"; ///No Translate patchName2 = "Event3B_frame_Fix not to freeze even nonexistent units"; ///No Translate patchShowName = "Event3B_frame_Fix not to freeze even nonexistent units"; patchCombo = "Fix"; } Debug.Assert(checkFunc != null); Debug.Assert(patchName1 != ""); Debug.Assert(reason != ""); if (checkFunc()) {//すでに適応されている. return(true); } if (patchShowName == null) { patchShowName = patchName1; } HowDoYouLikePatchForm f = (HowDoYouLikePatchForm)InputFormRef.JumpFormLow <HowDoYouLikePatchForm>(); string tile = R._("{0}パッチを有効にしますか?", patchShowName); f.Text = tile; f.ReasonLabel.Text = R._("{0}\r\n\r\n{1}", tile, reason); f.EnableButton.Text = R._("{0}パッチを有効にする", patchShowName); f.EnableButton.Click += (sender, e) => { f.Close(); PatchForm patchF = (PatchForm)InputFormRef.JumpForm <PatchForm>(); bool r = patchF.ApplyPatch(patchName1, patchName2, patchCombo); ///No Translate if (!r) { R.ShowStopError("パッチの自動適応に失敗しました。\r\nパッチ画面にエラーが表示されていないか確認してください。\r\n必須パッチの適応に失敗したということは、FEBuilderGBAの解凍に失敗している可能性があります。\r\nFEBuilderGBAを再インストールしてください。\r\nそれでも問題が解決しない場合は、バグとして報告してください。\r\n"); } f.Close(); }; if (Program.IsCommandLine) {//コマンドラインモードだったら自動適応するしかないね。 U.FireOnClick(f.EnableButton); return(checkFunc()); } f.ShowDialog(); return(checkFunc()); }
public static bool CheckAndShowPopupDialog(TYPE type) { Func <bool> checkFunc = null; string title = ""; string reason = ""; string patchName1 = ""; string patchName2 = ""; string patchShowName = null; string patchName3 = ""; string patchName4 = ""; string patchShowName3 = null; if (type == TYPE.MagicPatch_By_Menu) { checkFunc = () => { return(ImageUtilMagic.SearchMagicSystem() != ImageUtilMagic.magic_system_enum.NO); }; title = R._("魔法を追加するには、魔法システムパッチが必要です。"); string version = Program.ROM.RomInfo.VersionToFilename(); if (version == "FE6") { //FE6 //patchName1 = "FEditorMagicCSASystem_FE6";///No Translate patchName3 = "CSA_Creator_For_FE6_ver2"; ///No Translate } else if (version == "FE7J") { //FE7J patchName1 = "Custom Spell Animation Engine"; ///No Translate //patchName3 = "CSA_Creator_For_FE7U";///No Translate // string no_patch = R._("残念ながら、FE7J用の魔法システムパッチは存在しません。\r\n"); // R.ShowStopError(title + "\r\n" + no_patch); // return false; } else if (version == "FE7U") { //FE7U //patchName1 = "FEditorMagicCSASystem_FE7U";///No Translate patchName3 = "CSA_Creator_For_FE7U_ver2"; ///No Translate } else if (version == "FE8J") { //FE8J patchName1 = "magic patch (FeditorAdvMagicSystem)"; ///No Translate patchName3 = "CSA_Creator_For_FE8J_ver2"; ///No Translate } else if (version == "FE8U") { //FE8U patchName1 = "FEditorMagicCSASystem_FE8U"; ///No Translate patchName3 = "CSA_Creator_For_FE8U_ver2"; ///No Translate } if (patchName1 != "" && patchName3 != "") { reason = R._("魔法システムパッチは2つあるので、どちらかを選んでください。\r\n"); reason += R._("FEditorMagicCSASystemは、長い動作実績のある魔法システムです。\r\n"); reason += R._("CSA_Creatorは、より解像度をサポートする、新進気鋭の魔法システムです。\r\n"); } else { reason = R._("魔法システムパッチを適用してください。"); } } else if (type == TYPE.DrawFont_By_Translate) { checkFunc = () => { return(PatchUtil.draw_font_enum.NO != PatchUtil.SearchDrawFontPatch()); }; title = R._("他の言語を表示するにはDrawFontパッチが必要です。"); if (Program.ROM.RomInfo.is_multibyte()) { patchName3 = "DrawSingleByte";///No Translate } else { patchName1 = "DrawMultiByte"; ///No Translate patchName3 = "DrawUTF8"; ///No Translate reason += R._("日本語へ翻訳する場合は、DrawMultiByte を選択してください。\r\n"); reason += R._("日本語以外へ翻訳する場合は、DrawUTF8 を選択してください\r\n"); } } Debug.Assert(checkFunc != null); Debug.Assert(title != ""); if (checkFunc()) {//すでに適応されている. return(true); } if (patchShowName == null) { patchShowName = patchName1; } if (patchShowName3 == null) { patchShowName3 = patchName3; } HowDoYouLikePatch2Form f = (HowDoYouLikePatch2Form)InputFormRef.JumpFormLow <HowDoYouLikePatch2Form>(); f.Text = title; f.ReasonLabel.Text = R._("{0}\r\n\r\n{1}", title, reason); if (patchName1 == "") { f.EnableButton.Hide(); } else { f.EnableButton.Text = R._("{0}パッチを有効にする", patchShowName); f.EnableButton.Click += (sender, e) => { f.Close(); PatchForm patchF = (PatchForm)InputFormRef.JumpForm <PatchForm>(); patchF.ApplyPatch(patchName1, patchName2); ///No Translate }; } if (patchName3 == "") { f.EnableButton3.Hide(); } else { f.EnableButton3.Text = R._("{0}パッチを有効にする", patchShowName3); f.EnableButton3.Click += (sender, e) => { f.Close(); PatchForm patchF = (PatchForm)InputFormRef.JumpForm <PatchForm>(); patchF.ApplyPatch(patchName3, patchName4); ///No Translate }; } if (Program.IsCommandLine) {//コマンドラインモードだったら自動適応するしかないね。 f.CommandLineClick(patchName1, patchName3); return(checkFunc()); } f.ShowDialog(); return(checkFunc()); }