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()); }