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))); } } } } }