From 440d2fdda7690ce85473ecab85800a9e3c134520 Mon Sep 17 00:00:00 2001 From: Hakoyu Date: Fri, 19 Jan 2024 04:13:27 +0800 Subject: [PATCH] =?UTF-8?q?VPet.Solution=20=E4=BF=AE=E5=A4=8D=E5=B7=B2?= =?UTF-8?q?=E6=8D=9F=E5=9D=8F=E6=A8=A1=E7=BB=84=E4=B8=8D=E4=BC=9A=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=90=8D=E7=A7=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VPet.Solution/Models/ModLoader.cs | 3 ++- .../Models/SettingEditor/ModSettingModel.cs | 22 ++++++++++++++----- .../SettingEditor/ModSettingPageVM.cs | 9 +++++++- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/VPet.Solution/Models/ModLoader.cs b/VPet.Solution/Models/ModLoader.cs index e9abc023..5463972f 100644 --- a/VPet.Solution/Models/ModLoader.cs +++ b/VPet.Solution/Models/ModLoader.cs @@ -83,14 +83,15 @@ public class ModLoader public ModLoader(string path) { + ModPath = path; var infoFile = Path.Combine(path, "info.lps"); if (File.Exists(infoFile) is false) { + Name = Path.GetFileName(path); IsSuccesses = false; return; } var modlps = new LpsDocument(File.ReadAllText(infoFile)); - ModPath = path; Name = modlps.FindLine("vupmod").Info; Intro = modlps.FindLine("intro").Info; GameVer = modlps.FindSub("gamever").InfoToInt; diff --git a/VPet.Solution/Models/SettingEditor/ModSettingModel.cs b/VPet.Solution/Models/SettingEditor/ModSettingModel.cs index 0d44c821..b2b3cda4 100644 --- a/VPet.Solution/Models/SettingEditor/ModSettingModel.cs +++ b/VPet.Solution/Models/SettingEditor/ModSettingModel.cs @@ -1,5 +1,6 @@ using HKW.HKWUtils.Observable; using LinePutScript; +using LinePutScript.Localization.WPF; using System; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -49,13 +50,24 @@ public class ModSettingModel : ObservableClass Mods.Add(modModel); } else - Mods.Add(new()); + { + Mods.Add( + new() + { + Name = modName, + ModPath = "未知, 可能是{0}".Translate(Path.Combine(ModDirectory, modName)) + } + ); + } } foreach (var modPath in setting[WorkShopLineName]) { var loader = new ModLoader(modPath.Name); if (loader.IsSuccesses is false) + { + Mods.Add(new() { Name = loader.Name, ModPath = loader.ModPath }); return; + } var modModel = new ModModel(loader); modModel.IsPass = setting[PassModLineName].Contains(modModel.Name); modModel.IsMsg = setting[MsgModLineName].Contains(modModel.Name); @@ -264,8 +276,8 @@ public class ModModel : ObservableClass public ModModel() { - PropertyChanged += ModModel_PropertyChanged; IsEnabled = null; + RefreshState(); } private void ModModel_PropertyChanged( @@ -289,10 +301,10 @@ public class ModModel : ObservableClass public void RefreshState() { if (IsEnabled is true) - State = "已启用"; + State = "已启用".Translate(); else if (IsEnabled is false) - State = "已关闭"; + State = "已关闭".Translate(); else - State = "已损坏"; + State = "已损坏".Translate(); } } diff --git a/VPet.Solution/ViewModels/SettingEditor/ModSettingPageVM.cs b/VPet.Solution/ViewModels/SettingEditor/ModSettingPageVM.cs index cc277d25..cf262e17 100644 --- a/VPet.Solution/ViewModels/SettingEditor/ModSettingPageVM.cs +++ b/VPet.Solution/ViewModels/SettingEditor/ModSettingPageVM.cs @@ -137,7 +137,14 @@ public class ModSettingPageVM : ObservableClass private void OpenModPathCommand_ExecuteCommand(ModModel parameter) { - Utils.OpenLink(parameter.ModPath); + try + { + Utils.OpenLink(parameter.ModPath); + } + catch + { + MessageBox.Show("未在路径\n{0}\n中找到模组".Translate(parameter.ModPath)); + } } private void Current_PropertyChangedX(SettingWindowVM sender, PropertyChangedXEventArgs e)