using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using RustTools.muqing;
using RustTools.Views;
namespace RustTools.ViewModels;
///
/// 模组界面配置
///
public class ModuleViewModel : ObservableRecipient
{
public ObservableCollection ListMod = new();
public ModuleViewModel()
{
var iniHelper = new IniHelper();
iniHelper.Load(IniHelper.FILE.Config);
var v = iniHelper.GetValue(IniHelper.CODE.Rust, IniHelper.KEY.ModFileUrl);
if (v == string.Empty)
{
return;
}
var subfolders = Directory.GetDirectories(v);
foreach (var item in subfolders)
{
var info = new DirectoryInfo(item);
ListMod.Add(new DataObject(info));
}
var files = Directory.GetFiles(v);
foreach (var item in files)
{
var info = new FileInfo(item);
if (info.Name.EndsWith(".rwmod"))
{
ListMod.Add(new DataObject(info));
}
}
}
public async void Button_Rwmod(object sender, RoutedEventArgs e)
{
var menuItem = sender as MenuFlyoutItem;
if (menuItem != null)
{
if (menuItem.DataContext is DataObject folderItem)
{
var filepath = Path.Combine(Path.GetDirectoryName(folderItem.Dri), folderItem.Name + ".rwmod");
if (File.Exists(filepath))
{
var show = await new ContentDialog()
{
XamlRoot = menuItem.XamlRoot,
Title = "警告",
Content = "已经存在必须覆盖",
PrimaryButtonText = "确定",
SecondaryButtonText = "取消"
}.ShowAsync();
if (show == ContentDialogResult.Primary)
{
}
else
{
return;
}
}
// 压缩zip
var v = wj.ZipExample(folderItem.Dri, folderItem.Name + ".rwmod");
if (v != string.Empty)
{
ListMod.Remove(new DataObject(new FileInfo(filepath)));
ListMod.Insert(0, new DataObject(new FileInfo(v)));
}
}
}
}
}