此次提交主要对代码进行了简化和优化,具体更改如下: 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`:定义了一个名为 "值类型表" 的数据结构,包含多个值类型及其详细信息。
141 lines
4.3 KiB
C#
141 lines
4.3 KiB
C#
|
||
using System.Collections.ObjectModel;
|
||
|
||
using Microsoft.UI.Xaml.Controls;
|
||
using Newtonsoft.Json;
|
||
using RustTools.DataList;
|
||
using RustTools.Helpers;
|
||
using RustTools.muqing;
|
||
using RustTools.ViewModels;
|
||
using Windows.Storage;
|
||
using Windows.UI.Popups;
|
||
namespace RustTools.Views;
|
||
|
||
/// <summary>
|
||
/// Êý¾Ý¼¯ËéƬ
|
||
/// </summary>
|
||
public sealed partial class CodeDataPage : Page
|
||
{
|
||
public CodeDataViewModel ViewModel
|
||
{
|
||
get; set;
|
||
}
|
||
public ObservableCollection<DataBaseManifest> DataConfig { get; set; } = new();
|
||
public static DataBaseManifest codetable = new();
|
||
public CodeDataPage()
|
||
{
|
||
ViewModel = new CodeDataViewModel();
|
||
InitializeComponent();
|
||
|
||
var filePath = Path.Combine(AppContext.BaseDirectory, "Assets\\CodeTable");
|
||
if (!Directory.Exists(filePath)) { return; }
|
||
var directoryInfo = new DirectoryInfo(filePath);
|
||
var directoryInfos = directoryInfo.GetDirectories();
|
||
foreach (var item in directoryInfos)
|
||
{
|
||
var v = Path.Combine(item.FullName, "DataBaseManifest.json");
|
||
if (File.Exists(v))
|
||
{
|
||
var json = JsonConvert.DeserializeObject<DataBaseManifest>(File.ReadAllText(v));
|
||
json.Dir = item.FullName;
|
||
//gj.sc(json.Dir);
|
||
DataConfig.Add(json);
|
||
|
||
}
|
||
}
|
||
var FirstOrDefault = DataConfig.FirstOrDefault(any => any.id == "official");
|
||
if (FirstOrDefault != null)
|
||
{
|
||
DataConfig.Remove(FirstOrDefault);
|
||
DataConfig.Insert(0, FirstOrDefault);
|
||
}
|
||
var aa = DataConfig.FirstOrDefault(any => any.Dir == codetable.Dir);
|
||
if (aa?.Dir == codetable.Dir)
|
||
{
|
||
listview.SelectedItem = aa;
|
||
}
|
||
}
|
||
|
||
private void listview_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||
{
|
||
if (e.AddedItems[0] is DataBaseManifest item)
|
||
{
|
||
var iniHelper = new IniHelper(IniHelper.FILE.Config);
|
||
iniHelper.SetValue("CodeTable", "Dir", item.Dir ?? string.Empty);
|
||
iniHelper.Save();
|
||
gj.sc(item.Dir);
|
||
codetable = item;
|
||
}
|
||
|
||
}
|
||
private async void MenuFlyoutItem_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||
{
|
||
if (sender is MenuFlyoutItem item)
|
||
{
|
||
if (item.DataContext is DataBaseManifest data)
|
||
{
|
||
var str = item.Text;
|
||
if (str == "±à¼")
|
||
{
|
||
//´ò¿ªÏµÍ³Îļþ¼ÐÈÃÓû§×Ô¼ºÑ¡ÔñJson±àÒëÆ÷
|
||
wj.OpenFileExplorer(data.Dir);
|
||
}
|
||
else if (str == "ɾ³ý")
|
||
{
|
||
var contentDialog = new ContentDialog()
|
||
{
|
||
XamlRoot = Content.XamlRoot,
|
||
Title = "Ìáʾ",
|
||
Content = $"ÊÇ·ñɾ³ý {data.name}\nλÖà {data.Dir}",
|
||
CloseButtonText = "È¡Ïû"
|
||
};
|
||
if (data.id == "official")
|
||
{
|
||
contentDialog.Title = "¾¯¸æ";
|
||
contentDialog.Content = "ÎÞ·¨É¾³ý¹Ù·½Êý¾Ý¼¯";
|
||
}
|
||
else
|
||
{
|
||
contentDialog.PrimaryButtonText = "È·¶¨";
|
||
}
|
||
var contentDialogResult = await contentDialog.ShowAsync();
|
||
if (contentDialogResult == ContentDialogResult.Primary)
|
||
{
|
||
gj.sc("ɾ³ýÎļþ¼Ð" + data.Dir);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
private async void AppBarButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||
{
|
||
if (sender is AppBarButton item)
|
||
{
|
||
var v = item.Tag.ToString();
|
||
if (v == "0")
|
||
{
|
||
//н¨
|
||
}
|
||
else if (v == "1")
|
||
{
|
||
//´ò¿ª
|
||
//var v1 = Path.Combine(wj.LocalFolder, "CodeTable");
|
||
//if (Directory.Exists(v1))
|
||
//{
|
||
// wj.OpenFileExplorer(v1);
|
||
//}
|
||
//else
|
||
//{
|
||
// await Dialog.DialogWarn("²»´æÔÚÎļþ¼Ð", XamlRoot);
|
||
//}
|
||
}
|
||
else if (v == "2")
|
||
{
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|