diff --git a/VPet.Solution/Models/SaveViewer/SaveModel.cs b/VPet.Solution/Models/SaveViewer/SaveModel.cs index 44c7d9e..4afb167 100644 --- a/VPet.Solution/Models/SaveViewer/SaveModel.cs +++ b/VPet.Solution/Models/SaveViewer/SaveModel.cs @@ -31,6 +31,11 @@ public class SaveModel : ObservableClass /// public ObservableCollection Statistics { get; set; } = new(); + /// + /// 是损坏的 + /// + public bool IsDamaged { get; set; } + #region DateSaved private DateTime _dateSaved; public DateTime DateSaved @@ -162,12 +167,41 @@ public class SaveModel : ObservableClass } #endregion + + #region HashCode + private long _hashCode; + + public long HashCode + { + get => _hashCode; + set => SetProperty(ref _hashCode, value); + } + #endregion + + + + #region TotalTime + private long _totalTime; + + /// + /// 游玩总时长 + /// + public long TotalTime + { + get => _totalTime; + set => SetProperty(ref _totalTime, value); + } + #endregion + + public SaveModel(string filePath, GameSave_v2 save) { Name = Path.GetFileNameWithoutExtension(filePath); FilePath = filePath; DateSaved = File.GetLastWriteTime(filePath); LoadSave(save.GameSave); + if (save.Statistics.Data.TryGetValue("stat_total_time", out var time)) + TotalTime = time.GetInteger64(); foreach (var data in save.Statistics.Data) { Statistics.Add( diff --git a/VPet.Solution/ViewModels/SaveViewer/SaveWindowVM.cs b/VPet.Solution/ViewModels/SaveViewer/SaveWindowVM.cs index 885db67..eb0bbba 100644 --- a/VPet.Solution/ViewModels/SaveViewer/SaveWindowVM.cs +++ b/VPet.Solution/ViewModels/SaveViewer/SaveWindowVM.cs @@ -101,10 +101,14 @@ public class SaveWindowVM : ObservableClass private void LoadSaves() { var saveDirectory = Path.Combine(Environment.CurrentDirectory, "Saves"); - foreach (var file in Directory.EnumerateFiles(saveDirectory)) + if (Directory.Exists(saveDirectory) is false) + return; + foreach (var file in Directory.EnumerateFiles(saveDirectory).Where(s => s.EndsWith(".lps"))) { - var save = new GameSave_v2(new LPS(File.ReadAllText(file))); - var saveModel = new SaveModel(file, save); + var lps = new LPS(File.ReadAllText(file)); + var hashCode = lps.FindLine("hash")?.InfoToInt64 is long hash ? hash : 0; + var save = new GameSave_v2(lps); + var saveModel = new SaveModel(file, save) { HashCode = hashCode }; _saves.Add(saveModel); } } diff --git a/VPet.Solution/Views/SaveViewer/SaveDataPage.xaml b/VPet.Solution/Views/SaveViewer/SaveDataPage.xaml index 95fde9e..d970de6 100644 --- a/VPet.Solution/Views/SaveViewer/SaveDataPage.xaml +++ b/VPet.Solution/Views/SaveViewer/SaveDataPage.xaml @@ -87,6 +87,13 @@ Style="{DynamicResource Label_BaseStyle}" /> + + diff --git a/VPet.Solution/Views/SaveViewer/SaveWindow.xaml b/VPet.Solution/Views/SaveViewer/SaveWindow.xaml index dac9ed0..01757e7 100644 --- a/VPet.Solution/Views/SaveViewer/SaveWindow.xaml +++ b/VPet.Solution/Views/SaveViewer/SaveWindow.xaml @@ -33,17 +33,17 @@ pu:TextBoxHelper.Watermark="{ll:Str 搜索存档}" Style="{DynamicResource StandardTextBoxStyle}" Text="{Binding SearchSave, UpdateSourceTrigger=PropertyChanged}" /> - - - - - + + + + + + + - +