From 05d226ad15495d896e0eae65ff445042fdec64bf Mon Sep 17 00:00:00 2001
From: DismissedLight <1686188646@qq.com>
Date: Wed, 15 Mar 2023 18:28:14 +0800
Subject: [PATCH] move viewmodels
---
.../Metadata/Avatar/Avatar.Implementation.cs | 1 +
.../Model/Metadata/Item/Material.cs | 12 ++++---
.../Service/Cultivation/CultivationService.cs | 29 ++++++++---------
.../Cultivation/ICultivationService.cs | 5 +--
.../Snap.Hutao/Service/Game/GameService.cs | 3 +-
.../Snap.Hutao/Service/Game/ProcessInterop.cs | 18 ++++-------
src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj | 3 ++
.../View/Control/BaseValueSlider.xaml.cs | 2 +-
.../Snap.Hutao/View/Page/WikiAvatarPage.xaml | 4 +--
.../View/Page/WikiAvatarPage.xaml.cs | 2 +-
.../Snap.Hutao/View/Page/WikiMonsterPage.xaml | 4 +--
.../View/Page/WikiMonsterPage.xaml.cs | 2 +-
.../Snap.Hutao/View/Page/WikiWeaponPage.xaml | 4 +--
.../View/Page/WikiWeaponPage.xaml.cs | 2 +-
.../Cultivation/CultivateEntryView.cs | 8 +++--
...{CultivateItem.cs => CultivateItemView.cs} | 9 +++---
.../Cultivation/CultivationViewModel.cs | 15 ++++-----
.../ViewModel/Cultivation/DaysOfWeek.cs | 2 +-
.../Cultivation/InventoryItemView.cs} | 9 +++---
.../Cultivation/StatisticsCultivateItem.cs | 4 +--
.../Snap.Hutao/ViewModel/Game/Screenshot.cs | 31 -------------------
.../ViewModel/Game/ScreenshotViewModel.cs | 28 -----------------
.../Snap.Hutao/ViewModel/SettingViewModel.cs | 14 ++++-----
.../Wiki}/BaseValueInfo.cs | 5 +--
.../Wiki}/PropertyCurveValue.cs | 2 +-
.../{ => Wiki}/WikiAvatarViewModel.cs | 3 +-
.../{ => Wiki}/WikiMonsterViewModel.cs | 3 +-
.../{ => Wiki}/WikiWeaponViewModel.cs | 3 +-
28 files changed, 83 insertions(+), 144 deletions(-)
rename src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/{CultivateItem.cs => CultivateItemView.cs} (77%)
rename src/Snap.Hutao/Snap.Hutao/{Model/Binding/Inventory/InventoryItem.cs => ViewModel/Cultivation/InventoryItemView.cs} (76%)
delete mode 100644 src/Snap.Hutao/Snap.Hutao/ViewModel/Game/Screenshot.cs
delete mode 100644 src/Snap.Hutao/Snap.Hutao/ViewModel/Game/ScreenshotViewModel.cs
rename src/Snap.Hutao/Snap.Hutao/{Model/Binding/BaseValue => ViewModel/Wiki}/BaseValueInfo.cs (96%)
rename src/Snap.Hutao/Snap.Hutao/{Model/Binding/BaseValue => ViewModel/Wiki}/PropertyCurveValue.cs (95%)
rename src/Snap.Hutao/Snap.Hutao/ViewModel/{ => Wiki}/WikiAvatarViewModel.cs (99%)
rename src/Snap.Hutao/Snap.Hutao/ViewModel/{ => Wiki}/WikiMonsterViewModel.cs (97%)
rename src/Snap.Hutao/Snap.Hutao/ViewModel/{ => Wiki}/WikiWeaponViewModel.cs (99%)
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Avatar/Avatar.Implementation.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Avatar/Avatar.Implementation.cs
index ea1ae0ba..766958fe 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Avatar/Avatar.Implementation.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Avatar/Avatar.Implementation.cs
@@ -36,6 +36,7 @@ internal partial class Avatar : IStatisticsItemSource, ISummaryItemSource, IName
///
/// 最大等级
///
+ [SuppressMessage("", "CA1822")]
public int MaxLevel { get => 90; }
///
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Material.cs b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Material.cs
index 1a2906a7..b6a041a1 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Material.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Model/Metadata/Item/Material.cs
@@ -3,6 +3,7 @@
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Primitive;
+using Snap.Hutao.ViewModel.Cultivation;
using System.Collections.Immutable;
namespace Snap.Hutao.Model.Metadata.Item;
@@ -81,6 +82,7 @@ internal sealed class Material : Display
return true;
}
+ // TODO: Currently only support CN
return TypeDescription switch
{
"角色与武器培养素材" => true,
@@ -114,23 +116,23 @@ internal sealed class Material : Display
/// 获取物品对应的 DaysOfWeek
///
/// DaysOfWeek
- public Binding.Cultivation.DaysOfWeek GetDaysOfWeek()
+ public DaysOfWeek GetDaysOfWeek()
{
if (MondayThursdayItems.Contains(Id))
{
- return Binding.Cultivation.DaysOfWeek.MondayAndThursday;
+ return DaysOfWeek.MondayAndThursday;
}
if (TuesdayFridayItems.Contains(Id))
{
- return Binding.Cultivation.DaysOfWeek.TuesdayAndFriday;
+ return DaysOfWeek.TuesdayAndFriday;
}
if (WednesdaySaturdayItems.Contains(Id))
{
- return Binding.Cultivation.DaysOfWeek.WednesdayAndSaturday;
+ return DaysOfWeek.WednesdayAndSaturday;
}
- return Binding.Cultivation.DaysOfWeek.Any;
+ return DaysOfWeek.Any;
}
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/CultivationService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/CultivationService.cs
index 9f3d22fc..beb0d7c0 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/CultivationService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/CultivationService.cs
@@ -13,11 +13,8 @@ using Snap.Hutao.Model.Entity.Primitive;
using Snap.Hutao.Model.Metadata.Item;
using Snap.Hutao.Model.Primitive;
using Snap.Hutao.Service.Metadata;
+using Snap.Hutao.ViewModel.Cultivation;
using System.Collections.ObjectModel;
-using BindingCultivateEntry = Snap.Hutao.Model.Binding.Cultivation.CultivateEntryView;
-using BindingCultivateItem = Snap.Hutao.Model.Binding.Cultivation.CultivateItem;
-using BindingInventoryItem = Snap.Hutao.Model.Binding.Inventory.InventoryItem;
-using BindingStatisticsItem = Snap.Hutao.Model.Binding.Cultivation.StatisticsCultivateItem;
namespace Snap.Hutao.Service.Cultivation;
@@ -64,7 +61,7 @@ internal sealed class CultivationService : ICultivationService
try
{
- Current ??= projects.SingleOrDefault(proj => proj.IsSelected);
+ Current ??= projects.SelectedOrDefault();
}
catch (DbUpdateConcurrencyException ex)
{
@@ -129,7 +126,7 @@ internal sealed class CultivationService : ICultivationService
}
///
- public List GetInventoryItems(CultivateProject cultivateProject, List metadata, ICommand saveCommand)
+ public List GetInventoryItems(CultivateProject cultivateProject, List metadata, ICommand saveCommand)
{
Guid projectId = cultivateProject.InnerId;
using (IServiceScope scope = scopeFactory.CreateScope())
@@ -139,7 +136,7 @@ internal sealed class CultivationService : ICultivationService
.Where(a => a.ProjectId == projectId)
.ToList();
- List results = new();
+ List results = new();
foreach (Material meta in metadata.Where(m => m.IsInventoryItem()).OrderBy(m => m.Id))
{
InventoryItem entity = entities.SingleOrDefault(e => e.ItemId == meta.Id) ?? InventoryItem.Create(projectId, meta.Id);
@@ -151,7 +148,7 @@ internal sealed class CultivationService : ICultivationService
}
///
- public async Task> GetCultivateEntriesAsync(CultivateProject cultivateProject)
+ public async Task> GetCultivateEntriesAsync(CultivateProject cultivateProject)
{
await ThreadHelper.SwitchToBackgroundAsync();
using (IServiceScope scope = scopeFactory.CreateScope())
@@ -163,7 +160,7 @@ internal sealed class CultivationService : ICultivationService
Dictionary idAvatarMap = await metadataService.GetIdToAvatarMapAsync().ConfigureAwait(false);
Dictionary idWeaponMap = await metadataService.GetIdToWeaponMapAsync().ConfigureAwait(false);
- List results = new();
+ List results = new();
List entries = await appDbContext.CultivateEntries
.Where(e => e.ProjectId == cultivateProject.InnerId)
.ToListAsync()
@@ -173,7 +170,7 @@ internal sealed class CultivationService : ICultivationService
{
Guid entryId = entry.InnerId;
- List resultItems = new();
+ List resultItems = new();
foreach (CultivateItem item in await GetEntryItemsAsync(appDbContext, entryId).ConfigureAwait(false))
{
@@ -197,11 +194,11 @@ internal sealed class CultivationService : ICultivationService
}
///
- public async Task> GetStatisticsCultivateItemCollectionAsync(CultivateProject cultivateProject, CancellationToken token)
+ public async Task> GetStatisticsCultivateItemCollectionAsync(CultivateProject cultivateProject, CancellationToken token)
{
using (IServiceScope scope = scopeFactory.CreateScope())
{
- List resultItems = new();
+ List resultItems = new();
AppDbContext appDbContext = scope.ServiceProvider.GetRequiredService();
List materials = await scope.ServiceProvider
@@ -222,7 +219,7 @@ internal sealed class CultivationService : ICultivationService
continue;
}
- if (resultItems.SingleOrDefault(i => i.Inner.Id == item.ItemId) is BindingStatisticsItem existedItem)
+ if (resultItems.SingleOrDefault(i => i.Inner.Id == item.ItemId) is StatisticsCultivateItem existedItem)
{
existedItem.Count += item.Count;
}
@@ -237,7 +234,7 @@ internal sealed class CultivationService : ICultivationService
foreach (InventoryItem inventoryItem in await GetProjectInventoryAsync(appDbContext, projectId).ConfigureAwait(false))
{
- if (resultItems.SingleOrDefault(i => i.Inner.Id == inventoryItem.ItemId) is BindingStatisticsItem existedItem)
+ if (resultItems.SingleOrDefault(i => i.Inner.Id == inventoryItem.ItemId) is StatisticsCultivateItem existedItem)
{
existedItem.TotalCount += inventoryItem.Count;
}
@@ -264,7 +261,7 @@ internal sealed class CultivationService : ICultivationService
}
///
- public void SaveInventoryItem(BindingInventoryItem item)
+ public void SaveInventoryItem(InventoryItemView item)
{
using (IServiceScope scope = scopeFactory.CreateScope())
{
@@ -295,7 +292,7 @@ internal sealed class CultivationService : ICultivationService
try
{
- Current ??= appDbContext.CultivateProjects.AsNoTracking().SingleOrDefault(proj => proj.IsSelected);
+ Current ??= appDbContext.CultivateProjects.AsNoTracking().SelectedOrDefault();
}
catch (InvalidOperationException ex)
{
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/ICultivationService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/ICultivationService.cs
index 324c20fe..a6ee8b77 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/ICultivationService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Cultivation/ICultivationService.cs
@@ -5,6 +5,7 @@ using Snap.Hutao.Model.Binding.Cultivation;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.Entity.Primitive;
using Snap.Hutao.Model.Metadata.Item;
+using Snap.Hutao.ViewModel.Cultivation;
using Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate;
using System.Collections.ObjectModel;
@@ -35,7 +36,7 @@ internal interface ICultivationService
/// 元数据
/// 保存命令
/// 物品列表
- List GetInventoryItems(CultivateProject cultivateProject, List metadata, ICommand saveCommand);
+ List GetInventoryItems(CultivateProject cultivateProject, List metadata, ICommand saveCommand);
///
/// 获取用于绑定的项目集合
@@ -84,7 +85,7 @@ internal interface ICultivationService
/// 保存单个物品
///
/// 物品
- void SaveInventoryItem(Model.Binding.Inventory.InventoryItem item);
+ void SaveInventoryItem(InventoryItemView item);
///
/// 异步尝试添加新的项目
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs
index 6c7d14ac..ad1e3071 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/GameService.cs
@@ -304,9 +304,10 @@ internal sealed class GameService : IGameService
bool isElevated = Activation.GetElevated();
game.Start();
+
if (isElevated && launchOptions.MultipleInstances)
{
- await ProcessInterop.DisableProtectionAsync(game, gamePath).ConfigureAwait(false);
+ ProcessInterop.DisableProtection(game, gamePath);
}
if (isElevated && launchOptions.UnlockFps)
diff --git a/src/Snap.Hutao/Snap.Hutao/Service/Game/ProcessInterop.cs b/src/Snap.Hutao/Snap.Hutao/Service/Game/ProcessInterop.cs
index ee12a971..a01101ac 100644
--- a/src/Snap.Hutao/Snap.Hutao/Service/Game/ProcessInterop.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Service/Game/ProcessInterop.cs
@@ -2,11 +2,9 @@
// Licensed under the MIT license.
using Snap.Hutao.Core;
-using Snap.Hutao.Core.IO;
using Snap.Hutao.Service.Game.Unlocker;
using System.Diagnostics;
using System.IO;
-using System.Runtime.InteropServices;
namespace Snap.Hutao.Service.Game;
@@ -69,21 +67,17 @@ internal static class ProcessInterop
/// 游戏进程
/// 游戏路径
/// 是否禁用成功
- public static async Task DisableProtectionAsync(Process game, string gamePath)
+ public static bool DisableProtection(Process game, string gamePath)
{
string? gameFolder = Path.GetDirectoryName(gamePath);
if (!string.IsNullOrEmpty(gameFolder))
{
- string pbasePath = Path.Combine(gameFolder, "mhypbase.dll");
- SafeHandle handle = File.OpenHandle(pbasePath, share: FileShare.None);
- while (true) {
- if (game.MainWindowHandle != nint.Zero) {
- handle.Close();
- break;
- }
- await Task.Delay(100).ConfigureAwait(false);
+ string mhypbaseDll = Path.Combine(gameFolder, "mhypbase.dll");
+ using (File.OpenHandle(mhypbaseDll, share: FileShare.None))
+ {
+ SpinWait.SpinUntil(() => game.MainWindowHandle != 0);
+ return true;
}
- return true;
}
return false;
diff --git a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj
index 98acdfc0..318b7ab5 100644
--- a/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj
+++ b/src/Snap.Hutao/Snap.Hutao/Snap.Hutao.csproj
@@ -530,4 +530,7 @@
MSBuild:Compile
+
+
+
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Control/BaseValueSlider.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Control/BaseValueSlider.xaml.cs
index 4f7e6567..15318fa6 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Control/BaseValueSlider.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Control/BaseValueSlider.xaml.cs
@@ -4,7 +4,7 @@
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Snap.Hutao.Control;
-using Snap.Hutao.Model.Binding.BaseValue;
+using Snap.Hutao.ViewModel.Wiki;
namespace Snap.Hutao.View.Control;
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml
index 6acd71c2..cdf04937 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml
@@ -13,9 +13,9 @@
xmlns:shcm="using:Snap.Hutao.Control.Markup"
xmlns:shcp="using:Snap.Hutao.Control.Panel"
xmlns:shct="using:Snap.Hutao.Control.Text"
- xmlns:shv="using:Snap.Hutao.ViewModel"
xmlns:shvc="using:Snap.Hutao.View.Control"
- d:DataContext="{d:DesignInstance Type=shv:WikiAvatarViewModel}"
+ xmlns:shvw="using:Snap.Hutao.ViewModel.Wiki"
+ d:DataContext="{d:DesignInstance Type=shvw:WikiAvatarViewModel}"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
mc:Ignorable="d">
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml.cs
index ab04e179..a3ad6ff2 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiAvatarPage.xaml.cs
@@ -2,7 +2,7 @@
// Licensed under the MIT license.
using Snap.Hutao.Control;
-using Snap.Hutao.ViewModel;
+using Snap.Hutao.ViewModel.Wiki;
namespace Snap.Hutao.View.Page;
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml
index 834af513..25f83b4f 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml
@@ -12,10 +12,10 @@
xmlns:shci="using:Snap.Hutao.Control.Image"
xmlns:shcm="using:Snap.Hutao.Control.Markup"
xmlns:shcp="using:Snap.Hutao.Control.Panel"
- xmlns:shv="using:Snap.Hutao.ViewModel"
xmlns:shvc="using:Snap.Hutao.View.Control"
+ xmlns:shvw="using:Snap.Hutao.ViewModel.Wiki"
xmlns:wsc="using:WinUICommunity.SettingsUI.Controls"
- d:DataContext="{d:DesignInstance Type=shv:WikiMonsterViewModel}"
+ d:DataContext="{d:DesignInstance Type=shvw:WikiMonsterViewModel}"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
mc:Ignorable="d">
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml.cs
index 7f04b2dd..2610c647 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiMonsterPage.xaml.cs
@@ -2,7 +2,7 @@
// Licensed under the MIT license.
using Snap.Hutao.Control;
-using Snap.Hutao.ViewModel;
+using Snap.Hutao.ViewModel.Wiki;
namespace Snap.Hutao.View.Page;
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml
index a06b11d7..8b62d175 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml
@@ -13,9 +13,9 @@
xmlns:shcm="using:Snap.Hutao.Control.Markup"
xmlns:shcp="using:Snap.Hutao.Control.Panel"
xmlns:shct="using:Snap.Hutao.Control.Text"
- xmlns:shv="using:Snap.Hutao.ViewModel"
xmlns:shvc="using:Snap.Hutao.View.Control"
- d:DataContext="{d:DesignInstance Type=shv:WikiWeaponViewModel}"
+ xmlns:shvw="using:Snap.Hutao.ViewModel.Wiki"
+ d:DataContext="{d:DesignInstance Type=shvw:WikiWeaponViewModel}"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
mc:Ignorable="d">
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml.cs
index f8829cfd..1f76afab 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/WikiWeaponPage.xaml.cs
@@ -2,7 +2,7 @@
// Licensed under the MIT license.
using Snap.Hutao.Control;
-using Snap.Hutao.ViewModel;
+using Snap.Hutao.ViewModel.Wiki;
namespace Snap.Hutao.View.Page;
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateEntryView.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateEntryView.cs
index 72644e00..1a9f411a 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateEntryView.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateEntryView.cs
@@ -1,7 +1,9 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
-namespace Snap.Hutao.Model.Binding.Cultivation;
+using Snap.Hutao.Model.Binding;
+
+namespace Snap.Hutao.ViewModel.Cultivation;
///
/// 养成物品
@@ -15,7 +17,7 @@ internal sealed class CultivateEntryView : Item
/// 实体入口
/// 对应物品
/// 物品列表
- public CultivateEntryView(Entity.CultivateEntry entry, Item item, List items)
+ public CultivateEntryView(Model.Entity.CultivateEntry entry, Item item, List items)
{
Id = entry.Id;
EntryId = entry.InnerId;
@@ -39,7 +41,7 @@ internal sealed class CultivateEntryView : Item
///
/// 实体
///
- public List Items { get; set; } = default!;
+ public List Items { get; set; } = default!;
///
/// 是否为今日的材料
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateItem.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateItemView.cs
similarity index 77%
rename from src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateItem.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateItemView.cs
index 37078db8..24ce847d 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateItem.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivateItemView.cs
@@ -2,22 +2,23 @@
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.ComponentModel;
+using Snap.Hutao.Model.Binding;
using Snap.Hutao.Model.Metadata.Item;
-namespace Snap.Hutao.Model.Binding.Cultivation;
+namespace Snap.Hutao.ViewModel.Cultivation;
///
/// 养成物品
///
[HighQuality]
-internal sealed class CultivateItem : ObservableObject, IEntityWithMetadata
+internal sealed class CultivateItemView : ObservableObject, IEntityWithMetadata
{
///
/// 养成物品
///
/// 实体
/// 元数据
- public CultivateItem(Entity.CultivateItem entity, Material inner)
+ public CultivateItemView(Model.Entity.CultivateItem entity, Material inner)
{
Entity = entity;
Inner = inner;
@@ -31,7 +32,7 @@ internal sealed class CultivateItem : ObservableObject, IEntityWithMetadata
/// 实体
///
- public Entity.CultivateItem Entity { get; }
+ public Model.Entity.CultivateItem Entity { get; }
///
/// 是否完成此项
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivationViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivationViewModel.cs
index 0fe833e7..8e9c543c 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivationViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/CultivationViewModel.cs
@@ -3,7 +3,6 @@
using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
-using Snap.Hutao.Model.Binding.Cultivation;
using Snap.Hutao.Model.Entity;
using Snap.Hutao.Model.Metadata.Item;
using Snap.Hutao.Service.Abstraction;
@@ -31,7 +30,7 @@ internal sealed class CultivationViewModel : Abstraction.ViewModel
private ObservableCollection? projects;
private CultivateProject? selectedProject;
- private List? inventoryItems;
+ private List? inventoryItems;
private ObservableCollection? cultivateEntries;
private ObservableCollection? statisticsItems;
@@ -39,8 +38,6 @@ internal sealed class CultivationViewModel : Abstraction.ViewModel
/// 构造一个新的养成视图模型
///
/// 服务提供器
- /// 元数据服务
- /// 日志器
public CultivationViewModel(IServiceProvider serviceProvider)
{
cultivationService = serviceProvider.GetRequiredService();
@@ -51,9 +48,9 @@ internal sealed class CultivationViewModel : Abstraction.ViewModel
AddProjectCommand = new AsyncRelayCommand(AddProjectAsync);
RemoveProjectCommand = new AsyncRelayCommand(RemoveProjectAsync);
RemoveEntryCommand = new AsyncRelayCommand(RemoveEntryAsync);
- SaveInventoryItemCommand = new RelayCommand(SaveInventoryItem);
+ SaveInventoryItemCommand = new RelayCommand(SaveInventoryItem);
NavigateToPageCommand = new RelayCommand(NavigateToPage);
- FinishStateCommand = new RelayCommand(UpdateFinishedState);
+ FinishStateCommand = new RelayCommand(UpdateFinishedState);
}
///
@@ -79,7 +76,7 @@ internal sealed class CultivationViewModel : Abstraction.ViewModel
///
/// 物品列表
///
- public List? InventoryItems { get => inventoryItems; set => SetProperty(ref inventoryItems, value); }
+ public List? InventoryItems { get => inventoryItems; set => SetProperty(ref inventoryItems, value); }
///
/// 养成列表
@@ -203,7 +200,7 @@ internal sealed class CultivationViewModel : Abstraction.ViewModel
}
}
- private void SaveInventoryItem(Model.Binding.Inventory.InventoryItem? inventoryItem)
+ private void SaveInventoryItem(InventoryItemView? inventoryItem)
{
if (inventoryItem != null)
{
@@ -212,7 +209,7 @@ internal sealed class CultivationViewModel : Abstraction.ViewModel
}
}
- private void UpdateFinishedState(Model.Binding.Cultivation.CultivateItem? item)
+ private void UpdateFinishedState(CultivateItemView? item)
{
if (item != null)
{
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/DaysOfWeek.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/DaysOfWeek.cs
index 58d4640a..4749aaf0 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/DaysOfWeek.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/DaysOfWeek.cs
@@ -1,7 +1,7 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
-namespace Snap.Hutao.Model.Binding.Cultivation;
+namespace Snap.Hutao.ViewModel.Cultivation;
///
/// 游戏内星期中的天
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Binding/Inventory/InventoryItem.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/InventoryItemView.cs
similarity index 76%
rename from src/Snap.Hutao/Snap.Hutao/Model/Binding/Inventory/InventoryItem.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/InventoryItemView.cs
index 2a570dfc..807f0e82 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Binding/Inventory/InventoryItem.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/InventoryItemView.cs
@@ -2,15 +2,16 @@
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.ComponentModel;
+using Snap.Hutao.Model.Binding;
using Snap.Hutao.Model.Metadata.Item;
-namespace Snap.Hutao.Model.Binding.Inventory;
+namespace Snap.Hutao.ViewModel.Cultivation;
///
/// 背包物品
///
[HighQuality]
-internal sealed class InventoryItem : ObservableObject, IEntityWithMetadata
+internal sealed class InventoryItemView : ObservableObject, IEntityWithMetadata
{
///
/// 创建一个新的背包物品
@@ -18,7 +19,7 @@ internal sealed class InventoryItem : ObservableObject, IEntityWithMetadata实体
/// 元数据
/// 保存命令
- public InventoryItem(Entity.InventoryItem entity, Material inner, ICommand saveCommand)
+ public InventoryItemView(Model.Entity.InventoryItem entity, Material inner, ICommand saveCommand)
{
Entity = entity;
Inner = inner;
@@ -28,7 +29,7 @@ internal sealed class InventoryItem : ObservableObject, IEntityWithMetadata
/// 实体
///
- public Entity.InventoryItem Entity { get; set; }
+ public Model.Entity.InventoryItem Entity { get; set; }
///
/// 元数据
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/StatisticsCultivateItem.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/StatisticsCultivateItem.cs
index cbfb324c..ea004849 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/StatisticsCultivateItem.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Cultivation/StatisticsCultivateItem.cs
@@ -3,7 +3,7 @@
using Snap.Hutao.Model.Metadata.Item;
-namespace Snap.Hutao.Model.Binding.Cultivation;
+namespace Snap.Hutao.ViewModel.Cultivation;
///
/// 仅用于统计总数的养成物品
@@ -16,7 +16,7 @@ internal sealed class StatisticsCultivateItem
///
/// 材料
/// 实体
- public StatisticsCultivateItem(Material inner, Entity.CultivateItem entity)
+ public StatisticsCultivateItem(Material inner, Model.Entity.CultivateItem entity)
{
Inner = inner;
Count = entity.Count;
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/Screenshot.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/Screenshot.cs
deleted file mode 100644
index 9c3594bd..00000000
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/Screenshot.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (c) DGP Studio. All rights reserved.
-// Licensed under the MIT license.
-
-using Snap.Hutao.Model.Binding;
-using Snap.Hutao.Service.Game;
-using System.IO;
-using System.Text;
-
-namespace Snap.Hutao.ViewModel.Game;
-
-///
-/// 截图
-///
-internal sealed class Screenshot : INameIcon
-{
- ///
- /// 构造一个新的截图
- ///
- /// 路径
- public Screenshot(string path)
- {
- Name = $"{new FileInfo(path).CreationTime}";
- Icon = path.ToUri();
- }
-
- ///
- public string Name { get; }
-
- ///
- public Uri Icon { get; }
-}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/ScreenshotViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/ScreenshotViewModel.cs
deleted file mode 100644
index dd5b1228..00000000
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Game/ScreenshotViewModel.cs
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (c) DGP Studio. All rights reserved.
-// Licensed under the MIT license.
-
-using Snap.Hutao.Service.Game;
-
-namespace Snap.Hutao.ViewModel.Game;
-
-///
-/// 截图视图模型
-///
-[Injection(InjectAs.Scoped)]
-internal sealed class ScreenshotViewModel : Abstraction.ViewModel
-{
- ///
- /// 构造一个新的截图视图模型
- ///
- /// 游戏服务
- public ScreenshotViewModel(IGameService gameService)
- {
-
- }
-
- ///
- protected override async Task OpenUIAsync()
- {
-
- }
-}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs
index c41b6039..1484b34e 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/SettingViewModel.cs
@@ -272,15 +272,16 @@ internal sealed class SettingViewModel : Abstraction.ViewModel
private async Task SetDataFolderAsync()
{
- IPickerFactory pickerFactory = serviceProvider.GetRequiredService();
- FolderPicker picker = pickerFactory.GetFolderPicker();
- (bool isOk, string folder) = await picker.TryPickSingleFolderAsync().ConfigureAwait(false);
+ (bool isOk, string folder) = await serviceProvider
+ .GetRequiredService()
+ .GetFolderPicker()
+ .TryPickSingleFolderAsync()
+ .ConfigureAwait(false);
- IInfoBarService infoBarService = serviceProvider.GetRequiredService();
if (isOk)
{
LocalSetting.Set(SettingKeys.DataFolderPath, folder);
- infoBarService.Success(SH.ViewModelSettingSetDataFolderSuccess);
+ serviceProvider.GetRequiredService().Success(SH.ViewModelSettingSetDataFolderSuccess);
}
}
@@ -292,8 +293,7 @@ internal sealed class SettingViewModel : Abstraction.ViewModel
private void CopyDeviceId()
{
- IInfoBarService infoBarService = serviceProvider.GetRequiredService();
Clipboard.SetText(DeviceId);
- infoBarService.Success(SH.ViewModelSettingCopyDeviceIdSuccess);
+ serviceProvider.GetRequiredService().Success(SH.ViewModelSettingCopyDeviceIdSuccess);
}
}
\ No newline at end of file
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Binding/BaseValue/BaseValueInfo.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/BaseValueInfo.cs
similarity index 96%
rename from src/Snap.Hutao/Snap.Hutao/Model/Binding/BaseValue/BaseValueInfo.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/BaseValueInfo.cs
index 525af597..f1b6704e 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Binding/BaseValue/BaseValueInfo.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/BaseValueInfo.cs
@@ -2,10 +2,11 @@
// Licensed under the MIT license.
using CommunityToolkit.Mvvm.ComponentModel;
+using Snap.Hutao.Model;
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Metadata;
-namespace Snap.Hutao.Model.Binding.BaseValue;
+namespace Snap.Hutao.ViewModel.Wiki;
///
/// 基础数值信息
@@ -101,7 +102,7 @@ internal sealed class BaseValueInfo : ObservableObject
value += addValue;
}
- values.Add(Metadata.Converter.PropertyDescriptor.FormatNameValue(propValue.Property, value));
+ values.Add(Model.Metadata.Converter.PropertyDescriptor.FormatNameValue(propValue.Property, value));
}
Values = values;
diff --git a/src/Snap.Hutao/Snap.Hutao/Model/Binding/BaseValue/PropertyCurveValue.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/PropertyCurveValue.cs
similarity index 95%
rename from src/Snap.Hutao/Snap.Hutao/Model/Binding/BaseValue/PropertyCurveValue.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/PropertyCurveValue.cs
index 448f95d1..99088b81 100644
--- a/src/Snap.Hutao/Snap.Hutao/Model/Binding/BaseValue/PropertyCurveValue.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/PropertyCurveValue.cs
@@ -3,7 +3,7 @@
using Snap.Hutao.Model.Intrinsic;
-namespace Snap.Hutao.Model.Binding.BaseValue;
+namespace Snap.Hutao.ViewModel.Wiki;
///
/// 战斗属性与初始值
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/WikiAvatarViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiAvatarViewModel.cs
similarity index 99%
rename from src/Snap.Hutao/Snap.Hutao/ViewModel/WikiAvatarViewModel.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiAvatarViewModel.cs
index ce5548bc..73278a64 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/WikiAvatarViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiAvatarViewModel.cs
@@ -5,7 +5,6 @@ using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.WinUI.UI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Primitives;
-using Snap.Hutao.Model.Binding.BaseValue;
using Snap.Hutao.Model.Binding.Hutao;
using Snap.Hutao.Model.Entity.Primitive;
using Snap.Hutao.Model.Intrinsic;
@@ -30,7 +29,7 @@ using CalcConsumption = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.Consumptio
using CalcItem = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.Item;
using CalcItemHelper = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.ItemHelper;
-namespace Snap.Hutao.ViewModel;
+namespace Snap.Hutao.ViewModel.Wiki;
///
/// 角色资料视图模型
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/WikiMonsterViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiMonsterViewModel.cs
similarity index 97%
rename from src/Snap.Hutao/Snap.Hutao/ViewModel/WikiMonsterViewModel.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiMonsterViewModel.cs
index 0a52fccc..4095e9f2 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/WikiMonsterViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiMonsterViewModel.cs
@@ -3,7 +3,6 @@
using CommunityToolkit.WinUI.UI;
using Microsoft.Extensions.DependencyInjection;
-using Snap.Hutao.Model.Binding.BaseValue;
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Metadata.Item;
using Snap.Hutao.Model.Metadata.Monster;
@@ -11,7 +10,7 @@ using Snap.Hutao.Model.Primitive;
using Snap.Hutao.Service.Metadata;
using System.Collections.Immutable;
-namespace Snap.Hutao.ViewModel;
+namespace Snap.Hutao.ViewModel.Wiki;
///
/// 怪物资料视图模型
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/WikiWeaponViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiWeaponViewModel.cs
similarity index 99%
rename from src/Snap.Hutao/Snap.Hutao/ViewModel/WikiWeaponViewModel.cs
rename to src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiWeaponViewModel.cs
index 21a3a9af..4b78f7ec 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/WikiWeaponViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Wiki/WikiWeaponViewModel.cs
@@ -5,7 +5,6 @@ using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.WinUI.UI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Primitives;
-using Snap.Hutao.Model.Binding.BaseValue;
using Snap.Hutao.Model.Entity.Primitive;
using Snap.Hutao.Model.Intrinsic;
using Snap.Hutao.Model.Intrinsic.Immutable;
@@ -26,7 +25,7 @@ using CalcAvatarPromotionDelta = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.A
using CalcClient = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.CalculateClient;
using CalcConsumption = Snap.Hutao.Web.Hoyolab.Takumi.Event.Calculate.Consumption;
-namespace Snap.Hutao.ViewModel;
+namespace Snap.Hutao.ViewModel.Wiki;
///
/// 武器资料视图模型