此次提交主要对代码进行了简化和优化,具体更改如下: 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`:定义了一个名为 "值类型表" 的数据结构,包含多个值类型及其详细信息。
99 lines
3.3 KiB
C#
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;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|