WIn_RustTools/Themes/PostRwmod.xaml.cs
muqing 7735738c3d 简化和优化代码,添加新 JSON 文件
此次提交主要对代码进行了简化和优化,具体更改如下:

1. 在 `App.xaml` 中,将 `ConCernItem` 的 `DataTemplate` 从 `StackPanel` 改为 `Grid`,并添加了 `Grid.ColumnDefinitions` 和 `Grid.RowDefinitions`。
2. 在 `App.xaml.cs` 中,删除了创建和解压缩 `RustCode` 目录的代码,改为直接从 `Assets` 目录获取 `DataBaseManifest` 文件,并更新了异常处理逻辑。
3. 在 `RustTools.csproj` 中,添加了新的 `PackageReference`,更新了 `RestSharp` 的版本,并注释掉了 `squirrel.windows` 的引用。
4. 在 `PostRwmod.xaml.cs` 中,删除了 `SharpCompress.Common` 和 `TinyPinyin` 的引用。
5. 在 `CodeDataPage.xaml.cs` 中,更新了 `filePath` 的路径,从 `ApplicationData.Current.LocalFolder.Path` 改为 `AppContext.BaseDirectory`。
6. 在 `ConcernPage.xaml` 中,调整了 `StackPanelA` 的 `MinWidth` 属性,并删除了 `StackPanel` 的 `Background` 属性。
7. 在 `ConcernPage.xaml.cs` 中,更新了 `Getlist` 方法的逻辑,增加了对 `response` 的空值和错误码检查。
8. 在 `ModulePage.xaml.cs` 中,删除了 `SharpCompress.Common` 和 `WinRT.Interop` 的引用。
9. 在 `SettingsPage.xaml` 中,更新了 `PersonPicture` 的 `ToolTipService.ToolTip` 属性。
10. 在 `IniHelper.cs` 中,更新了 `Load` 方法的 `filePath` 路径,并添加了目录不存在时创建目录的逻辑。
11. 在 `wj.cs` 中,更新了 `CD` 的路径为 `AppContext.BaseDirectory`,并注释掉了废弃的路径。
12. 在 `config.ini` 中,添加了 `[Settings]` 节点和 `SystemBackdrop=Mica` 设置。

此外,添加了以下新 JSON 文件:
1. `DataBaseManifest.json`:包含数据集的基本信息和数据表的映射。
2. `game_version.json`:包含游戏版本数据。
3. `section.json`:包含铁锈助手节名数据。
4. `value_type.json`:定义了一个名为 "值类型表" 的数据结构,包含多个值类型及其详细信息。
2025-01-20 22:43:40 +08:00

99 lines
3.3 KiB
C#

using Microsoft.UI.Xaml.Controls;
using RustTools.muqing;
using TinyPinyin;
using static IniHelper;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace RustTools.Themes;
public sealed partial class PostRwmod : UserControl
{
private readonly ContentDialog contentDialog;
public PostRwmod(ContentDialog contentDialog)
{
this.contentDialog = contentDialog;
InitializeComponent();
}
Dictionary<string, Dictionary<string, string>> IniInfo = new();
string path;
public void Init(string path)
{
this.path = path;
var directoryInfo = new DirectoryInfo(path);
//
var id = PinyinHelper.GetPinyin(directoryInfo.Name, "_");
//¶ÁÈ¡
var v = Path.Combine(directoryInfo.FullName, "mod-info.txt");
if (File.Exists(v))
{
var fileInfo = new FileInfo(v);
IniInfo = gj.IniInfo(v);
if(IniInfo.TryGetValue("mod",out var mod))
{
var Name = mod.TryGetValue("title", out var value) ? value : fileInfo.Name;
TextBoxName.Text= Name;
//\n
var Info = mod.TryGetValue("description", out var description) ? description : "ÎÞÃèÊöÐÅÏ¢";
TextBoxInfo.AcceptsReturn = true;
TextBoxInfo.Text= Info.Replace("\\n", "\n");
if(mod.TryGetValue("minVersion", out var minVersion))
{
TextBoxYouxiVersion.Text= minVersion;
}
//Version
TextBoxVersion.Text = mod.TryGetValue("Version", out var version) ? version : "1.0.0";
}
}
TextBoxID.Text = id;
}
private void AppBarButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
{
if (sender is AppBarButton button)
{
contentDialog.Closing -= Dialog.DialogNotEsc;
switch (button.Tag)
{
case "È¡Ïû":
contentDialog.Hide();
break;
case "Ìá½»":
var modstr = "mod";
if (!IniInfo.TryGetValue(modstr, out var value))
{
value = new Dictionary<string, string>();
IniInfo[modstr] = value;
}
value["title"] = TextBoxName.Text;
value["description"] = TextBoxInfo.Text.ToString().Replace("\n", "\n");
gj.sc(TextBoxInfo.Text.ToString().Replace("\n", "\\n"));
value["minVersion"] = TextBoxYouxiVersion.Text;
using (var sw = new StreamWriter(Path.Combine(path, "mod-info.txt")))
{
foreach (var section in IniInfo)
{
sw.WriteLine($"[{section.Key}]");
foreach (var keyValue in section.Value)
{
sw.WriteLine($"{keyValue.Key}:{keyValue.Value}");
}
sw.WriteLine();
}
}
contentDialog.Hide();
break;
}
}
}
}