mirror of
https://jihulab.com/DGP-Studio/Snap.Hutao.git
synced 2025-11-19 21:02:53 +08:00
locale start
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -120,6 +120,9 @@
|
||||
<data name="AppDevNameAndVersion" xml:space="preserve">
|
||||
<value>胡桃 Dev {0}</value>
|
||||
</data>
|
||||
<data name="AppName" xml:space="preserve">
|
||||
<value>胡桃</value>
|
||||
</data>
|
||||
<data name="AppNameAndVersion" xml:space="preserve">
|
||||
<value>胡桃 {0}</value>
|
||||
</data>
|
||||
@@ -174,6 +177,15 @@
|
||||
<data name="CoreWebView2HelperVersionUndetected" xml:space="preserve">
|
||||
<value>未检测到 WebView2 运行时</value>
|
||||
</data>
|
||||
<data name="FilePickerExportCommit" xml:space="preserve">
|
||||
<value>导出</value>
|
||||
</data>
|
||||
<data name="FilePickerImportCommit" xml:space="preserve">
|
||||
<value>导入</value>
|
||||
</data>
|
||||
<data name="MustSelectUserAndUid" xml:space="preserve">
|
||||
<value>必须先选择一个用户与角色</value>
|
||||
</data>
|
||||
<data name="ServiceAchievementUserdataCorruptedInnerIdNotUnique" xml:space="preserve">
|
||||
<value>单个成就存档内发现多个相同的成就 Id</value>
|
||||
</data>
|
||||
@@ -318,6 +330,12 @@
|
||||
<data name="ServiceUserProcessCookieRequestUserInfoFailed" xml:space="preserve">
|
||||
<value>输入的 Cookie 无法获取用户信息</value>
|
||||
</data>
|
||||
<data name="ViewAchievementHeader" xml:space="preserve">
|
||||
<value>成就管理</value>
|
||||
</data>
|
||||
<data name="ViewAnnouncementHeader" xml:space="preserve">
|
||||
<value>主页</value>
|
||||
</data>
|
||||
<data name="ViewAvatarPropertyHeader" xml:space="preserve">
|
||||
<value>我的角色</value>
|
||||
</data>
|
||||
@@ -348,6 +366,15 @@
|
||||
<data name="ViewControlStatisticsCardUpText" xml:space="preserve">
|
||||
<value>UP</value>
|
||||
</data>
|
||||
<data name="ViewCultivationHeader" xml:space="preserve">
|
||||
<value>养成计划</value>
|
||||
</data>
|
||||
<data name="ViewDailyNoteHeader" xml:space="preserve">
|
||||
<value>实时便笺</value>
|
||||
</data>
|
||||
<data name="ViewDataHeader" xml:space="preserve">
|
||||
<value>数据</value>
|
||||
</data>
|
||||
<data name="ViewDialogAchievementArchiveCreateInputPlaceholder" xml:space="preserve">
|
||||
<value>在此处输入</value>
|
||||
</data>
|
||||
@@ -462,6 +489,201 @@
|
||||
<data name="ViewDialogUserInputPlaceholder" xml:space="preserve">
|
||||
<value>在此处输入包含 Stoken 的 Cookie</value>
|
||||
</data>
|
||||
<data name="ViewGachaLogHeader" xml:space="preserve">
|
||||
<value>祈愿记录</value>
|
||||
</data>
|
||||
<data name="ViewHutaoDatabaseHeader" xml:space="preserve">
|
||||
<value>深渊统计</value>
|
||||
</data>
|
||||
<data name="ViewLaunchGameHeader" xml:space="preserve">
|
||||
<value>启动游戏</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementArchiveAdded" xml:space="preserve">
|
||||
<value>存档 [{0}] 添加成功</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementArchiveAlreadyExists" xml:space="preserve">
|
||||
<value>不能添加名称重复的存档 [{0}]</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementArchiveInvalidName" xml:space="preserve">
|
||||
<value>不能添加名称无效的存档</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementExportFileType" xml:space="preserve">
|
||||
<value>UIAF 文件</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementImportProgress" xml:space="preserve">
|
||||
<value>导入成就中</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementImportWarningMessage" xml:space="preserve">
|
||||
<value>数据的 UIAF 版本过低,无法导入</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementRemoveArchiveContent" xml:space="preserve">
|
||||
<value>该操作是不可逆的,该存档和其内的所有成就状态会丢失。</value>
|
||||
</data>
|
||||
<data name="ViewModelAchievementRemoveArchiveTitle" xml:space="preserve">
|
||||
<value>确定要删除存档 {0} 吗?</value>
|
||||
</data>
|
||||
<data name="ViewModelAvatarPropertyCalculateWeaponNull" xml:space="preserve">
|
||||
<value>当前角色无法计算,请同步信息后再试</value>
|
||||
</data>
|
||||
<data name="ViewModelAvatarPropertyEnkaApiUnavailable" xml:space="preserve">
|
||||
<value>角色信息服务 [Enak API] 当前不可用</value>
|
||||
</data>
|
||||
<data name="ViewModelAvatarPropertyExportImageSuccess" xml:space="preserve">
|
||||
<value>已导出到剪贴板</value>
|
||||
</data>
|
||||
<data name="ViewModelAvatarPropertyFetch" xml:space="preserve">
|
||||
<value>获取数据中</value>
|
||||
</data>
|
||||
<data name="ViewModelAvatarPropertyOpenClipboardFail" xml:space="preserve">
|
||||
<value>打开剪贴板失败</value>
|
||||
</data>
|
||||
<data name="ViewModelAvatarPropertyShowcaseNotOpen" xml:space="preserve">
|
||||
<value>角色橱窗尚未开启,请前往游戏操作后重试</value>
|
||||
</data>
|
||||
<data name="ViewModelCultivationEntryAddSuccess" xml:space="preserve">
|
||||
<value>已成功添加至当前养成计划</value>
|
||||
</data>
|
||||
<data name="ViewModelCultivationEntryAddWarning" xml:space="preserve">
|
||||
<value>请先前往养成计划页面创建计划并选中</value>
|
||||
</data>
|
||||
<data name="ViewModelCultivationProjectAdded" xml:space="preserve">
|
||||
<value>添加成功</value>
|
||||
</data>
|
||||
<data name="ViewModelCultivationProjectAlreadyExists" xml:space="preserve">
|
||||
<value>不能添加名称重复的计划</value>
|
||||
</data>
|
||||
<data name="ViewModelCultivationProjectInvalidName" xml:space="preserve">
|
||||
<value>不能添加名称无效的计划</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRefreshTime30" xml:space="preserve">
|
||||
<value>30 分钟 | 3.75 树脂</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRefreshTime4" xml:space="preserve">
|
||||
<value>4 分钟 | 0.5 树脂</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRefreshTime40" xml:space="preserve">
|
||||
<value>40 分钟 | 5 树脂</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRefreshTime60" xml:space="preserve">
|
||||
<value>60 分钟 | 7.5 树脂</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRefreshTime8" xml:space="preserve">
|
||||
<value>8 分钟 | 1 树脂</value>
|
||||
</data>
|
||||
<data name="ViewModelDailyNoteRegisterTaskFail" xml:space="preserve">
|
||||
<value>注册计划任务失败,请使用管理员模式重试</value>
|
||||
</data>
|
||||
<data name="ViewModelExperimentalDeleteTaskSuccess" xml:space="preserve">
|
||||
<value>清除任务计划成功</value>
|
||||
</data>
|
||||
<data name="ViewModelExperimentalDeleteTaskWarning" xml:space="preserve">
|
||||
<value>清除任务计划失败</value>
|
||||
</data>
|
||||
<data name="ViewModelExperimentalDeleteUserSuccess" xml:space="preserve">
|
||||
<value>清除用户数据成功,请立即重启胡桃</value>
|
||||
</data>
|
||||
<data name="ViewModelExportSuccessMessage" xml:space="preserve">
|
||||
<value>成功保存到指定位置</value>
|
||||
</data>
|
||||
<data name="ViewModelExportSuccessTitle" xml:space="preserve">
|
||||
<value>导出成功</value>
|
||||
</data>
|
||||
<data name="ViewModelExportWarningMessage" xml:space="preserve">
|
||||
<value>写入文件时遇到问题</value>
|
||||
</data>
|
||||
<data name="ViewModelExportWarningTitle" xml:space="preserve">
|
||||
<value>导出失败</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogExportFileType" xml:space="preserve">
|
||||
<value>UIGF Json 文件</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogImportComplete" xml:space="preserve">
|
||||
<value>导入完成</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogImportProgress" xml:space="preserve">
|
||||
<value>导入祈愿记录中</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogImportWarningMessage" xml:space="preserve">
|
||||
<value>数据的 UIGF 版本过低,无法导入</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogImportWarningTitle" xml:space="preserve">
|
||||
<value>导入失败</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRefreshFail" xml:space="preserve">
|
||||
<value>获取祈愿记录失败</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRefreshOperationCancel" xml:space="preserve">
|
||||
<value>祈愿记录刷新操作被异常取消</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRemoveArchiveDescription" xml:space="preserve">
|
||||
<value>该操作是不可逆的,该存档和其内的所有祈愿数据会丢失</value>
|
||||
</data>
|
||||
<data name="ViewModelGachaLogRemoveArchiveTitle" xml:space="preserve">
|
||||
<value>确定要删除存档 {0} 吗?</value>
|
||||
</data>
|
||||
<data name="ViewModelImportWarningMessage" xml:space="preserve">
|
||||
<value>数据格式不正确</value>
|
||||
</data>
|
||||
<data name="ViewModelImportWarningTitle" xml:space="preserve">
|
||||
<value>导入失败</value>
|
||||
</data>
|
||||
<data name="ViewModelLaunchGameEnsureGameResourceFail" xml:space="preserve">
|
||||
<value>切换服务器失败</value>
|
||||
</data>
|
||||
<data name="ViewModelLaunchGameMultiChannelReadFail" xml:space="preserve">
|
||||
<value>无法读取游戏配置文件</value>
|
||||
</data>
|
||||
<data name="ViewModelLaunchGamePathInvalid" xml:space="preserve">
|
||||
<value>游戏路径不正确,前往设置更改游戏路径</value>
|
||||
</data>
|
||||
<data name="ViewModelLaunchGameSwitchGameAccountFail" xml:space="preserve">
|
||||
<value>切换账号失败</value>
|
||||
</data>
|
||||
<data name="ViewModelSettingClearWebCacheFail" xml:space="preserve">
|
||||
<value>清除失败,文件目录权限不足,请使用管理员模式重试</value>
|
||||
</data>
|
||||
<data name="ViewModelSettingClearWebCachePathInvalid" xml:space="preserve">
|
||||
<value>清除失败,找不到目录:{0}</value>
|
||||
</data>
|
||||
<data name="ViewModelSettingClearWebCacheSuccess" xml:space="preserve">
|
||||
<value>清除完成</value>
|
||||
</data>
|
||||
<data name="ViewModelUserAdded" xml:space="preserve">
|
||||
<value>用户 [{0}] 添加成功</value>
|
||||
</data>
|
||||
<data name="ViewModelUserCookieCopied" xml:space="preserve">
|
||||
<value>用户 [{0}] 的 Cookie 复制成功</value>
|
||||
</data>
|
||||
<data name="ViewModelUserIncomplete" xml:space="preserve">
|
||||
<value>此 Cookie 不完整,操作失败</value>
|
||||
</data>
|
||||
<data name="ViewModelUserInvalid" xml:space="preserve">
|
||||
<value>此 Cookie 无效,操作失败</value>
|
||||
</data>
|
||||
<data name="ViewModelUserRemoved" xml:space="preserve">
|
||||
<value>用户 [{0}] 成功移除</value>
|
||||
</data>
|
||||
<data name="ViewModelUserUpdated" xml:space="preserve">
|
||||
<value>用户 [{0}] 的 Cookie 更新成功</value>
|
||||
</data>
|
||||
<data name="ViewModelViewDisposedOperationCancel" xml:space="preserve">
|
||||
<value>页面资源已经被释放,操作取消</value>
|
||||
</data>
|
||||
<data name="ViewModelWelcomeDownloadCompleteMessage" xml:space="preserve">
|
||||
<value>现在可以开始使用胡桃了</value>
|
||||
</data>
|
||||
<data name="ViewModelWelcomeDownloadCompleteTitle" xml:space="preserve">
|
||||
<value>下载完成</value>
|
||||
</data>
|
||||
<data name="ViewModelWelcomeDownloadSummaryComplete" xml:space="preserve">
|
||||
<value>完成</value>
|
||||
</data>
|
||||
<data name="ViewModelWelcomeDownloadSummaryDefault" xml:space="preserve">
|
||||
<value>等待中</value>
|
||||
</data>
|
||||
<data name="ViewModelWelcomeDownloadSummaryException" xml:space="preserve">
|
||||
<value>文件下载异常</value>
|
||||
</data>
|
||||
<data name="ViewPageAchievementAddArchive" xml:space="preserve">
|
||||
<value>创建新存档</value>
|
||||
</data>
|
||||
@@ -625,7 +847,7 @@
|
||||
<value>免打扰模式</value>
|
||||
</data>
|
||||
<data name="ViewPageDailyNoteVerify" xml:space="preserve">
|
||||
<value>验证当前账号角色</value>
|
||||
<value>验证当前用户与角色</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogAggressiveRefresh" xml:space="preserve">
|
||||
<value>全量刷新</value>
|
||||
@@ -664,7 +886,7 @@
|
||||
<value>Stoken 刷新</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByStokenDescription" xml:space="preserve">
|
||||
<value>使用当前账号的 Cookie 信息刷新祈愿记录</value>
|
||||
<value>使用当前用户的 Cookie 信息刷新祈愿记录</value>
|
||||
</data>
|
||||
<data name="ViewPageGachaLogRefreshByWebCache" xml:space="preserve">
|
||||
<value>网页缓存刷新</value>
|
||||
@@ -699,6 +921,33 @@
|
||||
<data name="ViewPageHutaoDatabaseOverviewAvatarUsageRank" xml:space="preserve">
|
||||
<value>角色使用</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellation0" xml:space="preserve">
|
||||
<value>0 命</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellation1" xml:space="preserve">
|
||||
<value>1 命</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellation2" xml:space="preserve">
|
||||
<value>2 命</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellation3" xml:space="preserve">
|
||||
<value>3 命</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellation4" xml:space="preserve">
|
||||
<value>4 命</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellation5" xml:space="preserve">
|
||||
<value>5 命</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellation6" xml:space="preserve">
|
||||
<value>6 命</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellationAvatar" xml:space="preserve">
|
||||
<value>角色</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewConstellationHolding" xml:space="preserve">
|
||||
<value>持有</value>
|
||||
</data>
|
||||
<data name="ViewPageHutaoDatabaseOverviewDataCollect" xml:space="preserve">
|
||||
<value>数据收集统计</value>
|
||||
</data>
|
||||
@@ -729,10 +978,322 @@
|
||||
<data name="ViewPageHutaoDatabaseOverviewTeamAppearance" xml:space="preserve">
|
||||
<value>队伍出场</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAction" xml:space="preserve">
|
||||
<value>启动游戏</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAdvanceHeader" xml:space="preserve">
|
||||
<value>高级功能</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAdvanceHint" xml:space="preserve">
|
||||
<value>下面的功能十分危险,如果您不愿承担因此可能带来的后果,请勿启用!</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceBorderlessDescription" xml:space="preserve">
|
||||
<value>将窗口创建为弹出窗口,不带框架</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceBorderlessHeader" xml:space="preserve">
|
||||
<value>无边框</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceExclusiveDescription" xml:space="preserve">
|
||||
<value>与游戏内浏览器不兼容,切屏等操作也能使游戏闪退</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceExclusiveHeader" xml:space="preserve">
|
||||
<value>独占全屏</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceFullscreenDescription" xml:space="preserve">
|
||||
<value>覆盖默认的全屏状态</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceFullscreenHeader" xml:space="preserve">
|
||||
<value>全屏</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceHeader" xml:space="preserve">
|
||||
<value>外观</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceScreenHeightDescription" xml:space="preserve">
|
||||
<value>覆盖默认屏幕高度</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceScreenHeightHeader" xml:space="preserve">
|
||||
<value>高度</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceScreenWidthDescription" xml:space="preserve">
|
||||
<value>覆盖默认屏幕宽度</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameAppearanceScreenWidthHeader" xml:space="preserve">
|
||||
<value>宽度</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameCommonHeader" xml:space="preserve">
|
||||
<value>常规</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameConfigurationSaveHint" xml:space="preserve">
|
||||
<value>所有选项仅会在启动游戏成功后保存</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameElevationHint" xml:space="preserve">
|
||||
<value>某些选项处于禁用状态,它们只在管理员模式下生效!</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSetFpsDescription" xml:space="preserve">
|
||||
<value>在游戏时可以随时调整</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSetFpsHeader" xml:space="preserve">
|
||||
<value>设置当前帧率</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchAccountAttachUidNull" xml:space="preserve">
|
||||
<value>该账号尚未绑定 UID</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchAccountAttachUidToolTip" xml:space="preserve">
|
||||
<value>绑定当前用户的角色</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchAccountDescription" xml:space="preserve">
|
||||
<value>在游戏内切换账号,网络环境发生变化后需要重新手动检测</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchAccountDetectAction" xml:space="preserve">
|
||||
<value>检测</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchAccountHeader" xml:space="preserve">
|
||||
<value>账号</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchAccountRemoveToolTip" xml:space="preserve">
|
||||
<value>删除</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchAccountRenameToolTip" xml:space="preserve">
|
||||
<value>重命名</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchSchemeDescription" xml:space="preserve">
|
||||
<value>切换游戏服务器(国服/渠道服/国际服)</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchSchemeHeader" xml:space="preserve">
|
||||
<value>服务器</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameSwitchSchemeHint" xml:space="preserve">
|
||||
<value>切换国际服功能会在游戏截图文件夹内创建缓存文件夹</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameUnlockFpsDescription" xml:space="preserve">
|
||||
<value>请在游戏内关闭垂直同步选项,需要高性能的显卡以支持更高的帧率</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameUnlockFpsHeader" xml:space="preserve">
|
||||
<value>解锁帧率限制</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameUnlockFpsOff" xml:space="preserve">
|
||||
<value>禁用</value>
|
||||
</data>
|
||||
<data name="ViewPageLaunchGameUnlockFpsOn" xml:space="preserve">
|
||||
<value>启用</value>
|
||||
</data>
|
||||
<data name="ViewPageLoginMihoyoUserLoggedInAction" xml:space="preserve">
|
||||
<value>我已登录</value>
|
||||
</data>
|
||||
<data name="ViewPageLoginMihoyoUserTitle" xml:space="preserve">
|
||||
<value>在下方登录米哈游通行证</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingAboutHeader" xml:space="preserve">
|
||||
<value>关于 胡桃</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingApperanceHeader" xml:space="preserve">
|
||||
<value>外观</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingBackdropMaterialDescription" xml:space="preserve">
|
||||
<value>更改窗体的背景材质</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingBackdropMaterialHeader" xml:space="preserve">
|
||||
<value>背景材质</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingCacheFolderDescription" xml:space="preserve">
|
||||
<value>图片缓存 在此处存放</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingCacheFolderHeader" xml:space="preserve">
|
||||
<value>打开 缓存 文件夹</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDangerousAction" xml:space="preserve">
|
||||
<value>执行</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDangerousHeader" xml:space="preserve">
|
||||
<value>危险功能</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDangerousHint" xml:space="preserve">
|
||||
<value>除非开发人员明确要求你这么做,否则不应尝试执行下方的操作!</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDataFolderDescription" xml:space="preserve">
|
||||
<value>用户数据/元数据 在此处存放</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDataFolderHeader" xml:space="preserve">
|
||||
<value>打开 数据 文件夹</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteCacheAction" xml:space="preserve">
|
||||
<value>删除</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteCacheDescription" xml:space="preserve">
|
||||
<value>若祈愿记录缓存刷新频繁提示验证密钥过期,可以尝试此操作</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteCacheHeader" xml:space="preserve">
|
||||
<value>删除游戏内网页缓存</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteTaskDescription" xml:space="preserve">
|
||||
<value>删除注册的计划任务,卸载前务必点击此项</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteTaskHeader" xml:space="preserve">
|
||||
<value>删除所有计划任务</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteUserDescription" xml:space="preserve">
|
||||
<value>直接删除用户表的所有记录,用于修复特定的账号冲突问题</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeleteUserHeader" xml:space="preserve">
|
||||
<value>删除所有用户</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingDeviceIdHeader" xml:space="preserve">
|
||||
<value>设备 ID</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingEmptyHistoryVisibleDescription" xml:space="preserve">
|
||||
<value>在祈愿记录页面显示或隐藏无记录的历史祈愿活动</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingEmptyHistoryVisibleHeader" xml:space="preserve">
|
||||
<value>无记录的历史祈愿活动</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingEmptyHistoryVisibleOff" xml:space="preserve">
|
||||
<value>隐藏</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingEmptyHistoryVisibleOn" xml:space="preserve">
|
||||
<value>显示</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingFeedbackDescription" xml:space="preserve">
|
||||
<value>Github 上反馈的问题会优先处理</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingFeedbackHeader" xml:space="preserve">
|
||||
<value>反馈</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingFeedbackNavigate" xml:space="preserve">
|
||||
<value>前往反馈</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGachaLogHeader" xml:space="preserve">
|
||||
<value>祈愿记录</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingGameHeader" xml:space="preserve">
|
||||
<value>游戏</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingSetGamePathAction" xml:space="preserve">
|
||||
<value>设置路径</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingSetGamePathHeader" xml:space="preserve">
|
||||
<value>游戏路径</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingSetGamePathHint" xml:space="preserve">
|
||||
<value>设置游戏路径时,请选择游戏本体(YuanShen.exe 或 GenshinImpact.exe)而不是启动器(launcher.exe)</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingStorageHeader" xml:space="preserve">
|
||||
<value>存储空间</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingStorageOpenAction" xml:space="preserve">
|
||||
<value>打开</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingUpdateCheckAction" xml:space="preserve">
|
||||
<value>前往商店</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingUpdateCheckDescription" xml:space="preserve">
|
||||
<value>前往微软商店查看</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingUpdateCheckHeader" xml:space="preserve">
|
||||
<value>检查更新</value>
|
||||
</data>
|
||||
<data name="ViewPageSettingWebview2Header" xml:space="preserve">
|
||||
<value>Webview2 运行时</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssBattleHeader" xml:space="preserve">
|
||||
<value>战斗数据</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssBattleTimes" xml:space="preserve">
|
||||
<value>战斗次数</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssDamage" xml:space="preserve">
|
||||
<value>最强一击</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssDefaultDescription" xml:space="preserve">
|
||||
<value>尚未获取任何挑战记录</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssDefeat" xml:space="preserve">
|
||||
<value>最多击破</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssDetail" xml:space="preserve">
|
||||
<value>详细数据</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssEnergySkill" xml:space="preserve">
|
||||
<value>元素爆发</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssHeader" xml:space="preserve">
|
||||
<value>深渊记录</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssMaxFloor" xml:space="preserve">
|
||||
<value>最深抵达</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssNormalSkill" xml:space="preserve">
|
||||
<value>元素战技</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssRefresh" xml:space="preserve">
|
||||
<value>刷新数据</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssRefreshAction" xml:space="preserve">
|
||||
<value>刷新</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssRefreshDescription" xml:space="preserve">
|
||||
<value>同步米游社的深渊挑战记录</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssReveal" xml:space="preserve">
|
||||
<value>出战次数</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssStatistics" xml:space="preserve">
|
||||
<value>统计数据</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssTakeDamage" xml:space="preserve">
|
||||
<value>最多承伤</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssTotalStar" xml:space="preserve">
|
||||
<value>获得渊星</value>
|
||||
</data>
|
||||
<data name="ViewSpiralAbyssUploadRecord" xml:space="preserve">
|
||||
<value>上传数据</value>
|
||||
</data>
|
||||
<data name="ViewToolHeader" xml:space="preserve">
|
||||
<value>工具</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperation" xml:space="preserve">
|
||||
<value>Cookie 操作</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationLoginMihoyoUserAction" xml:space="preserve">
|
||||
<value>登录米哈游通行证</value>
|
||||
</data>
|
||||
<data name="ViewUserCookieOperationManualInputAction" xml:space="preserve">
|
||||
<value>手动输入</value>
|
||||
</data>
|
||||
<data name="ViewUserCopyCookieAction" xml:space="preserve">
|
||||
<value>复制 Cookie</value>
|
||||
</data>
|
||||
<data name="ViewUserDefaultDescription" xml:space="preserve">
|
||||
<value>请先登录</value>
|
||||
</data>
|
||||
<data name="ViewUserRemoveAction" xml:space="preserve">
|
||||
<value>移除用户</value>
|
||||
</data>
|
||||
<data name="ViewUserRole" xml:space="preserve">
|
||||
<value>角色</value>
|
||||
</data>
|
||||
<data name="ViewUserUser" xml:space="preserve">
|
||||
<value>用户</value>
|
||||
</data>
|
||||
<data name="ViewWelcomeBase" xml:space="preserve">
|
||||
<value>我们将为你下载最基本的图像资源</value>
|
||||
</data>
|
||||
<data name="ViewWelcomeBody" xml:space="preserve">
|
||||
<value>你可以继续使用电脑,丝毫不受影响</value>
|
||||
</data>
|
||||
<data name="ViewWelcomeSubtitle" xml:space="preserve">
|
||||
<value>请勿关闭应用程序</value>
|
||||
</data>
|
||||
<data name="ViewWelcomeTitle" xml:space="preserve">
|
||||
<value>欢迎使用 胡桃</value>
|
||||
</data>
|
||||
<data name="ViewWikiAvatarHeader" xml:space="preserve">
|
||||
<value>角色资料</value>
|
||||
</data>
|
||||
<data name="ViewWikiWeaponHeader" xml:space="preserve">
|
||||
<value>武器资料</value>
|
||||
</data>
|
||||
<data name="WebResponseFormat" xml:space="preserve">
|
||||
<value>状态:{0} | 信息:{1}</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -29,7 +29,7 @@ internal partial class RegistryLauncherLocator : IGameLocator
|
||||
else
|
||||
{
|
||||
string? path = Path.GetDirectoryName(result.Value);
|
||||
string configPath = Path.Combine(path!, "config.ini");
|
||||
string configPath = Path.Combine(path!, GameConstants.ConfigFileName);
|
||||
string? escapedPath = null;
|
||||
using (FileStream stream = File.OpenRead(configPath))
|
||||
{
|
||||
@@ -39,7 +39,7 @@ internal partial class RegistryLauncherLocator : IGameLocator
|
||||
|
||||
if (escapedPath != null)
|
||||
{
|
||||
string gamePath = Path.Combine(Unescape(escapedPath), "YuanShen.exe");
|
||||
string gamePath = Path.Combine(Unescape(escapedPath), GameConstants.YuanShenFileName);
|
||||
return Task.FromResult<ValueResult<bool, string>>(new(true, gamePath));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,63 +23,61 @@
|
||||
<NavigationView.MenuItems>
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:AnnouncementPage"
|
||||
Content="活动公告"
|
||||
Content="{shcm:ResourceString ViewAnnouncementHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BtnIcon_ActivityEntry.png}"/>
|
||||
|
||||
<NavigationViewItemHeader Content="工具"/>
|
||||
<NavigationViewItemHeader Content="{shcm:ResourceString Name=ViewToolHeader}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:LaunchGamePage"
|
||||
Content="启动游戏"
|
||||
Content="{shcm:ResourceString Name=ViewLaunchGameHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_GuideIcon_PlayMethod.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:GachaLogPage"
|
||||
Content="祈愿记录"
|
||||
Content="{shcm:ResourceString Name=ViewGachaLogHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BtnIcon_Gacha.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:AchievementPage"
|
||||
Content="成就管理"
|
||||
Content="{shcm:ResourceString Name=ViewAchievementHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_Icon_Achievement.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:DailyNotePage"
|
||||
Content="实时便笺"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_ItemIcon_210.png,
|
||||
ShowAsMonochrome=False}"/>
|
||||
Content="{shcm:ResourceString Name=ViewDailyNoteHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_ItemIcon_210.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:AvatarPropertyPage"
|
||||
Content="我的角色"
|
||||
Content="{shcm:ResourceString Name=ViewAvatarPropertyHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_Icon_BoostUp.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:SpiralAbyssRecordPage"
|
||||
Content="深渊记录"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_MarkTower_Tower.png,
|
||||
ShowAsMonochrome=False}"/>
|
||||
Content="{shcm:ResourceString Name=ViewSpiralAbyssHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_MarkTower_Tower.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:CultivationPage"
|
||||
Content="养成计划"
|
||||
Content="{shcm:ResourceString Name=ViewCultivationHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_HomeWorldTabIcon_2_Team.png}"/>
|
||||
|
||||
<NavigationViewItemHeader Content="数据"/>
|
||||
<NavigationViewItemHeader Content="{shcm:ResourceString Name=ViewDataHeader}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:HutaoDatabasePage"
|
||||
Content="深渊统计"
|
||||
Content="{shcm:ResourceString Name=ViewHutaoDatabaseHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_ChapterIcon_Hutao.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:WikiAvatarPage"
|
||||
Content="角色资料"
|
||||
Content="{shcm:ResourceString Name=ViewWikiAvatarHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BagTabIcon_Avatar.png}"/>
|
||||
|
||||
<NavigationViewItem
|
||||
shvh:NavHelper.NavigateTo="shvp:WikiWeaponPage"
|
||||
Content="武器资料"
|
||||
Content="{shcm:ResourceString Name=ViewWikiWeaponHeader}"
|
||||
Icon="{shcm:BitmapIcon Source=ms-appx:///Resource/Icon/UI_BagTabIcon_Weapon.png}"/>
|
||||
</NavigationView.MenuItems>
|
||||
|
||||
|
||||
@@ -217,55 +217,55 @@
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="角色"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellationAvatar}"/>
|
||||
<TextBlock
|
||||
Grid.Column="1"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="持有"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellationHolding}"/>
|
||||
<TextBlock
|
||||
Grid.Column="2"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="0 命"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation0}"/>
|
||||
<TextBlock
|
||||
Grid.Column="3"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="1 命"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation1}"/>
|
||||
<TextBlock
|
||||
Grid.Column="4"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="2 命"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation2}"/>
|
||||
<TextBlock
|
||||
Grid.Column="5"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="3 命"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation3}"/>
|
||||
<TextBlock
|
||||
Grid.Column="6"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="4 命"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation4}"/>
|
||||
<TextBlock
|
||||
Grid.Column="7"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="5 命"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation5}"/>
|
||||
<TextBlock
|
||||
Grid.Column="8"
|
||||
Margin="6"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="6 命"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageHutaoDatabaseOverviewConstellation6}"/>
|
||||
</Grid>
|
||||
<ScrollViewer Grid.Row="1">
|
||||
<ItemsControl
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
xmlns:mxim="using:Microsoft.Xaml.Interactions.Media"
|
||||
xmlns:shc="using:Snap.Hutao.Control"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shv="using:Snap.Hutao.ViewModel"
|
||||
xmlns:wsc="using:WinUICommunity.SettingsUI.Controls"
|
||||
d:DataContext="{d:DesignInstance shv:LaunchGameViewModel}"
|
||||
@@ -50,23 +51,23 @@
|
||||
<InfoBar
|
||||
IsClosable="False"
|
||||
IsOpen="True"
|
||||
Message="所有选项仅会在启动游戏成功后保存"
|
||||
Message="{shcm:ResourceString Name=ViewPageLaunchGameConfigurationSaveHint}"
|
||||
Severity="Informational"/>
|
||||
<InfoBar
|
||||
Margin="0,2,0,0"
|
||||
IsClosable="False"
|
||||
IsOpen="{Binding IsElevated, Converter={StaticResource BoolNegationConverter}}"
|
||||
Message="某些选项处于禁用状态,它们只在管理员模式下生效!"
|
||||
Message="{shcm:ResourceString Name=ViewPageLaunchGameElevationHint}"
|
||||
Severity="Warning"/>
|
||||
<wsc:SettingsGroup Margin="0,0,0,0" Header="常规">
|
||||
<wsc:SettingsGroup Margin="0,0,0,0" Header="{shcm:ResourceString Name=ViewPageLaunchGameCommonHeader}">
|
||||
<InfoBar
|
||||
IsClosable="False"
|
||||
IsOpen="{Binding IsElevated}"
|
||||
Message="切换国际服功能会在游戏截图文件创建缓存文件夹"
|
||||
Message="{shcm:ResourceString Name=ViewPageLaunchGameSwitchSchemeHint}"
|
||||
Severity="Informational"/>
|
||||
<wsc:Setting
|
||||
Description="切换游戏服务器(国服/渠道服/国际服)"
|
||||
Header="服务器"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameSwitchSchemeDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameSwitchSchemeHeader}"
|
||||
Icon=""
|
||||
IsEnabled="{Binding IsElevated}">
|
||||
<wsc:Setting.ActionContent>
|
||||
@@ -79,8 +80,8 @@
|
||||
<wsc:SettingExpander IsExpanded="True">
|
||||
<wsc:SettingExpander.Header>
|
||||
<wsc:Setting
|
||||
Description="在游戏内切换账号,网络环境发生变化后需要重新手动检测"
|
||||
Header="账号"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameSwitchAccountDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameSwitchAccountHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button
|
||||
@@ -89,7 +90,7 @@
|
||||
Margin="0,0,8,0"
|
||||
HorizontalAlignment="Right"
|
||||
Command="{Binding DetectGameAccountCommand}"
|
||||
Content="检测"/>
|
||||
Content="{shcm:ResourceString Name=ViewPageLaunchGameSwitchAccountDetectAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
</wsc:SettingExpander.Header>
|
||||
@@ -102,7 +103,7 @@
|
||||
<TextBlock
|
||||
Opacity="0.8"
|
||||
Style="{StaticResource CaptionTextBlockStyle}"
|
||||
Text="{Binding AttachUid, TargetNullValue=该账号尚未绑定 UID}"/>
|
||||
Text="{Binding AttachUid, TargetNullValue={shcm:ResourceString Name=ViewPageLaunchGameSwitchAccountAttachUidNull}}"/>
|
||||
</StackPanel>
|
||||
<StackPanel
|
||||
x:Name="ButtonPanel"
|
||||
@@ -117,7 +118,7 @@
|
||||
CommandParameter="{Binding}"
|
||||
Content=""
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
ToolTipService.ToolTip="绑定当前用户角色"/>
|
||||
ToolTipService.ToolTip="{shcm:ResourceString Name=ViewPageLaunchGameSwitchAccountAttachUidToolTip}"/>
|
||||
<Button
|
||||
MinWidth="48"
|
||||
Margin="4,8"
|
||||
@@ -126,7 +127,7 @@
|
||||
CommandParameter="{Binding}"
|
||||
Content=""
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
ToolTipService.ToolTip="重命名"/>
|
||||
ToolTipService.ToolTip="{shcm:ResourceString Name=ViewPageLaunchGameSwitchAccountRenameToolTip}"/>
|
||||
<Button
|
||||
MinWidth="48"
|
||||
Margin="4,8,0,8"
|
||||
@@ -135,7 +136,7 @@
|
||||
CommandParameter="{Binding}"
|
||||
Content=""
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
ToolTipService.ToolTip="删除"/>
|
||||
ToolTipService.ToolTip="{shcm:ResourceString Name=ViewPageLaunchGameSwitchAccountRemoveToolTip}"/>
|
||||
</StackPanel>
|
||||
|
||||
<Grid.Resources>
|
||||
@@ -174,10 +175,10 @@
|
||||
</ListView>
|
||||
</wsc:SettingExpander>
|
||||
</wsc:SettingsGroup>
|
||||
<wsc:SettingsGroup Header="外观">
|
||||
<wsc:SettingsGroup Header="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceHeader}">
|
||||
<wsc:Setting
|
||||
Description="与游戏内浏览器不兼容,切屏等操作也能使游戏闪退"
|
||||
Header="独占全屏"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceExclusiveDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceExclusiveHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<ToggleSwitch
|
||||
@@ -187,8 +188,8 @@
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting
|
||||
Description="覆盖默认的全屏状态"
|
||||
Header="全屏"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceFullscreenDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceFullscreenHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<ToggleSwitch
|
||||
@@ -198,8 +199,8 @@
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting
|
||||
Description="将窗口创建为弹出窗口,不带框架"
|
||||
Header="无边框"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceBorderlessDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceBorderlessHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<ToggleSwitch
|
||||
@@ -211,16 +212,16 @@
|
||||
|
||||
<wsc:Setting
|
||||
Margin="0,6,0,0"
|
||||
Description="覆盖默认屏幕宽度"
|
||||
Header="宽度"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceScreenWidthDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceScreenWidthHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<NumberBox Width="156" Value="{Binding ScreenWidth, Mode=TwoWay}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting
|
||||
Description="覆盖默认屏幕高度"
|
||||
Header="高度"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceScreenHeightDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameAppearanceScreenHeightHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<NumberBox Width="156" Value="{Binding ScreenHeight, Mode=TwoWay}"/>
|
||||
@@ -228,41 +229,29 @@
|
||||
</wsc:Setting>
|
||||
</wsc:SettingsGroup>
|
||||
|
||||
<wsc:SettingsGroup Header="高级功能" IsEnabled="{Binding IsElevated}">
|
||||
<wsc:Setting
|
||||
Description="在启动游戏前尝试终止运行中的游戏进程"
|
||||
Header="快速切换账号"
|
||||
Icon=""
|
||||
Visibility="Collapsed">
|
||||
<wsc:Setting.ActionContent>
|
||||
<ToggleSwitch
|
||||
Width="120"
|
||||
IsOn="False"
|
||||
Style="{StaticResource ToggleSwitchSettingStyle}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
<wsc:SettingsGroup Header="{shcm:ResourceString Name=ViewPageLaunchGameAdvanceHeader}" IsEnabled="{Binding IsElevated}">
|
||||
<InfoBar
|
||||
IsClosable="False"
|
||||
IsOpen="{Binding IsElevated}"
|
||||
Message="下面的功能十分危险,如果您不愿承担因此可能带来的后果,请勿启用!"
|
||||
Message="{shcm:ResourceString Name=ViewPageLaunchGameAdvanceHint}"
|
||||
Severity="Error"/>
|
||||
<wsc:Setting
|
||||
Description="请在游戏内关闭垂直同步选项,需要高性能的显卡以支持更高的帧率"
|
||||
Header="解锁帧率限制"
|
||||
Description="{shcm:ResourceString Name=ViewPageLaunchGameUnlockFpsDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageLaunchGameUnlockFpsHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<ToggleSwitch
|
||||
Width="120"
|
||||
IsOn="{Binding UnlockFps, Mode=TwoWay}"
|
||||
OffContent="禁用"
|
||||
OnContent="启用"
|
||||
OffContent="{shcm:ResourceString Name=ViewPageLaunchGameUnlockFpsOff}"
|
||||
OnContent="{shcm:ResourceString Name=ViewPageLaunchGameUnlockFpsOn}"
|
||||
Style="{StaticResource ToggleSwitchSettingStyle}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting Header="设置当前帧率">
|
||||
<wsc:Setting Header="{shcm:ResourceString Name=ViewPageLaunchGameSetFpsHeader}">
|
||||
<wsc:Setting.Description>
|
||||
<StackPanel>
|
||||
<TextBlock Text="在游戏时可以随时调整"/>
|
||||
<TextBlock Text="{shcm:ResourceString Name=ViewPageLaunchGameSetFpsDescription}"/>
|
||||
<TextBlock Text="{Binding TargetFps}"/>
|
||||
</StackPanel>
|
||||
</wsc:Setting.Description>
|
||||
@@ -290,7 +279,7 @@
|
||||
Style="{StaticResource AccentButtonStyle}">
|
||||
<StackPanel>
|
||||
<FontIcon FontSize="36" Glyph=""/>
|
||||
<TextBlock Margin="0,4,0,0" Text="启动游戏"/>
|
||||
<TextBlock Margin="0,4,0,0" Text="{shcm:ResourceString Name=ViewPageLaunchGameAction}"/>
|
||||
</StackPanel>
|
||||
</Button>
|
||||
</Grid>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
|
||||
mc:Ignorable="d">
|
||||
|
||||
@@ -16,12 +17,12 @@
|
||||
Grid.Row="0"
|
||||
Margin="12,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Text="在下方米哈游通行证"/>
|
||||
Text="{shcm:ResourceString Name=ViewPageLoginMihoyoUserTitle}"/>
|
||||
<Button
|
||||
Margin="16"
|
||||
HorizontalAlignment="Right"
|
||||
Click="CookieButtonClick"
|
||||
Content="我已登录"/>
|
||||
Content="{shcm:ResourceString Name=ViewPageLoginMihoyoUserLoggedInAction}"/>
|
||||
<WebView2
|
||||
x:Name="WebView"
|
||||
Grid.Row="2"
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:shc="using:Snap.Hutao.Control"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shv="using:Snap.Hutao.ViewModel"
|
||||
xmlns:wsc="using:WinUICommunity.SettingsUI.Controls"
|
||||
d:DataContext="{d:DesignInstance shv:SettingViewModel}"
|
||||
@@ -28,7 +29,7 @@
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Margin="16,-16,24,16">
|
||||
<wsc:SettingsGroup Header="关于 胡桃">
|
||||
<wsc:SettingsGroup Header="{shcm:ResourceString Name=ViewPageSettingAboutHeader}">
|
||||
<Grid Margin="0,4,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
@@ -44,21 +45,14 @@
|
||||
</Border>
|
||||
|
||||
<Grid Grid.Column="1" Margin="16,0,0,0">
|
||||
<TextBlock TextWrapping="Wrap">
|
||||
<Run>胡桃 图标由</Run>
|
||||
<Hyperlink NavigateUri="https://dieqi32894.lofter.com/post/4b58ce16_2b6b2d365">LOFTER@夙夜</Hyperlink>
|
||||
<Run>纸绘,并由</Run>
|
||||
<Hyperlink NavigateUri="https://github.com/DGP-Studio">DGP Studio</Hyperlink>
|
||||
<Run>后期处理后,授权使用。</Run>
|
||||
</TextBlock>
|
||||
<TextBlock VerticalAlignment="Bottom" Text="Copyright © 2022 DGP Studio. All Rights Reserved."/>
|
||||
<TextBlock Text="Copyright © 2022 - 2023 DGP Studio. All Rights Reserved." TextWrapping="Wrap"/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<wsc:Setting
|
||||
Description="{Binding AppVersion}"
|
||||
Header="胡桃"
|
||||
Header="{shcm:ResourceString Name=AppName}"
|
||||
Icon=""/>
|
||||
<wsc:Setting Header="设备ID" Icon="">
|
||||
<wsc:Setting Header="{shcm:ResourceString Name=ViewPageSettingDeviceIdHeader}" Icon="">
|
||||
<wsc:Setting.Description>
|
||||
<TextBlock
|
||||
IsTextSelectionEnabled="True"
|
||||
@@ -68,42 +62,28 @@
|
||||
</wsc:Setting>
|
||||
<wsc:Setting
|
||||
Description="{Binding WebView2Version}"
|
||||
Header="Webview2 Runtime"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingWebview2Header}"
|
||||
Icon=""/>
|
||||
<wsc:Setting
|
||||
Description="Github 上反馈的问题会优先处理"
|
||||
Header="反馈"
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingFeedbackDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingFeedbackHeader}"
|
||||
Icon="">
|
||||
<HyperlinkButton Content="前往反馈" NavigateUri="{StaticResource DocumentLink_BugReport}"/>
|
||||
<HyperlinkButton Content="{shcm:ResourceString Name=ViewPageSettingFeedbackNavigate}" NavigateUri="{StaticResource DocumentLink_BugReport}"/>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingUpdateCheckDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingUpdateCheckHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<HyperlinkButton Command="{Binding UpdateCheckCommand}" Content="{shcm:ResourceString Name=ViewPageSettingUpdateCheckAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
<wsc:SettingExpander>
|
||||
<wsc:SettingExpander.Header>
|
||||
<wsc:Setting
|
||||
Description="根本没有检查更新选项"
|
||||
Header="检查更新"
|
||||
Icon=""/>
|
||||
</wsc:SettingExpander.Header>
|
||||
<InfoBar
|
||||
CornerRadius="0,0,4,4"
|
||||
IsClosable="False"
|
||||
IsOpen="True"
|
||||
Message="都说了没有了"
|
||||
Severity="Informational">
|
||||
<InfoBar.ActionButton>
|
||||
<Button
|
||||
Width="1"
|
||||
HorizontalAlignment="Right"
|
||||
Command="{Binding DebugExceptionCommand}"
|
||||
Content="没用的按钮"/>
|
||||
</InfoBar.ActionButton>
|
||||
</InfoBar>
|
||||
</wsc:SettingExpander>
|
||||
</wsc:SettingsGroup>
|
||||
|
||||
<wsc:SettingsGroup Header="外观">
|
||||
<wsc:SettingsGroup Header="{shcm:ResourceString Name=ViewPageSettingApperanceHeader}">
|
||||
<wsc:Setting
|
||||
Description="更改窗体的背景材质"
|
||||
Header="背景材质"
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingBackdropMaterialDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingBackdropMaterialHeader}"
|
||||
Icon="">
|
||||
<ComboBox
|
||||
DisplayMemberPath="Name"
|
||||
@@ -112,40 +92,59 @@
|
||||
</wsc:Setting>
|
||||
</wsc:SettingsGroup>
|
||||
|
||||
<wsc:SettingsGroup Header="祈愿记录">
|
||||
<wsc:SettingsGroup Header="{shcm:ResourceString Name=ViewPageSettingGachaLogHeader}">
|
||||
<wsc:Setting
|
||||
Description="在祈愿记录页面显示或隐藏无记录的历史祈愿活动"
|
||||
Header="无记录的历史祈愿活动"
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleHeader}"
|
||||
Icon="">
|
||||
<ToggleSwitch
|
||||
IsOn="{Binding IsEmptyHistoryWishVisible, Mode=TwoWay}"
|
||||
OffContent="隐藏"
|
||||
OnContent="显示"
|
||||
OffContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOff}"
|
||||
OnContent="{shcm:ResourceString Name=ViewPageSettingEmptyHistoryVisibleOn}"
|
||||
Style="{StaticResource ToggleSwitchSettingStyle}"/>
|
||||
</wsc:Setting>
|
||||
|
||||
</wsc:SettingsGroup>
|
||||
|
||||
<wsc:SettingsGroup Header="游戏">
|
||||
<wsc:SettingsGroup Header="{shcm:ResourceString Name=ViewPageSettingGameHeader}">
|
||||
<InfoBar
|
||||
IsClosable="False"
|
||||
IsOpen="True"
|
||||
Message="设置游戏路径时,请选择游戏本体(YuanShen.exe 或 GenshinImpact.exe)而不是启动器(launcher.exe)"
|
||||
Message="{shcm:ResourceString Name=ViewPageSettingSetGamePathHint}"
|
||||
Severity="Informational"/>
|
||||
<wsc:Setting
|
||||
Description="{Binding GamePath}"
|
||||
Header="游戏路径"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingSetGamePathHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding SetGamePathCommand}" Content="设置路径"/>
|
||||
<Button Command="{Binding SetGamePathCommand}" Content="{shcm:ResourceString Name=ViewPageSettingSetGamePathAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting
|
||||
Description="若祈愿记录缓存刷新频繁提示验证密钥过期,可以尝试此操作"
|
||||
Header="删除游戏内网页缓存"
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingDeleteCacheDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingDeleteCacheHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding DeleteGameWebCacheCommand}" Content="删除"/>
|
||||
<Button Command="{Binding DeleteGameWebCacheCommand}" Content="{shcm:ResourceString Name=ViewPageSettingDeleteCacheAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
</wsc:SettingsGroup>
|
||||
|
||||
<wsc:SettingsGroup Header="{shcm:ResourceString Name=ViewPageSettingStorageHeader}">
|
||||
<wsc:Setting
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingDataFolderDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingDataFolderHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding Experimental.OpenDataFolderCommand}" Content="{shcm:ResourceString Name=ViewPageSettingStorageOpenAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
|
||||
<wsc:Setting
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingCacheFolderDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingCacheFolderHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding Experimental.OpenCacheFolderCommand}" Content="{shcm:ResourceString Name=ViewPageSettingStorageOpenAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
</wsc:SettingsGroup>
|
||||
@@ -156,25 +155,6 @@
|
||||
IsOpen="True"
|
||||
Message="测试功能是尚未完善,仅用于 Pollyfill 的功能,未来可能会存在更合理的位置放置这些功能"
|
||||
Severity="Warning"/>
|
||||
|
||||
<wsc:Setting
|
||||
Description="用户数据/日志/元数据在此处存放"
|
||||
Header="打开 数据 文件夹"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding Experimental.OpenDataFolderCommand}" Content="打开"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
|
||||
<wsc:Setting
|
||||
Description="图片缓存在此处存放"
|
||||
Header="打开 缓存 文件夹"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding Experimental.OpenCacheFolderCommand}" Content="打开"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
|
||||
<wsc:Setting
|
||||
Description="对当前选中的账号进行签到"
|
||||
Header="米游社每日签到"
|
||||
@@ -185,30 +165,30 @@
|
||||
</wsc:Setting>
|
||||
</wsc:SettingsGroup>
|
||||
|
||||
<wsc:SettingsGroup Foreground="{ThemeResource SystemFillColorCriticalBrush}" Header="危险功能">
|
||||
<wsc:SettingsGroup Foreground="{ThemeResource SystemFillColorCriticalBrush}" Header="{shcm:ResourceString Name=ViewPageSettingDangerousHeader}">
|
||||
<InfoBar
|
||||
IsClosable="False"
|
||||
IsOpen="True"
|
||||
Message="除非开发人员明确要求你这么做,否则不应尝试执行下方的操作!"
|
||||
Message="{shcm:ResourceString Name=ViewPageSettingDangerousHint}"
|
||||
Severity="Error"/>
|
||||
|
||||
<wsc:Setting
|
||||
Background="{ThemeResource SystemFillColorCriticalBackgroundBrush}"
|
||||
Description="删除注册的计划任务,卸载前务必点击此项"
|
||||
Header="删除所有计划任务"
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingDeleteTaskDescription}"
|
||||
Header="{shcm:ResourceString ViewPageSettingDeleteTaskHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding Experimental.DeleteAllScheduleTasksCommand}" Content="执行"/>
|
||||
<Button Command="{Binding Experimental.DeleteAllScheduleTasksCommand}" Content="{shcm:ResourceString Name=ViewPageSettingDangerousAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
|
||||
<wsc:Setting
|
||||
Background="{StaticResource SystemFillColorCriticalBackgroundBrush}"
|
||||
Description="直接删除用户表的所有记录,用于修复特定的账号冲突问题"
|
||||
Header="删除所有用户"
|
||||
Description="{shcm:ResourceString Name=ViewPageSettingDeleteUserDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewPageSettingDeleteUserHeader}"
|
||||
Icon="">
|
||||
<wsc:Setting.ActionContent>
|
||||
<Button Command="{Binding Experimental.DeleteUsersCommand}" Content="执行"/>
|
||||
<Button Command="{Binding Experimental.DeleteUsersCommand}" Content="{shcm:ResourceString Name=ViewPageSettingDangerousAction}"/>
|
||||
</wsc:Setting.ActionContent>
|
||||
</wsc:Setting>
|
||||
</wsc:SettingsGroup>
|
||||
|
||||
@@ -46,14 +46,14 @@
|
||||
<AppBarButton
|
||||
Command="{Binding UploadSpiralAbyssRecordCommand}"
|
||||
Icon="{shcm:FontIcon Glyph=}"
|
||||
Label="上传数据"/>
|
||||
Label="{shcm:ResourceString Name=ViewSpiralAbyssUploadRecord}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding RefreshCommand}"
|
||||
Icon="{shcm:FontIcon Glyph=}"
|
||||
Label="刷新数据"/>
|
||||
Label="{shcm:ResourceString Name=ViewSpiralAbyssRefresh}"/>
|
||||
</CommandBar>
|
||||
</Pivot.RightHeader>
|
||||
<PivotItem DataContext="{Binding SpiralAbyssView}" Header="统计数据">
|
||||
<PivotItem DataContext="{Binding SpiralAbyssView}" Header="{shcm:ResourceString Name=ViewSpiralAbyssStatistics}">
|
||||
<ScrollViewer>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
@@ -62,11 +62,11 @@
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Grid.Column="0" Margin="16,0,8,16">
|
||||
<wsc:SettingsGroup Margin="0,-48,16,0">
|
||||
<wsc:Setting Content="{Binding TotalBattleTimes}" Header="战斗次数"/>
|
||||
<wsc:Setting Content="{Binding TotalStar}" Header="获得渊星"/>
|
||||
<wsc:Setting Content="{Binding MaxFloor}" Header="最深抵达"/>
|
||||
<wsc:Setting Content="{Binding TotalBattleTimes}" Header="{shcm:ResourceString Name=ViewSpiralAbyssBattleTimes}"/>
|
||||
<wsc:Setting Content="{Binding TotalStar}" Header="{shcm:ResourceString Name=ViewSpiralAbyssTotalStar}"/>
|
||||
<wsc:Setting Content="{Binding MaxFloor}" Header="{shcm:ResourceString Name=ViewSpiralAbyssMaxFloor}"/>
|
||||
</wsc:SettingsGroup>
|
||||
<wsc:SettingsGroup Margin="0,0,16,0" Header="出战次数">
|
||||
<wsc:SettingsGroup Margin="0,0,16,0" Header="{shcm:ResourceString Name=ViewSpiralAbyssReveal}">
|
||||
<ItemsControl HorizontalAlignment="Left" ItemsSource="{Binding Reveals}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
@@ -83,8 +83,8 @@
|
||||
</ItemsControl>
|
||||
|
||||
</wsc:SettingsGroup>
|
||||
<wsc:SettingsGroup Margin="0,0,16,0" Header="战斗数据">
|
||||
<wsc:Setting Header="最多击破">
|
||||
<wsc:SettingsGroup Margin="0,0,16,0" Header="{shcm:ResourceString Name=ViewSpiralAbyssBattleHeader}">
|
||||
<wsc:Setting Header="{shcm:ResourceString Name=ViewSpiralAbyssDefeat}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock
|
||||
Margin="0,0,16,0"
|
||||
@@ -98,7 +98,7 @@
|
||||
</StackPanel>
|
||||
</wsc:Setting>
|
||||
|
||||
<wsc:Setting Header="最强一击">
|
||||
<wsc:Setting Header="{shcm:ResourceString Name=ViewSpiralAbyssDamage}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock
|
||||
Margin="0,0,16,0"
|
||||
@@ -112,7 +112,7 @@
|
||||
</StackPanel>
|
||||
</wsc:Setting>
|
||||
|
||||
<wsc:Setting Header="最多承伤">
|
||||
<wsc:Setting Header="{shcm:ResourceString Name=ViewSpiralAbyssTakeDamage}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock
|
||||
Margin="0,0,16,0"
|
||||
@@ -125,7 +125,8 @@
|
||||
Source="{Binding TakeDamage.SideIcon}"/>
|
||||
</StackPanel>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting Header="元素战技">
|
||||
|
||||
<wsc:Setting Header="{shcm:ResourceString Name=ViewSpiralAbyssNormalSkill}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock
|
||||
Margin="0,0,16,0"
|
||||
@@ -138,7 +139,8 @@
|
||||
Source="{Binding NormalSkill.SideIcon}"/>
|
||||
</StackPanel>
|
||||
</wsc:Setting>
|
||||
<wsc:Setting Header="元素爆发">
|
||||
|
||||
<wsc:Setting Header="{shcm:ResourceString Name=ViewSpiralAbyssEnergySkill}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock
|
||||
Margin="0,0,16,0"
|
||||
@@ -157,7 +159,7 @@
|
||||
|
||||
</ScrollViewer>
|
||||
</PivotItem>
|
||||
<PivotItem DataContext="{Binding SpiralAbyssView}" Header="详细数据">
|
||||
<PivotItem DataContext="{Binding SpiralAbyssView}" Header="{shcm:ResourceString Name=ViewSpiralAbyssDetail}">
|
||||
<ScrollViewer VerticalAlignment="Top" HorizontalScrollBarVisibility="Auto">
|
||||
<ItemsControl
|
||||
Margin="16,16,0,0"
|
||||
@@ -294,13 +296,13 @@
|
||||
Margin="0,16,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="尚未获取任何挑战记录"/>
|
||||
Text="{shcm:ResourceString Name=ViewSpiralAbyssDefaultDescription}"/>
|
||||
<wsc:SettingsGroup Margin="0,-36,0,0" HorizontalAlignment="Center">
|
||||
<wsc:Setting
|
||||
Description="同步米游社的深渊挑战记录"
|
||||
Header="刷新数据"
|
||||
Description="{shcm:ResourceString Name=ViewSpiralAbyssRefreshDescription}"
|
||||
Header="{shcm:ResourceString Name=ViewSpiralAbyssRefresh}"
|
||||
Icon="">
|
||||
<Button Command="{Binding RefreshCommand}" Content="刷新"/>
|
||||
<Button Command="{Binding RefreshCommand}" Content="{shcm:ResourceString Name=ViewSpiralAbyssRefreshAction}"/>
|
||||
</wsc:Setting>
|
||||
</wsc:SettingsGroup>
|
||||
</StackPanel>
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<TextBlock
|
||||
Margin="10,6,0,6"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="角色"/>
|
||||
Text="{shcm:ResourceString Name=ViewUserRole}"/>
|
||||
<ListView
|
||||
Grid.Row="1"
|
||||
Margin="4"
|
||||
@@ -90,7 +90,7 @@
|
||||
<TextBlock
|
||||
Margin="10,6,0,6"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="账号"/>
|
||||
Text="{shcm:ResourceString Name=ViewUserUser}"/>
|
||||
<ListView
|
||||
Grid.Row="1"
|
||||
MaxHeight="224"
|
||||
@@ -134,7 +134,7 @@
|
||||
Content=""
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
Style="{StaticResource ButtonRevealStyle}"
|
||||
ToolTipService.ToolTip="复制 Cookie"/>
|
||||
ToolTipService.ToolTip="{shcm:ResourceString Name=ViewUserCopyCookieAction}"/>
|
||||
<Button
|
||||
Margin="6,0,0,0"
|
||||
HorizontalAlignment="Right"
|
||||
@@ -145,7 +145,7 @@
|
||||
Content=""
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
Style="{StaticResource ButtonRevealStyle}"
|
||||
ToolTipService.ToolTip="移除用户"/>
|
||||
ToolTipService.ToolTip="{shcm:ResourceString Name=ViewUserRemoveAction}"/>
|
||||
</StackPanel>
|
||||
|
||||
<Grid.Resources>
|
||||
@@ -186,21 +186,21 @@
|
||||
<TextBlock
|
||||
Margin="10,6,0,6"
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="请先登录"
|
||||
Text="{shcm:ResourceString Name=ViewUserDefaultDescription}"
|
||||
Visibility="{Binding Users.Count, Converter={StaticResource Int32ToVisibilityRevertConverter}}"/>
|
||||
<TextBlock
|
||||
Margin="10,6,0,6"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="Cookie 操作"/>
|
||||
Text="{shcm:ResourceString Name=ViewUserCookieOperation}"/>
|
||||
<CommandBar DefaultLabelPosition="Right">
|
||||
<AppBarButton
|
||||
Command="{Binding LoginMihoyoUserCommand}"
|
||||
Icon="{shcm:FontIcon Glyph=}"
|
||||
Label="登录米哈游通行证"/>
|
||||
Label="{shcm:ResourceString Name=ViewUserCookieOperationLoginMihoyoUserAction}"/>
|
||||
<AppBarButton
|
||||
Command="{Binding AddUserCommand}"
|
||||
Icon="{shcm:FontIcon Glyph=}"
|
||||
Label="手动输入"/>
|
||||
Label="{shcm:ResourceString Name=ViewUserCookieOperationManualInputAction}"/>
|
||||
</CommandBar>
|
||||
</StackPanel>
|
||||
</Flyout>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:mxi="using:Microsoft.Xaml.Interactivity"
|
||||
xmlns:shcb="using:Snap.Hutao.Control.Behavior"
|
||||
xmlns:shcm="using:Snap.Hutao.Control.Markup"
|
||||
xmlns:shv="using:Snap.Hutao.ViewModel"
|
||||
d:DataContext="{d:DesignInstance shv:WelcomeViewModel}"
|
||||
Unloaded="OnUnloaded"
|
||||
@@ -18,19 +19,19 @@
|
||||
<Grid Margin="0,44,0,0">
|
||||
<ScrollViewer>
|
||||
<StackPanel Margin="32,0" HorizontalAlignment="Left">
|
||||
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="欢迎使用 胡桃"/>
|
||||
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Text="{shcm:ResourceString Name=ViewWelcomeTitle}"/>
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource SubtitleTextBlockStyle}"
|
||||
Text="请勿关闭应用程序"/>
|
||||
Text="{shcm:ResourceString Name=ViewWelcomeSubtitle}"/>
|
||||
<TextBlock
|
||||
Margin="0,8,0,0"
|
||||
Style="{StaticResource BaseTextBlockStyle}"
|
||||
Text="我们将为你下载最基本的图像资源"/>
|
||||
Text="{shcm:ResourceString Name=ViewWelcomeBase}"/>
|
||||
<TextBlock
|
||||
Margin="0,0,0,8"
|
||||
Style="{StaticResource BodyTextBlockStyle}"
|
||||
Text="你可以继续使用电脑,丝毫不受影响"/>
|
||||
Text="{shcm:ResourceString Name=ViewWelcomeBody}"/>
|
||||
<ItemsControl Margin="0,0,0,32" ItemsSource="{Binding DownloadSummaries}">
|
||||
<ItemsControl.ItemContainerTransitions>
|
||||
<EntranceThemeTransition IsStaggeringEnabled="False"/>
|
||||
|
||||
@@ -34,7 +34,7 @@ public abstract class ViewModel : ObservableObject, IViewModel
|
||||
{
|
||||
if (IsViewDisposed)
|
||||
{
|
||||
throw new OperationCanceledException("页面资源已经被释放,操作取消");
|
||||
throw new OperationCanceledException(SH.ViewModelViewDisposedOperationCancel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -287,14 +287,13 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
case ArchiveAddResult.Added:
|
||||
await ThreadHelper.SwitchToMainThreadAsync();
|
||||
SelectedArchive = Archives.SingleOrDefault(a => a.Name == name);
|
||||
|
||||
infoBarService.Success($"存档 [{name}] 添加成功");
|
||||
infoBarService.Success(string.Format(SH.ViewModelAchievementArchiveAdded, name));
|
||||
break;
|
||||
case ArchiveAddResult.InvalidName:
|
||||
infoBarService.Information($"不能添加名称无效的存档");
|
||||
infoBarService.Information(SH.ViewModelAchievementArchiveInvalidName);
|
||||
break;
|
||||
case ArchiveAddResult.AlreadyExists:
|
||||
infoBarService.Information($"不能添加名称重复的存档 [{name}]");
|
||||
infoBarService.Information(string.Format(SH.ViewModelAchievementArchiveAlreadyExists, name));
|
||||
break;
|
||||
default:
|
||||
throw Must.NeverHappen();
|
||||
@@ -308,7 +307,9 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
if (Archives != null && SelectedArchive != null)
|
||||
{
|
||||
ContentDialogResult result = await contentDialogFactory
|
||||
.ConfirmCancelAsync($"确定要删除存档 {SelectedArchive.Name} 吗?", "该操作是不可逆的,该存档和其内的所有成就状态会丢失。")
|
||||
.ConfirmCancelAsync(
|
||||
string.Format(SH.ViewModelAchievementRemoveArchiveTitle, SelectedArchive.Name),
|
||||
SH.ViewModelAchievementRemoveArchiveContent)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
if (result == ContentDialogResult.Primary)
|
||||
@@ -367,9 +368,9 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
}
|
||||
|
||||
FileSavePicker picker = Ioc.Default.GetRequiredService<IPickerFactory>().GetFileSavePicker();
|
||||
picker.FileTypeChoices.Add("UIAF 文件", ".json".Enumerate().ToList());
|
||||
picker.FileTypeChoices.Add(SH.ViewModelAchievementExportFileType, ".json".Enumerate().ToList());
|
||||
picker.SuggestedStartLocation = PickerLocationId.Desktop;
|
||||
picker.CommitButtonText = "导出";
|
||||
picker.CommitButtonText = SH.FilePickerExportCommit;
|
||||
picker.SuggestedFileName = $"{achievementService.CurrentArchive?.Name}.json";
|
||||
|
||||
(bool isPickerOk, FilePath file) = await picker.TryPickSaveFileAsync().ConfigureAwait(false);
|
||||
@@ -378,10 +379,14 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
UIAF uiaf = await achievementService.ExportToUIAFAsync(SelectedArchive).ConfigureAwait(false);
|
||||
bool isOk = await file.SerializeToJsonAsync(uiaf, options).ConfigureAwait(false);
|
||||
|
||||
ValueTask<ContentDialogResult> dialogTask = isOk
|
||||
? contentDialogFactory.ConfirmAsync("导出成功", "成功保存到指定位置")
|
||||
: contentDialogFactory.ConfirmAsync("导出失败", "写入文件时遇到问题");
|
||||
await dialogTask.ConfigureAwait(false);
|
||||
if (isOk)
|
||||
{
|
||||
infoBarService.Success(SH.ViewModelExportSuccessTitle, SH.ViewModelExportSuccessMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning(SH.ViewModelExportWarningTitle, SH.ViewModelExportWarningMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -389,7 +394,8 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
{
|
||||
if (achievementService.CurrentArchive == null)
|
||||
{
|
||||
infoBarService.Information("必须选择一个存档才能导入成就");
|
||||
// Basically can't happen now
|
||||
// infoBarService.Information("必须选择一个存档才能导入成就");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -399,7 +405,7 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
}
|
||||
else
|
||||
{
|
||||
await contentDialogFactory.ConfirmAsync("导入失败", "数据格式不正确").ConfigureAwait(false);
|
||||
infoBarService.Warning(SH.ViewModelImportWarningTitle, SH.ViewModelImportWarningMessage);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,12 +413,13 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
{
|
||||
if (achievementService.CurrentArchive == null)
|
||||
{
|
||||
infoBarService.Information("必须选择一个存档才能导入成就");
|
||||
// Basically can't happen now
|
||||
// infoBarService.Information("必须选择一个存档才能导入成就");
|
||||
return;
|
||||
}
|
||||
|
||||
FileOpenPicker picker = Ioc.Default.GetRequiredService<IPickerFactory>()
|
||||
.GetFileOpenPicker(PickerLocationId.Desktop, "导入", ".json");
|
||||
.GetFileOpenPicker(PickerLocationId.Desktop, SH.FilePickerImportCommit, ".json");
|
||||
(bool isPickerOk, FilePath file) = await picker.TryPickSingleFileAsync().ConfigureAwait(false);
|
||||
|
||||
if (isPickerOk)
|
||||
@@ -425,7 +432,7 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
}
|
||||
else
|
||||
{
|
||||
await contentDialogFactory.ConfirmAsync("导入失败", "文件的数据格式不正确").ConfigureAwait(false);
|
||||
infoBarService.Warning(SH.ViewModelImportWarningTitle, SH.ViewModelImportWarningMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -454,7 +461,10 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
if (isOk)
|
||||
{
|
||||
ImportResult result;
|
||||
ContentDialog dialog = await contentDialogFactory.CreateForIndeterminateProgressAsync("导入成就中").ConfigureAwait(false);
|
||||
ContentDialog dialog = await contentDialogFactory
|
||||
.CreateForIndeterminateProgressAsync(SH.ViewModelAchievementImportProgress)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
await using (await dialog.BlockAsync().ConfigureAwait(false))
|
||||
{
|
||||
result = await achievementService.ImportFromUIAFAsync(archive, uiaf.List, strategy).ConfigureAwait(false);
|
||||
@@ -467,7 +477,7 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
}
|
||||
else
|
||||
{
|
||||
await contentDialogFactory.ConfirmAsync("导入失败", "数据的 UIAF 版本过低,无法导入").ConfigureAwait(false);
|
||||
infoBarService.Warning(SH.ViewModelImportWarningTitle, SH.ViewModelAchievementImportWarningMessage);
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -518,7 +528,7 @@ internal class AchievementViewModel : Abstraction.ViewModel, INavigationRecipien
|
||||
if (Achievements != null)
|
||||
{
|
||||
Achievements.Filter = goal != null
|
||||
? ((object o) => o is Snap.Hutao.Model.Binding.Achievement.Achievement achi && achi.Inner.Goal == goal.Id)
|
||||
? ((object o) => o is Model.Binding.Achievement.Achievement achi && achi.Inner.Goal == goal.Id)
|
||||
: null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +173,9 @@ internal class AvatarPropertyViewModel : Abstraction.ViewModel
|
||||
using (await DisposeLock.EnterAsync(token).ConfigureAwait(false))
|
||||
{
|
||||
ThrowIfViewDisposed();
|
||||
ContentDialog dialog = await contentDialogFactory.CreateForIndeterminateProgressAsync("获取数据中").ConfigureAwait(false);
|
||||
ContentDialog dialog = await contentDialogFactory
|
||||
.CreateForIndeterminateProgressAsync(SH.ViewModelAvatarPropertyFetch)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
await ThreadHelper.SwitchToMainThreadAsync();
|
||||
await using (await dialog.BlockAsync().ConfigureAwait(false))
|
||||
@@ -194,10 +196,10 @@ internal class AvatarPropertyViewModel : Abstraction.ViewModel
|
||||
switch (result)
|
||||
{
|
||||
case RefreshResult.APIUnavailable:
|
||||
infoBarService.Warning("角色信息服务 [Enak API] 当前不可用");
|
||||
infoBarService.Warning(SH.ViewModelAvatarPropertyEnkaApiUnavailable);
|
||||
break;
|
||||
case RefreshResult.ShowcaseNotOpen:
|
||||
infoBarService.Warning("角色橱窗尚未开启,请前往游戏操作后重试");
|
||||
infoBarService.Warning(SH.ViewModelAvatarPropertyShowcaseNotOpen);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -218,7 +220,7 @@ internal class AvatarPropertyViewModel : Abstraction.ViewModel
|
||||
{
|
||||
if (avatar.Weapon == null)
|
||||
{
|
||||
infoBarService.Warning("当前角色无法计算,请同步信息后再试");
|
||||
infoBarService.Warning(SH.ViewModelAvatarPropertyCalculateWeaponNull);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -252,18 +254,18 @@ internal class AvatarPropertyViewModel : Abstraction.ViewModel
|
||||
|
||||
if (avatarAndWeaponSaved)
|
||||
{
|
||||
infoBarService.Success("已成功添加至当前养成计划");
|
||||
infoBarService.Success(SH.ViewModelCultivationEntryAddSuccess);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("请先前往养成计划页面创建计划并选中");
|
||||
infoBarService.Warning(SH.ViewModelCultivationEntryAddWarning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("必须先选择一个用户与角色");
|
||||
infoBarService.Warning(SH.MustSelectUserAndUid);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -306,11 +308,11 @@ internal class AvatarPropertyViewModel : Abstraction.ViewModel
|
||||
|
||||
if (clipboardOpened)
|
||||
{
|
||||
infoBarService.Success("已导出到剪贴板");
|
||||
infoBarService.Success(SH.ViewModelAvatarPropertyExportImageSuccess);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("打开剪贴板失败");
|
||||
infoBarService.Warning(SH.ViewModelAvatarPropertyOpenClipboardFail);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -157,16 +157,15 @@ internal class CultivationViewModel : Abstraction.ViewModel
|
||||
switch (result)
|
||||
{
|
||||
case ProjectAddResult.Added:
|
||||
infoBarService.Success($"添加成功");
|
||||
|
||||
infoBarService.Success(SH.ViewModelCultivationProjectAdded);
|
||||
await ThreadHelper.SwitchToMainThreadAsync();
|
||||
SelectedProject = project;
|
||||
break;
|
||||
case ProjectAddResult.InvalidName:
|
||||
infoBarService.Information($"不能添加名称无效的计划");
|
||||
infoBarService.Information(SH.ViewModelCultivationProjectInvalidName);
|
||||
break;
|
||||
case ProjectAddResult.AlreadyExists:
|
||||
infoBarService.Information($"不能添加名称重复的计划");
|
||||
infoBarService.Information(SH.ViewModelCultivationProjectAlreadyExists);
|
||||
break;
|
||||
default:
|
||||
throw Must.NeverHappen();
|
||||
@@ -236,7 +235,6 @@ internal class CultivationViewModel : Abstraction.ViewModel
|
||||
|
||||
private async Task UpdateStatisticsItemsAsync()
|
||||
{
|
||||
logger.LogInformation("UpdateStatisticsItemsAsync");
|
||||
if (SelectedProject != null)
|
||||
{
|
||||
await ThreadHelper.SwitchToBackgroundAsync();
|
||||
|
||||
@@ -28,11 +28,11 @@ internal class DailyNoteViewModel : Abstraction.ViewModel
|
||||
|
||||
private readonly List<NamedValue<int>> refreshTimes = new()
|
||||
{
|
||||
new("4 分钟 | 0.5 树脂", 240),
|
||||
new("8 分钟 | 1 树脂", 480),
|
||||
new("30 分钟 | 3.75 树脂", 1800),
|
||||
new("40 分钟 | 5 树脂", 2400),
|
||||
new("60 分钟 | 7.5 树脂", 3600),
|
||||
new(SH.ViewModelDailyNoteRefreshTime4, 240),
|
||||
new(SH.ViewModelDailyNoteRefreshTime8, 480),
|
||||
new(SH.ViewModelDailyNoteRefreshTime30, 1800),
|
||||
new(SH.ViewModelDailyNoteRefreshTime40, 2400),
|
||||
new(SH.ViewModelDailyNoteRefreshTime60, 3600),
|
||||
};
|
||||
|
||||
private bool isReminderNotification;
|
||||
@@ -87,7 +87,7 @@ internal class DailyNoteViewModel : Abstraction.ViewModel
|
||||
{
|
||||
if (!ScheduleTaskHelper.RegisterForDailyNoteRefresh(value.Value))
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning("注册计划任务失败,请使用管理员模式重试");
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning(SH.ViewModelDailyNoteRegisterTaskFail);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -134,7 +134,7 @@ internal class DailyNoteViewModel : Abstraction.ViewModel
|
||||
/// <summary>
|
||||
/// 用户与角色集合
|
||||
/// </summary>
|
||||
public ObservableCollection<UserAndUid>? UserAndUids { get => userAndUids; set => userAndUids = value; }
|
||||
public ObservableCollection<UserAndUid>? UserAndUids { get => userAndUids; set => SetProperty(ref userAndUids, value); }
|
||||
|
||||
/// <summary>
|
||||
/// 实时便笺集合
|
||||
@@ -258,7 +258,7 @@ internal class DailyNoteViewModel : Abstraction.ViewModel
|
||||
}
|
||||
else
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning("请先选中账号与角色");
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning(SH.MustSelectUserAndUid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ internal class ExperimentalFeaturesViewModel : ObservableObject
|
||||
await appDbContext.Users.ExecuteDeleteAsync().ConfigureAwait(false);
|
||||
|
||||
IInfoBarService infoBarService = scope.ServiceProvider.GetRequiredService<IInfoBarService>();
|
||||
infoBarService.Success("清除用户数据成功,请重启胡桃");
|
||||
infoBarService.Success(SH.ViewModelExperimentalDeleteUserSuccess);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,11 +76,11 @@ internal class ExperimentalFeaturesViewModel : ObservableObject
|
||||
IInfoBarService infoBarService = Ioc.Default.GetRequiredService<IInfoBarService>();
|
||||
if (Core.ScheduleTaskHelper.UnregisterAllTasks())
|
||||
{
|
||||
infoBarService.Success("清除任务计划成功");
|
||||
infoBarService.Success(SH.ViewModelExperimentalDeleteTaskSuccess);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("清除任务计划失败");
|
||||
infoBarService.Warning(SH.ViewModelExperimentalDeleteTaskWarning);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ using CommunityToolkit.Mvvm.Input;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Snap.Hutao.Control.Extension;
|
||||
using Snap.Hutao.Core.IO;
|
||||
using Snap.Hutao.Extension;
|
||||
using Snap.Hutao.Factory.Abstraction;
|
||||
using Snap.Hutao.Model.Binding.Gacha;
|
||||
using Snap.Hutao.Model.Entity;
|
||||
@@ -218,7 +219,7 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
{
|
||||
// We set true here in order to hide the dialog.
|
||||
authkeyValid = true;
|
||||
infoBarService.Warning("祈愿记录刷新操作被异常取消");
|
||||
infoBarService.Warning(SH.ViewModelGachaLogRefreshOperationCancel);
|
||||
}
|
||||
|
||||
await ThreadHelper.SwitchToMainThreadAsync();
|
||||
@@ -229,8 +230,8 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
}
|
||||
else
|
||||
{
|
||||
dialog.Title = "获取祈愿记录失败";
|
||||
dialog.PrimaryButtonText = "确认";
|
||||
dialog.Title = SH.ViewModelGachaLogRefreshFail;
|
||||
dialog.PrimaryButtonText = SH.ContentDialogConfirmPrimaryButtonText;
|
||||
dialog.DefaultButton = ContentDialogButton.Primary;
|
||||
}
|
||||
}
|
||||
@@ -246,7 +247,7 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
|
||||
private async Task ImportFromUIGFJsonAsync()
|
||||
{
|
||||
FileOpenPicker picker = pickerFactory.GetFileOpenPicker(PickerLocationId.Desktop, "导入", ".json");
|
||||
FileOpenPicker picker = pickerFactory.GetFileOpenPicker(PickerLocationId.Desktop, SH.FilePickerImportCommit, ".json");
|
||||
(bool isPickerOk, FilePath file) = await picker.TryPickSingleFileAsync().ConfigureAwait(false);
|
||||
if (isPickerOk)
|
||||
{
|
||||
@@ -257,7 +258,7 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
}
|
||||
else
|
||||
{
|
||||
await contentDialogFactory.ConfirmAsync("导入失败", "文件的数据格式不正确").ConfigureAwait(false);
|
||||
await contentDialogFactory.ConfirmAsync(SH.ViewModelImportWarningTitle, SH.ViewModelImportWarningMessage).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -272,8 +273,8 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
FileSavePicker picker = pickerFactory.GetFileSavePicker();
|
||||
picker.SuggestedStartLocation = PickerLocationId.Desktop;
|
||||
picker.SuggestedFileName = SelectedArchive.Uid;
|
||||
picker.CommitButtonText = "导出";
|
||||
picker.FileTypeChoices.Add("UIGF Json 文件", new List<string>() { ".json" });
|
||||
picker.CommitButtonText = SH.FilePickerExportCommit;
|
||||
picker.FileTypeChoices.Add(SH.ViewModelGachaLogExportFileType, ".json".Enumerate().ToList());
|
||||
|
||||
(bool isPickerOk, FilePath file) = await picker.TryPickSaveFileAsync().ConfigureAwait(false);
|
||||
|
||||
@@ -282,9 +283,14 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
UIGF uigf = await gachaLogService.ExportToUIGFAsync(SelectedArchive).ConfigureAwait(false);
|
||||
bool isOk = await file.SerializeToJsonAsync(uigf, options).ConfigureAwait(false);
|
||||
|
||||
_ = isOk
|
||||
? await contentDialogFactory.ConfirmAsync("导出成功", "成功保存到指定位置").ConfigureAwait(false)
|
||||
: await contentDialogFactory.ConfirmAsync("导出失败", "写入文件时遇到问题").ConfigureAwait(false);
|
||||
if (isOk)
|
||||
{
|
||||
infoBarService.Success(SH.ViewModelExportSuccessTitle, SH.ViewModelExportSuccessMessage);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning(SH.ViewModelExportWarningTitle, SH.ViewModelExportWarningMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -293,7 +299,7 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
if (Archives != null && SelectedArchive != null)
|
||||
{
|
||||
ContentDialogResult result = await contentDialogFactory
|
||||
.ConfirmCancelAsync($"确定要删除存档 {SelectedArchive.Uid} 吗?", "该操作是不可逆的,该存档和其内的所有祈愿数据会丢失。")
|
||||
.ConfirmCancelAsync(string.Format(SH.ViewModelGachaLogRemoveArchiveTitle, SelectedArchive.Uid), SH.ViewModelGachaLogRemoveArchiveDescription)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
if (result == ContentDialogResult.Primary)
|
||||
@@ -352,13 +358,13 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
await ThreadHelper.SwitchToMainThreadAsync();
|
||||
if (await new GachaLogImportDialog(uigf).GetShouldImportAsync().ConfigureAwait(true))
|
||||
{
|
||||
ContentDialog dialog = await contentDialogFactory.CreateForIndeterminateProgressAsync("导入祈愿记录中").ConfigureAwait(true);
|
||||
ContentDialog dialog = await contentDialogFactory.CreateForIndeterminateProgressAsync(SH.ViewModelGachaLogImportProgress).ConfigureAwait(true);
|
||||
await using (await dialog.BlockAsync().ConfigureAwait(false))
|
||||
{
|
||||
await gachaLogService.ImportFromUIGFAsync(uigf.List, uigf.Info.Uid).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
infoBarService.Success($"导入完成");
|
||||
infoBarService.Success(SH.ViewModelGachaLogImportComplete);
|
||||
await ThreadHelper.SwitchToMainThreadAsync();
|
||||
SetSelectedArchiveAndUpdateStatistics(gachaLogService.CurrentArchive, true);
|
||||
return true;
|
||||
@@ -366,7 +372,7 @@ internal class GachaLogViewModel : Abstraction.ViewModel
|
||||
}
|
||||
else
|
||||
{
|
||||
await contentDialogFactory.ConfirmAsync("导入失败", "数据的 UIGF 版本过低,无法导入").ConfigureAwait(false);
|
||||
infoBarService.Warning(SH.ViewModelGachaLogImportWarningTitle, SH.ViewModelGachaLogImportWarningMessage);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -37,7 +37,6 @@ internal class HutaoDatabaseViewModel : Abstraction.ViewModel
|
||||
this.hutaoCache = hutaoCache;
|
||||
|
||||
OpenUICommand = new AsyncRelayCommand(OpenUIAsync);
|
||||
ExportAsImageCommand = new AsyncRelayCommand<UIElement>(ExportAsImageAsync);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -70,11 +69,6 @@ internal class HutaoDatabaseViewModel : Abstraction.ViewModel
|
||||
/// </summary>
|
||||
public ICommand OpenUICommand { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 导出为图片命令
|
||||
/// </summary>
|
||||
public ICommand ExportAsImageCommand { get; }
|
||||
|
||||
private async Task OpenUIAsync()
|
||||
{
|
||||
if (await hutaoCache.InitializeForDatabaseViewModelAsync().ConfigureAwait(true))
|
||||
@@ -86,27 +80,4 @@ internal class HutaoDatabaseViewModel : Abstraction.ViewModel
|
||||
Overview = hutaoCache.Overview;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ExportAsImageAsync(UIElement? element)
|
||||
{
|
||||
if (element == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RenderTargetBitmap bitmap = new();
|
||||
await bitmap.RenderAsync(element);
|
||||
|
||||
IBuffer buffer = await bitmap.GetPixelsAsync();
|
||||
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
|
||||
using (FileStream file = File.Create(Path.Combine(desktop, "hutao-database.png")))
|
||||
{
|
||||
using (IRandomAccessStream randomFileStream = file.AsRandomAccessStream())
|
||||
{
|
||||
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, randomFileStream);
|
||||
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight, (uint)bitmap.PixelWidth, (uint)bitmap.PixelHeight, 96, 96, buffer.ToArray());
|
||||
await encoder.FlushAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ internal class LaunchGameViewModel : Abstraction.ViewModel
|
||||
}
|
||||
else
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning("无法读取游戏配置文件");
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning(SH.ViewModelLaunchGameMultiChannelReadFail);
|
||||
}
|
||||
|
||||
GameAccounts = await gameService.GetGameAccountCollectionAsync().ConfigureAwait(true);
|
||||
@@ -243,7 +243,7 @@ internal class LaunchGameViewModel : Abstraction.ViewModel
|
||||
}
|
||||
else
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning("游戏路径不正确,前往设置更改游戏路径。");
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning(SH.ViewModelLaunchGamePathInvalid);
|
||||
await Ioc.Default.GetRequiredService<INavigationService>()
|
||||
.NavigateAsync<View.Page.SettingPage>(INavigationAwaiter.Default, true)
|
||||
.ConfigureAwait(false);
|
||||
@@ -311,7 +311,7 @@ internal class LaunchGameViewModel : Abstraction.ViewModel
|
||||
{
|
||||
if (!await gameService.EnsureGameResourceAsync(SelectedScheme, progress).ConfigureAwait(false))
|
||||
{
|
||||
infoBarService.Warning("切换服务器失败");
|
||||
infoBarService.Warning(SH.ViewModelLaunchGameEnsureGameResourceFail);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -320,7 +320,7 @@ internal class LaunchGameViewModel : Abstraction.ViewModel
|
||||
{
|
||||
if (!gameService.SetGameAccount(SelectedGameAccount))
|
||||
{
|
||||
infoBarService.Warning("切换账号失败");
|
||||
infoBarService.Warning(SH.ViewModelLaunchGameSwitchGameAccountFail);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -361,7 +361,7 @@ internal class LaunchGameViewModel : Abstraction.ViewModel
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("当前未选择角色");
|
||||
infoBarService.Warning(SH.MustSelectUserAndUid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,9 +30,9 @@ internal class SettingViewModel : Abstraction.ViewModel
|
||||
private readonly SettingEntry selectedBackdropTypeEntry;
|
||||
private readonly List<NamedValue<BackdropType>> backdropTypes = new()
|
||||
{
|
||||
new("亚克力", BackdropType.Acrylic),
|
||||
new("云母", BackdropType.Mica),
|
||||
new("变种云母", BackdropType.MicaAlt),
|
||||
new("Acrylic", BackdropType.Acrylic),
|
||||
new("Mica", BackdropType.Mica),
|
||||
new("MicaAlt", BackdropType.MicaAlt),
|
||||
};
|
||||
|
||||
private bool isEmptyHistoryWishVisible;
|
||||
@@ -71,7 +71,7 @@ internal class SettingViewModel : Abstraction.ViewModel
|
||||
GamePath = gameService.GetGamePathSkipLocator();
|
||||
|
||||
SetGamePathCommand = new AsyncRelayCommand(SetGamePathAsync);
|
||||
DebugExceptionCommand = new AsyncRelayCommand(DebugThrowExceptionAsync);
|
||||
UpdateCheckCommand = new AsyncRelayCommand(CheckUpdateAsync);
|
||||
DeleteGameWebCacheCommand = new RelayCommand(DeleteGameWebCache);
|
||||
ShowSignInWebViewDialogCommand = new AsyncRelayCommand(ShowSignInWebViewDialogAsync);
|
||||
}
|
||||
@@ -165,7 +165,7 @@ internal class SettingViewModel : Abstraction.ViewModel
|
||||
/// <summary>
|
||||
/// 调试异常命令
|
||||
/// </summary>
|
||||
public ICommand DebugExceptionCommand { get; }
|
||||
public ICommand UpdateCheckCommand { get; }
|
||||
|
||||
/// <summary>
|
||||
/// 删除游戏网页缓存命令
|
||||
@@ -210,15 +210,15 @@ internal class SettingViewModel : Abstraction.ViewModel
|
||||
}
|
||||
catch (UnauthorizedAccessException)
|
||||
{
|
||||
infoBarService.Warning($"清除失败,文件目录权限不足,请使用管理员模式重试");
|
||||
infoBarService.Warning(SH.ViewModelSettingClearWebCacheFail);
|
||||
return;
|
||||
}
|
||||
|
||||
infoBarService.Success("清除完成");
|
||||
infoBarService.Success(SH.ViewModelSettingClearWebCacheSuccess);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning($"清除失败,找不到目录:{cacheFolder}");
|
||||
infoBarService.Warning(string.Format(SH.ViewModelSettingClearWebCachePathInvalid, cacheFolder));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -230,7 +230,7 @@ internal class SettingViewModel : Abstraction.ViewModel
|
||||
await new SignInWebViewDialog().ShowAsync().AsTask().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private async Task DebugThrowExceptionAsync()
|
||||
private async Task CheckUpdateAsync()
|
||||
{
|
||||
#if DEBUG
|
||||
await Ioc.Default
|
||||
|
||||
@@ -126,7 +126,7 @@ internal class SpiralAbyssRecordViewModel : Abstraction.ViewModel, IRecipient<Us
|
||||
}
|
||||
else
|
||||
{
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning("请先选中角色与账号");
|
||||
Ioc.Default.GetRequiredService<IInfoBarService>().Warning(SH.MustSelectUserAndUid);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -201,7 +201,7 @@ internal class SpiralAbyssRecordViewModel : Abstraction.ViewModel, IRecipient<Us
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("请先选择账号与角色");
|
||||
infoBarService.Warning(SH.MustSelectUserAndUid);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -134,16 +134,16 @@ internal class UserViewModel : ObservableObject
|
||||
SelectedUser = Users.Single();
|
||||
}
|
||||
|
||||
infoBarService.Success($"用户 [{uid}] 添加成功");
|
||||
infoBarService.Success(string.Format(SH.ViewModelUserAdded, uid));
|
||||
break;
|
||||
case UserOptionResult.Incomplete:
|
||||
infoBarService.Information($"此 Cookie 不完整,操作失败");
|
||||
infoBarService.Information(SH.ViewModelUserIncomplete);
|
||||
break;
|
||||
case UserOptionResult.Invalid:
|
||||
infoBarService.Information($"此 Cookie 无效,操作失败");
|
||||
infoBarService.Information(SH.ViewModelUserInvalid);
|
||||
break;
|
||||
case UserOptionResult.Updated:
|
||||
infoBarService.Success($"用户 [{uid}] 更新成功");
|
||||
infoBarService.Success(string.Format(SH.ViewModelUserUpdated, uid));
|
||||
break;
|
||||
default:
|
||||
throw Must.NeverHappen();
|
||||
@@ -159,7 +159,7 @@ internal class UserViewModel : ObservableObject
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("尚未安装 WebView2 Runtime");
|
||||
infoBarService.Warning(SH.CoreWebView2HelperVersionUndetected);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ internal class UserViewModel : ObservableObject
|
||||
try
|
||||
{
|
||||
await userService.RemoveUserAsync(user!).ConfigureAwait(false);
|
||||
infoBarService.Success($"用户 [{user.UserInfo?.Nickname}] 成功移除");
|
||||
infoBarService.Success(string.Format(SH.ViewModelUserRemoved, user.UserInfo?.Nickname));
|
||||
}
|
||||
catch (UserdataCorruptedException ex)
|
||||
{
|
||||
@@ -181,11 +181,10 @@ internal class UserViewModel : ObservableObject
|
||||
|
||||
private void CopyCookie(User? user)
|
||||
{
|
||||
Verify.Operation(user != null, "待复制 Cookie 的用户不应为 null");
|
||||
try
|
||||
{
|
||||
string cookieString = new StringBuilder()
|
||||
.Append(user.Stoken)
|
||||
.Append(user!.Stoken)
|
||||
.AppendIf(user.Stoken != null, ';')
|
||||
.Append(user.Ltoken)
|
||||
.AppendIf(user.Ltoken != null, ';')
|
||||
@@ -193,7 +192,7 @@ internal class UserViewModel : ObservableObject
|
||||
.ToString();
|
||||
|
||||
Clipboard.SetText(cookieString);
|
||||
infoBarService.Success($"{user.UserInfo!.Nickname} 的 Cookie 复制成功");
|
||||
infoBarService.Success(string.Format(SH.ViewModelUserCookieCopied, user.UserInfo!.Nickname));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
||||
@@ -70,8 +70,8 @@ internal class WelcomeViewModel : ObservableObject
|
||||
try
|
||||
{
|
||||
new ToastContentBuilder()
|
||||
.AddText("下载完成")
|
||||
.AddText("现在可以开始使用胡桃了")
|
||||
.AddText(SH.ViewModelWelcomeDownloadCompleteTitle)
|
||||
.AddText(SH.ViewModelWelcomeDownloadCompleteMessage)
|
||||
.Show();
|
||||
}
|
||||
catch (COMException)
|
||||
@@ -86,34 +86,34 @@ internal class WelcomeViewModel : ObservableObject
|
||||
|
||||
if (StaticResource.IsContractUnfulfilled(SettingKeys.StaticResourceV1Contract))
|
||||
{
|
||||
downloadSummaries.TryAdd("Bg", new(serviceProvider, "基础图标", "Bg"));
|
||||
downloadSummaries.TryAdd("AvatarIcon", new(serviceProvider, "角色图标", "AvatarIcon"));
|
||||
downloadSummaries.TryAdd("GachaAvatarIcon", new(serviceProvider, "角色立绘图标", "GachaAvatarIcon"));
|
||||
downloadSummaries.TryAdd("GachaAvatarImg", new(serviceProvider, "角色立绘图像", "GachaAvatarImg"));
|
||||
downloadSummaries.TryAdd("EquipIcon", new(serviceProvider, "武器图标", "EquipIcon"));
|
||||
downloadSummaries.TryAdd("GachaEquipIcon", new(serviceProvider, "武器立绘图标", "GachaEquipIcon"));
|
||||
downloadSummaries.TryAdd("NameCardPic", new(serviceProvider, "名片图像", "NameCardPic"));
|
||||
downloadSummaries.TryAdd("Skill", new(serviceProvider, "天赋图标", "Skill"));
|
||||
downloadSummaries.TryAdd("Talent", new(serviceProvider, "命之座图标", "Talent"));
|
||||
downloadSummaries.TryAdd("Bg", new(serviceProvider, "Bg"));
|
||||
downloadSummaries.TryAdd("AvatarIcon", new(serviceProvider, "AvatarIcon"));
|
||||
downloadSummaries.TryAdd("GachaAvatarIcon", new(serviceProvider, "GachaAvatarIcon"));
|
||||
downloadSummaries.TryAdd("GachaAvatarImg", new(serviceProvider, "GachaAvatarImg"));
|
||||
downloadSummaries.TryAdd("EquipIcon", new(serviceProvider, "EquipIcon"));
|
||||
downloadSummaries.TryAdd("GachaEquipIcon", new(serviceProvider, "GachaEquipIcon"));
|
||||
downloadSummaries.TryAdd("NameCardPic", new(serviceProvider, "NameCardPic"));
|
||||
downloadSummaries.TryAdd("Skill", new(serviceProvider, "Skill"));
|
||||
downloadSummaries.TryAdd("Talent", new(serviceProvider, "Talent"));
|
||||
}
|
||||
|
||||
if (StaticResource.IsContractUnfulfilled(SettingKeys.StaticResourceV2Contract))
|
||||
{
|
||||
downloadSummaries.TryAdd("AchievementIcon", new(serviceProvider, "成就图标", "AchievementIcon"));
|
||||
downloadSummaries.TryAdd("ItemIcon", new(serviceProvider, "物品图标", "ItemIcon"));
|
||||
downloadSummaries.TryAdd("IconElement", new(serviceProvider, "元素图标", "IconElement"));
|
||||
downloadSummaries.TryAdd("RelicIcon", new(serviceProvider, "圣遗物图标", "RelicIcon"));
|
||||
downloadSummaries.TryAdd("AchievementIcon", new(serviceProvider, "AchievementIcon"));
|
||||
downloadSummaries.TryAdd("ItemIcon", new(serviceProvider, "ItemIcon"));
|
||||
downloadSummaries.TryAdd("IconElement", new(serviceProvider, "IconElement"));
|
||||
downloadSummaries.TryAdd("RelicIcon", new(serviceProvider, "RelicIcon"));
|
||||
}
|
||||
|
||||
if (StaticResource.IsContractUnfulfilled(SettingKeys.StaticResourceV3Contract))
|
||||
{
|
||||
downloadSummaries.TryAdd("Skill", new(serviceProvider, "天赋图标更新", "Skill"));
|
||||
downloadSummaries.TryAdd("Talent", new(serviceProvider, "命之座图标更新", "Talent"));
|
||||
downloadSummaries.TryAdd("Skill", new(serviceProvider, "Skill"));
|
||||
downloadSummaries.TryAdd("Talent", new(serviceProvider, "Talent"));
|
||||
}
|
||||
|
||||
if (StaticResource.IsContractUnfulfilled(SettingKeys.StaticResourceV4Contract))
|
||||
{
|
||||
downloadSummaries.TryAdd("AvatarIcon", new(serviceProvider, "角色图标更新", "AvatarIcon"));
|
||||
downloadSummaries.TryAdd("AvatarIcon", new(serviceProvider, "AvatarIcon"));
|
||||
}
|
||||
|
||||
return downloadSummaries.Select(x => x.Value);
|
||||
@@ -130,20 +130,20 @@ internal class WelcomeViewModel : ObservableObject
|
||||
private readonly string fileName;
|
||||
private readonly Uri fileUri;
|
||||
private readonly Progress<ProgressUpdateStatus> progress;
|
||||
private string description = "等待中";
|
||||
private string description = SH.ViewModelWelcomeDownloadSummaryDefault;
|
||||
private double progressValue;
|
||||
|
||||
/// <summary>
|
||||
/// 构造一个新的下载信息
|
||||
/// </summary>
|
||||
/// <param name="serviceProvider">服务提供器</param>
|
||||
/// <param name="displayName">显示名称</param>
|
||||
/// <param name="fileName">压缩文件名称</param>
|
||||
public DownloadSummary(IServiceProvider serviceProvider, string displayName, string fileName)
|
||||
///
|
||||
public DownloadSummary(IServiceProvider serviceProvider, string fileName)
|
||||
{
|
||||
this.serviceProvider = serviceProvider;
|
||||
bitsManager = serviceProvider.GetRequiredService<BitsManager>();
|
||||
DisplayName = displayName;
|
||||
DisplayName = fileName;
|
||||
this.fileName = fileName;
|
||||
fileUri = new(Web.HutaoEndpoints.StaticZip(fileName));
|
||||
|
||||
@@ -188,12 +188,12 @@ internal class WelcomeViewModel : ObservableObject
|
||||
await ThreadHelper.SwitchToBackgroundAsync();
|
||||
ExtractFiles(file.Path);
|
||||
await ThreadHelper.SwitchToMainThreadAsync();
|
||||
Description = "完成";
|
||||
Description = SH.ViewModelWelcomeDownloadSummaryComplete;
|
||||
}
|
||||
else
|
||||
{
|
||||
ProgressValue = 0;
|
||||
Description = "文件下载异常";
|
||||
Description = SH.ViewModelWelcomeDownloadSummaryException;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,18 +153,18 @@ internal class WikiAvatarViewModel : Abstraction.ViewModel
|
||||
|
||||
if (saved)
|
||||
{
|
||||
infoBarService.Success("已成功添加至当前养成计划");
|
||||
infoBarService.Success(SH.ViewModelCultivationEntryAddSuccess);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("请先前往养成计划页面创建计划并选中");
|
||||
infoBarService.Warning(SH.ViewModelCultivationEntryAddWarning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("必须先选择一个用户与角色");
|
||||
infoBarService.Warning(SH.MustSelectUserAndUid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,18 +151,18 @@ internal class WikiWeaponViewModel : Abstraction.ViewModel
|
||||
|
||||
if (saved)
|
||||
{
|
||||
infoBarService.Success("已成功添加至当前养成计划");
|
||||
infoBarService.Success(SH.ViewModelCultivationEntryAddSuccess);
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("请先前往养成计划页面创建计划并选中");
|
||||
infoBarService.Warning(SH.ViewModelCultivationEntryAddWarning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
infoBarService.Warning("必须先选择一个用户与角色");
|
||||
infoBarService.Warning(SH.MustSelectUserAndUid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@ public class Response
|
||||
/// <inheritdoc/>
|
||||
public override string ToString()
|
||||
{
|
||||
return $"状态:{ReturnCode} | 信息:{Message}";
|
||||
return string.Format(SH.WebResponseFormat, ReturnCode, Message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user