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;
///
/// 命令版本