diff --git a/Source/GrasscutterTools/Forms/FormMain.cs b/Source/GrasscutterTools/Forms/FormMain.cs index 1cb7424..d92dd78 100644 --- a/Source/GrasscutterTools/Forms/FormMain.cs +++ b/Source/GrasscutterTools/Forms/FormMain.cs @@ -18,15 +18,13 @@ **/ using System; -using System.Collections.Generic; using System.Drawing; using System.Linq; -using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using GrasscutterTools.Game; -using GrasscutterTools.OpenCommand; +using GrasscutterTools.Pages; using GrasscutterTools.Properties; using GrasscutterTools.Utils; @@ -38,81 +36,61 @@ namespace GrasscutterTools.Forms public FormMain() { + Console.WriteLine("FormMain ctor enter"); InitializeComponent(); Icon = Resources.IconGrasscutter; if (DesignMode) return; - - // 加载版本信息 - LoadVersion(); - + // 初始化页面 + InitPages(); // 加载设置 LoadSettings(); + Console.WriteLine("FormMain ctor completed"); } /// - /// 窗体载入时触发(切换语言时会重新载入) + /// 初始化并创建所有页面 /// - private void FormMain_Load(object sender, EventArgs e) + private void InitPages() { - Text += " - by jie65535 - v" + AppVersion.ToString(3); -#if DEBUG - Text += "-debug"; - //Text += "-debug -攻击修改特供版"; -#endif - if (DesignMode) return; - - GameData.LoadResources(); - - //LoadCustomCommands(); - //InitArtifactList(); - //InitGameItemList(); - //InitWeapons(); - //InitAvatars(); - //InitEntityList(); - //InitScenes(); - //InitStatList(); - //InitPermList(); - //InitQuestList(); - //InitMailPage(); - - //ChangeTPArtifact(); + Console.WriteLine("InitPages enter"); + TCMain.SuspendLayout(); + var ph = CreatePage(); + ph.OnLanguageChanged = () => FormMain_Load(this, EventArgs.Empty); + TPHome.Controls.Add(ph); + var poc = CreatePage(); + poc.ShowTipInRunButton = msg => ShowTip(msg, BtnInvokeOpenCommand); + TPRemoteCall.Controls.Add(poc); + TPCustom.Controls.Add(CreatePage()); + TPArtifact.Controls.Add(CreatePage()); + TPSpawn.Controls.Add(CreatePage()); + TPItem.Controls.Add(CreatePage()); + TPAvatar.Controls.Add(CreatePage()); + TPWeapon.Controls.Add(CreatePage()); + TPManage.Controls.Add(CreatePage()); + TPMail.Controls.Add(CreatePage()); + TPQuest.Controls.Add(CreatePage()); + TPScene.Controls.Add(CreatePage()); + TPAbout.Controls.Add(CreatePage()); + TCMain.ResumeLayout(); + Console.WriteLine("InitPages completed"); } /// - /// 第一次显示窗体时触发 + /// 创建指定类型页面 /// - protected override void OnShown(EventArgs e) + /// 页面类型,必须继承BasePage + /// 页面实例 + private T CreatePage() where T : BasePage, new() { - base.OnShown(e); - // 还原窗体位置 - if (Settings.Default.MainFormLocation != default) - Location = Settings.Default.MainFormLocation; - // 还原窗体大小 - if (Settings.Default.MainFormSize != default) - Size = Settings.Default.MainFormSize; - } - - /// - /// 窗口关闭后触发 - /// - private void FormMain_FormClosed(object sender, FormClosedEventArgs e) - { - // 保存当前设置 - SaveSettings(); - } - - /// - /// 应用版本 - /// - private Version AppVersion; - - /// - /// 加载应用版本 - /// - private void LoadVersion() - { - AppVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; + var page = new T + { + SetCommand = SetCommand, + RunCommands = RunCommands, + GetCommand = () => CmbCommand.Text, + Dock = DockStyle.Fill, + }; + return page; } /// @@ -124,21 +102,6 @@ namespace GrasscutterTools.Forms { // 恢复自动复制选项状态 ChkAutoCopy.Checked = Settings.Default.AutoCopy; - - // 初始化首页设置 - //InitHomeSettings(); - - // 初始化获取物品记录 - //InitGiveItemRecord(); - - // 初始化生成记录 - //InitSpawnRecord(); - - // 初始化开放命令 - //InitOpenCommand(); - - // 初始化邮件列表 - //InitMailList(); } catch (Exception ex) { @@ -146,6 +109,66 @@ namespace GrasscutterTools.Forms } } + /// + /// 窗体载入时触发(切换语言时会重新载入) + /// + private void FormMain_Load(object sender, EventArgs e) + { + Text += " - by jie65535 - v" + Common.AppVersion.ToString(3); +#if DEBUG + Text += "-debug"; +#endif + if (DesignMode) return; + + // 加载游戏ID资源 + GameData.LoadResources(); + + // 遍历每一个页面重新加载 + foreach (TabPage tp in TCMain.Controls) + { + if (tp.Controls.Count > 0 && tp.Controls[0] is BasePage page) + page.OnLoad(); + } + } + + /// + /// 第一次显示窗体时触发 + /// + protected override void OnShown(EventArgs e) + { + base.OnShown(e); + // 还原窗体位置 + if (Settings.Default.MainFormLocation != default) + { + Location = Settings.Default.MainFormLocation; + Console.WriteLine("Restore window location: " + Location.ToString()); + } + // 还原窗体大小 + if (Settings.Default.MainFormSize != default) + { + Size = Settings.Default.MainFormSize; + Console.WriteLine("Restore window size: " + Size.ToString()); + } + } + + /// + /// 窗口关闭后触发 + /// + private void FormMain_FormClosed(object sender, FormClosedEventArgs e) + { + Console.WriteLine("FormMain FormClosed enter"); + // 遍历每一个页面,通知关闭 + foreach (TabPage tp in TCMain.Controls) + { + if (tp.Controls.Count > 0 && tp.Controls[0] is BasePage page) + page.OnClosed(); + } + + // 保存当前设置 + SaveSettings(); + Console.WriteLine("FormMain FormClosed completed"); + } + /// /// 保存设置 /// @@ -162,15 +185,6 @@ namespace GrasscutterTools.Forms else Settings.Default.MainFormSize = Size; - // 保存自定义命令 - //SaveCustomCommands(); - - // 保存开放命令设置 - //SaveOpenCommand(); - - // 保存邮件设置 - //SaveMailSettings(); - // 保存默认设置 Settings.Default.Save(); } @@ -182,11 +196,6 @@ namespace GrasscutterTools.Forms #endregion - 初始化 Init - - /// - /// 命令版本 - /// - private CommandVersion CommandVersion => Common.CommandVersion; - #region - 命令 Command - /// @@ -310,7 +319,7 @@ namespace GrasscutterTools.Forms /// 是否执行成功 private async Task RunCommands(params string[] commands) { - if (OC == null || !OC.CanInvoke) + if (Common.OC == null || !Common.OC.CanInvoke) { ShowTip(Resources.RequireOpenCommandTip, BtnInvokeOpenCommand); TCMain.SelectedTab = TPRemoteCall; @@ -333,7 +342,7 @@ namespace GrasscutterTools.Forms var cmd = command.TrimStart('/'); try { - var msg = await OC.Invoke(cmd); + var msg = await Common.OC.Invoke(cmd); TxtCommandRunLog.AppendText(string.IsNullOrEmpty(msg) ? "OK" : msg); TxtCommandRunLog.AppendText(Environment.NewLine); } @@ -432,46 +441,5 @@ namespace GrasscutterTools.Forms } #endregion - 通用 General - - - #region - 命令记录 Command Logs - - - /// - /// 获取命令记录 - /// (反序列化) - /// - /// 命令记录文本(示例:"标签1\n命令1\n标签2\n命令2...") - /// 命令列表 - private List GetCommands(string commandsText) - { - var lines = commandsText.Split('\n'); - List commands = new List(lines.Length / 2); - for (int i = 0; i < lines.Length - 1; i += 2) - commands.Add(new GameCommand(lines[i].Trim(), lines[i + 1].Trim())); - return commands; - } - - /// - /// 获取命令记录文本 - /// (序列化) - /// - /// 命令列表 - /// 命令记录文本(示例:"标签1\n命令1\n标签2\n命令2...") - private string GetCommandsText(List commands) - { - StringBuilder builder = new StringBuilder(); - foreach (var cmd in commands) - { - builder.AppendLine(cmd.Name); - builder.AppendLine(cmd.Command); - } - return builder.ToString(); - } - - #endregion - 命令记录 Command Logs - - - /// - /// 开放命令接口 - /// - private OpenCommandAPI OC => Common.OC; } } \ No newline at end of file diff --git a/Source/GrasscutterTools/Pages/PageGiveArtifact.resx b/Source/GrasscutterTools/Pages/PageGiveArtifact.resx index f3ea221..b94ee33 100644 --- a/Source/GrasscutterTools/Pages/PageGiveArtifact.resx +++ b/Source/GrasscutterTools/Pages/PageGiveArtifact.resx @@ -433,7 +433,7 @@ 10 - Top + Bottom True diff --git a/Source/GrasscutterTools/Pages/PageHome.cs b/Source/GrasscutterTools/Pages/PageHome.cs index fb2f633..967f1b9 100644 --- a/Source/GrasscutterTools/Pages/PageHome.cs +++ b/Source/GrasscutterTools/Pages/PageHome.cs @@ -42,8 +42,6 @@ namespace GrasscutterTools.Pages InitializeComponent(); if (DesignMode) return; - LoadVersion(); - // 玩家UID NUDUid.Value = Settings.Default.Uid; NUDUid.ValueChanged += (o, e) => Settings.Default.Uid = NUDUid.Value; @@ -83,18 +81,6 @@ namespace GrasscutterTools.Pages #region - 检查更新 Check update - - /// - /// 应用版本 - /// - private Version AppVersion; - - /// - /// 加载应用版本 - /// - private void LoadVersion() - { - AppVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; - } private ReleaseAPI.ReleaseInfo LastestInfo = null; private Version lastestVersion = null; @@ -102,7 +88,7 @@ namespace GrasscutterTools.Pages private async Task LoadUpdate() { var info = await ReleaseAPI.GetReleasesLastest("jie65535", "GrasscutterCommandGenerator"); - if (Version.TryParse(info.TagName.Substring(1), out lastestVersion) && AppVersion < lastestVersion) + if (Version.TryParse(info.TagName.Substring(1), out lastestVersion) && Common.AppVersion < lastestVersion) { if (!string.IsNullOrEmpty(Settings.Default.CheckedLastVersion) && Version.TryParse(Settings.Default.CheckedLastVersion, out Version checkedVersion) @@ -163,6 +149,11 @@ namespace GrasscutterTools.Pages private void BtnOpenShopEditor_Click(object sender, EventArgs e) => ShowForm("ShopEditor"); + /// + /// 当选中语言改变时触发 + /// + public Action OnLanguageChanged { get; set; } + /// /// 语言选中项改变时触发 /// @@ -173,6 +164,8 @@ namespace GrasscutterTools.Pages MultiLanguage.SetDefaultLanguage(MultiLanguage.Languages[CmbLanguage.SelectedIndex]); // 动态更改语言 MultiLanguage.LoadLanguage(ParentForm, ParentForm.GetType()); + // 通知语言改变 + OnLanguageChanged?.Invoke(); } /// diff --git a/Source/GrasscutterTools/Pages/PageScene.Designer.cs b/Source/GrasscutterTools/Pages/PageScene.Designer.cs index 87a3abc..feac8b7 100644 --- a/Source/GrasscutterTools/Pages/PageScene.Designer.cs +++ b/Source/GrasscutterTools/Pages/PageScene.Designer.cs @@ -167,9 +167,9 @@ // // CmbClimateType // - resources.ApplyResources(this.CmbClimateType, "CmbClimateType"); this.CmbClimateType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.CmbClimateType.FormattingEnabled = true; + resources.ApplyResources(this.CmbClimateType, "CmbClimateType"); this.CmbClimateType.Name = "CmbClimateType"; this.CmbClimateType.SelectedIndexChanged += new System.EventHandler(this.CmbClimateType_SelectedIndexChanged); // diff --git a/Source/GrasscutterTools/Pages/PageScene.resx b/Source/GrasscutterTools/Pages/PageScene.resx index c4a9cb7..b5c3084 100644 --- a/Source/GrasscutterTools/Pages/PageScene.resx +++ b/Source/GrasscutterTools/Pages/PageScene.resx @@ -441,9 +441,6 @@ 10 - - Bottom, Left - 65, 29 @@ -465,9 +462,6 @@ 11 - - Bottom, Left - True diff --git a/Source/GrasscutterTools/Utils/Common.cs b/Source/GrasscutterTools/Utils/Common.cs index 453f34b..f6f5ed3 100644 --- a/Source/GrasscutterTools/Utils/Common.cs +++ b/Source/GrasscutterTools/Utils/Common.cs @@ -10,7 +10,7 @@ namespace GrasscutterTools.Utils /// /// 应用版本 /// - public static Version AppVersion { get; set; } + public static Version AppVersion { get; } = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; /// /// 命令版本