Compare commits

...

9 Commits

Author SHA1 Message Date
DismissedLight
7c03ce3486 1.7.11 hotfix package 2023-10-18 19:54:55 +08:00
DismissedLight
83e187ea9e fix launch args 2023-10-18 19:54:55 +08:00
Lightczx
d86232f413 fix #1028 2023-10-18 19:54:55 +08:00
Masterain
4e6691ac51 Update FUNDING.yml 2023-10-18 19:54:55 +08:00
Masterain
84ad39b192 Update FUNDING.yml 2023-10-18 19:54:55 +08:00
DismissedLight
ce50fc41e0 1.7.10 package 2023-10-17 22:14:50 +08:00
Masterain
1d71048f56 New Crowdin updates (#1019) 2023-10-17 22:14:50 +08:00
DismissedLight
08cf823156 auto select existed account when detecting 2023-10-17 22:14:50 +08:00
Lightczx
cca65635a6 investigate into CoreWindow 2023-10-17 14:52:38 +08:00
12 changed files with 135 additions and 63 deletions

4
.github/FUNDING.yml vendored
View File

@@ -1,8 +1,8 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: [DGP-Studio]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
open_collective: snaphutao
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry

View File

@@ -0,0 +1,37 @@
// Copyright (c) DGP Studio. All rights reserved.
// Licensed under the MIT license.
using System;
using System.Runtime.InteropServices;
using Windows.UI.Core;
using Windows.Win32.Foundation;
namespace Snap.Hutao.Win32;
internal static class UnsafePInvoke
{
private enum WINDOW_TYPE : uint
{
IMMERSIVE_BODY,
IMMERSIVE_DOCK,
IMMERSIVE_HOSTED,
IMMERSIVE_TEST,
IMMERSIVE_BODY_ACTIVE,
IMMERSIVE_DOCK_ACTIVE,
NOT_IMMERSIVE,
}
[DllImport("Windows.UI.dll", CharSet = CharSet.None, EntryPoint = "#1500", ExactSpelling = false, SetLastError = true)]
[DefaultDllImportSearchPaths(DllImportSearchPath.System32)]
private static extern HRESULT PrivateCreateCoreWindow(WINDOW_TYPE WindowType, PWSTR pWindowTitle, int x, int y, uint uWidth, uint uHeight, uint dwAttributes, HWND hOwnerWindow, Guid riid, out nint ppv);
public static unsafe CoreWindow PrivateCreateCoreWindow(string title, HWND hOwnerWindow)
{
fixed(char* pTitle = title)
{
PrivateCreateCoreWindow(WINDOW_TYPE.NOT_IMMERSIVE, pTitle, 0, 0, 400, 400, 0, hOwnerWindow, typeof(ICoreWindow).GUID, out nint thisPtr);
return CoreWindow.FromAbi(thisPtr);
}
}
}

View File

@@ -8,9 +8,11 @@ using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Media;
using Snap.Hutao.Core.Setting;
using Snap.Hutao.Service;
using Snap.Hutao.Win32;
using System.IO;
using Windows.Graphics;
using Windows.UI;
using Windows.UI.Core;
using Windows.Win32.Foundation;
using Windows.Win32.Graphics.Dwm;
using Windows.Win32.UI.WindowsAndMessaging;
@@ -55,6 +57,7 @@ internal sealed class WindowController
ExtendsContentIntoTitleBar();
RecoverOrInitWindowSize();
CoreWindow coreWindow = UnsafePInvoke.PrivateCreateCoreWindow("Snap Hutao CoreWindow", options.Hwnd);
UpdateImmersiveDarkMode(options.TitleBar, default!);
// appWindow.Show(true);

View File

@@ -12,7 +12,7 @@
<Identity
Name="60568DGPStudio.SnapHutao"
Publisher="CN=35C8E923-85DF-49A7-9172-B39DC6312C52"
Version="1.7.9.0" />
Version="1.7.11.0" />
<Properties>
<DisplayName>Snap Hutao</DisplayName>

View File

@@ -959,6 +959,9 @@
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
<value>Statistics</value>
</data>
<data name="ViewControlWebViewerCoreWebView2ProfileQueryInterfaceFailed" xml:space="preserve">
<value>The current version of WebView2 does not support management configuration, continue to use may cause abnormalities, please upgrade as soon as possible</value>
</data>
<data name="ViewCultivationHeader" xml:space="preserve">
<value>Dev Plan</value>
</data>
@@ -1412,6 +1415,9 @@
<data name="ViewModelSettingSetDataFolderSuccess" xml:space="preserve">
<value>Set data directory successfully. Restart to apply changes.</value>
</data>
<data name="ViewModelSettingSetGamePathDatabaseFailedTitle" xml:space="preserve">
<value>Failed to save game path</value>
</data>
<data name="ViewModelUserAdded" xml:space="preserve">
<value>User [{0}] added successfully</value>
</data>

View File

@@ -169,10 +169,10 @@
<value>権限不足のため、一時ファイルを作成できませんでした</value>
</data>
<data name="CoreJumpListHelperLaunchGameItemDisplayName" xml:space="preserve">
<value>ゲームスタート</value>
<value>ゲームランチャー</value>
</data>
<data name="CoreScheduleTaskHelperDailyNoteRefreshTaskDescription" xml:space="preserve">
<value>胡桃がリアルタイムノートを更新しています | 編集や削除をしないでください</value>
<value>胡桃がリアルタイムノートを更新するために使用するタスクです。編集や削除をしないでください!</value>
</data>
<data name="CoreThreadingSemaphoreSlimDisposed" xml:space="preserve">
<value>セマフォが解放され、操作がキャンセルされました</value>
@@ -295,7 +295,7 @@
<comment>Need EXACT same string in game</comment>
</data>
<data name="ModelIntrinsicBodyTypeBoy" xml:space="preserve">
<value>少年</value>
<value>ショタ</value>
</data>
<data name="ModelIntrinsicBodyTypeGirl" xml:space="preserve">
<value>少女</value>
@@ -426,52 +426,52 @@
<value>この階層のボス</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupA" xml:space="preserve">
<value>A组不同的组同时在场各自分波独立</value>
<value>グループA: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupAWave1" xml:space="preserve">
<value>A组第一波不同的组同时在场各自分波独立</value>
<value>グループA ウェーブ1: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupAWave2" xml:space="preserve">
<value>A组第二波不同的组同时在场各自分波独立</value>
<value>グループA ウェーブ2: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupAWave3" xml:space="preserve">
<value>A组第三波不同的组同时在场各自分波独立</value>
<value>グループA ウェーブ3: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupB" xml:space="preserve">
<value>B组不同的组同时在场各自分波独立</value>
<value>グループB: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupBWave1" xml:space="preserve">
<value>B组第一波不同的组同时在场各自分波独立</value>
<value>グループB ウェーブ1: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupBWave2" xml:space="preserve">
<value>B组第二波不同的组同时在场各自分波独立</value>
<value>グループB ウェーブ2: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupBWave3" xml:space="preserve">
<value>B组第三波不同的组同时在场各自分波独立</value>
<value>グループB ウェーブ3: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupC" xml:space="preserve">
<value>C组不同的组同时在场各自分波独立</value>
<value>グループC: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupCWave1" xml:space="preserve">
<value>C组第一波不同的组同时在场各自分波独立</value>
<value>グループC ウェーブ1: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupCWave2" xml:space="preserve">
<value>C组第二波不同的组同时在场各自分波独立</value>
<value>グループC ウェーブ2: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupCWave3" xml:space="preserve">
<value>C组第三波不同的组同时在场各自分波独立</value>
<value>グループC ウェーブ3: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupD" xml:space="preserve">
<value>D组不同的组同时在场各自分波独立</value>
<value>グループD: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupDWave1" xml:space="preserve">
<value>D组第一波不同的组同时在场各自分波独立</value>
<value>グループD ウェーブ1: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupDWave2" xml:space="preserve">
<value>D组第二波不同的组同时在场各自分波独立</value>
<value>グループD ウェーブ2: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeGroupDWave3" xml:space="preserve">
<value>D组第三波不同的组同时在场各自分波独立</value>
<value>グループD ウェーブ3: 異なるグループが同時に存在し、それぞれ独立したウェーブがある</value>
</data>
<data name="ModelMetadataTowerWaveTypeIndependent" xml:space="preserve">
<value>他の敵とは独立</value>
@@ -504,7 +504,7 @@
<value>精錬ランク{0}</value>
</data>
<data name="MustSelectUserAndUid" xml:space="preserve">
<value>必须先选择一个用户与角色</value>
<value>ユーザーとUIDを選択する必要があります</value>
</data>
<data name="ServiceAchievementImportResultFormat" xml:space="preserve">
<value>{0} つのアチーブメントを追加 | {1} つのアチーブメントを更新 |{2} つのアチーブメントを削除</value>
@@ -645,7 +645,7 @@
<value>育成計画を複数選択しています</value>
</data>
<data name="ServiceDailyNoteNotifierActionLaunchGameButton" xml:space="preserve">
<value>スタート</value>
<value>ゲームを起動</value>
</data>
<data name="ServiceDailyNoteNotifierActionLaunchGameDismiss" xml:space="preserve">
<value>了解</value>
@@ -744,7 +744,7 @@
<value>Item Id{0} はサポートしていません</value>
</data>
<data name="ServiceGachaUIGFImportLanguageNotMatch" xml:space="preserve">
<value>UIGF ファイルの言語:{0} と胡桃の設定言語:{1} マッチングしません。言語を切り替えて再度試してください</value>
<value>UIGF ファイルの言語:{0} と胡桃の設定言語:{1} マッチングしません。言語を切り替えて再度試してください</value>
</data>
<data name="ServiceGameDetectGameAccountMultiMatched" xml:space="preserve">
<value>一致するアカウントが複数見つかりました。重複しているアカウントを削除してください。</value>
@@ -792,7 +792,7 @@
<value>リネーム:{0} を:{1} へ</value>
</data>
<data name="ServiceGamePackageConvertMoveFileRestoreFormat" xml:space="preserve">
<value>復元する{0}</value>
<value>置換{0}</value>
</data>
<data name="ServiceGamePackageRenameDataFolderFailed" xml:space="preserve">
<value>データフォルダの名前を変更できませんでした</value>
@@ -807,7 +807,7 @@
<value>クライアントファイルのダウンロードに失敗しました。: {0}</value>
</data>
<data name="ServiceGamePathLocateFailed" xml:space="preserve">
<value>ゲームパスが見つかりません、設定にて変更してください</value>
<value>ゲームパスが見つかりません、設定変更してください</value>
</data>
<data name="ServiceGameRegisteryInteropLongPathsDisabled" xml:space="preserve">
<value>長いパスのサポートがオフになっているため、レジストリキーを編集できません。</value>
@@ -864,7 +864,7 @@
<value>ログイン報酬リストの取得に失敗しました。</value>
</data>
<data name="ServiceSignInRiskVerificationFailed" xml:space="preserve">
<value>認証に失敗しました、MiYouSheの原神コーナーでログインボーナスを獲得してください</value>
<value>認証に失敗しました、MiHoYo BBSの原神コーナーでログインボーナスを獲得してください</value>
</data>
<data name="ServiceSignInSuccessRewardFormat" xml:space="preserve">
<value>ログインボーナスを獲得しました。{0}×{1}</value>
@@ -959,6 +959,9 @@
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
<value>統計</value>
</data>
<data name="ViewControlWebViewerCoreWebView2ProfileQueryInterfaceFailed" xml:space="preserve">
<value>現在インストールされているWebView2のバージョンは構成管理をサポートしていないため、エラーが発生する可能性があります。WebView2 コンポーネントを更新してください。</value>
</data>
<data name="ViewCultivationHeader" xml:space="preserve">
<value>育成計画</value>
</data>
@@ -1068,13 +1071,13 @@
<value>"code" は 0 の場合のみ認証成功です。他の戻り値は認証失敗となります。</value>
</data>
<data name="ViewDialogGeetestCustomUrlReturnDataHeader" xml:space="preserve">
<value>結果を返す</value>
<value>戻り値</value>
</data>
<data name="ViewDialogGeetestCustomUrlSampleDescription1" xml:space="preserve">
<value>{0} はリクエストの際、gtに切り替えます</value>
<value>{0} はリクエストの際、gtに置き換えられます</value>
</data>
<data name="ViewDialogGeetestCustomUrlSampleDescription2" xml:space="preserve">
<value>{1} はリクエストの際、challengeに切り替えます</value>
<value>{1} はリクエストの際、challengeに置き換えられます</value>
</data>
<data name="ViewDialogGeetestCustomUrlSampleDescription3" xml:space="preserve">
<value>GETメソッドでリクエストの処理を行います。</value>
@@ -1137,7 +1140,7 @@
<value>ドキュメント</value>
</data>
<data name="ViewDialogUserInputPlaceholder" xml:space="preserve">
<value>STokenが含めているCookieを入力してください</value>
<value>STokenが含まれたCookieを入力してください</value>
</data>
<data name="ViewDialogUserTitle" xml:space="preserve">
<value>クッキーを設定</value>
@@ -1203,7 +1206,7 @@
<value>アーカイブ [{0}] はすでに使用されています。別の名前で作成してください</value>
</data>
<data name="ViewModelAchievementArchiveInvalidName" xml:space="preserve">
<value>無効な文字含むアーカイブ作成できません</value>
<value>無効な文字含むアーカイブ作成できません</value>
</data>
<data name="ViewModelAchievementExportFileType" xml:space="preserve">
<value>UIAF ファイル</value>
@@ -1248,10 +1251,10 @@
<value>育成計画の追加に失敗しました</value>
</data>
<data name="ViewModelCultivationBatchAddCompletedFormat" xml:space="preserve">
<value>完了した:追加/更新:{0}、スキップ{1}</value>
<value>完了しました:追加/更新:{0}、スキップ{1}</value>
</data>
<data name="ViewModelCultivationBatchAddIncompletedFormat" xml:space="preserve">
<value>一部完了した:追加/更新:{0}、スキップ{1}</value>
<value>操作の一部に失敗しました:追加/更新:{0}、スキップ{1}</value>
</data>
<data name="ViewModelCultivationEntryAddSuccess" xml:space="preserve">
<value>選択中の育成計画に正常に追加されました</value>
@@ -1260,7 +1263,7 @@
<value>育成計画で新規作成及びセットしてから続けてください</value>
</data>
<data name="ViewModelCultivationProjectAdded" xml:space="preserve">
<value>追加完了</value>
<value>正常に追加されました。</value>
</data>
<data name="ViewModelCultivationProjectAlreadyExists" xml:space="preserve">
<value>育成計画は同じ名前を使えません。他の名前を使用してください。</value>
@@ -1296,7 +1299,7 @@
<value>指定された位置に保存しました</value>
</data>
<data name="ViewModelExportSuccessTitle" xml:space="preserve">
<value>エクスポート成功しました</value>
<value>エクスポート成功しました</value>
</data>
<data name="ViewModelExportWarningMessage" xml:space="preserve">
<value>書き込み処理でエラーが発生しました</value>
@@ -1341,7 +1344,7 @@
<value>{0} を削除してよろしいでしょうか?</value>
</data>
<data name="ViewModelGachaLogRetrieveFromHutaoCloudProgress" xml:space="preserve">
<value>胡桃クラウドから祈願履歴を同期します</value>
<value>胡桃クラウド祈願履歴を同期します</value>
</data>
<data name="ViewModelGachaLogUploadToHutaoCloudProgress" xml:space="preserve">
<value>胡桃クラウドにアップロード中</value>
@@ -1412,6 +1415,9 @@
<data name="ViewModelSettingSetDataFolderSuccess" xml:space="preserve">
<value>データディレクトリのリセットが完了しました、再起動して変更を適用します</value>
</data>
<data name="ViewModelSettingSetGamePathDatabaseFailedTitle" xml:space="preserve">
<value>ゲームパスの保存に失敗しました</value>
</data>
<data name="ViewModelUserAdded" xml:space="preserve">
<value>ユーザー [{0}] を正常に追加しました</value>
</data>
@@ -1425,7 +1431,7 @@
<value>このCookieが無効のため、操作できません</value>
</data>
<data name="ViewModelUserRemoved" xml:space="preserve">
<value>ユーザー [{0}] 削除されました</value>
<value>ユーザー [{0}] 削除ました</value>
</data>
<data name="ViewModelUserUpdated" xml:space="preserve">
<value>ユーザー [{0}] の Cookie が更新されました。</value>
@@ -1530,7 +1536,7 @@
<value>更新日時</value>
</data>
<data name="ViewPageAvatarPropertyScore" xml:space="preserve">
<value>評価する</value>
<value>評価スコア</value>
</data>
<data name="ViewPageAvatarPropertySecondaryProperties" xml:space="preserve">
<value>強化後付与のサブOP</value>
@@ -1611,7 +1617,7 @@
<value>カードを削除</value>
</data>
<data name="ViewPageDailyNoteResinDiscountUsed" xml:space="preserve">
<value>今週の消費半減回数は消化済</value>
<value>今週の消費半減は消化済</value>
</data>
<data name="ViewPageDailyNoteSettingAutoRefresh" xml:space="preserve">
<value>自動更新</value>
@@ -1704,13 +1710,13 @@
<value>現在のユーザーのCookieで祈願履歴を表示する</value>
</data>
<data name="ViewPageGachaLogRefreshByWebCache" xml:space="preserve">
<value>キャッシュの再読み込み</value>
<value>ゲーム内ブラウザキャッシュで更新</value>
</data>
<data name="ViewPageGachaLogRefreshByWebCacheDescription" xml:space="preserve">
<value>ゲーム内ブラウザのキャッシュで祈願履歴を更新</value>
</data>
<data name="ViewPageGachaLogRemoveArchiveAction" xml:space="preserve">
<value>のアーカイブを削除する</value>
<value>現在のアーカイブを削除する</value>
</data>
<data name="ViewPageGahcaLogPivotAvatar" xml:space="preserve">
<value>キャラクター</value>
@@ -1734,13 +1740,13 @@
<value>胡桃を {0} 回起動しました</value>
</data>
<data name="ViewPageHomeGreetingTextDefault" xml:space="preserve">
<value>テイワットへようこそ</value>
<value>テイワットへようこそ!</value>
</data>
<data name="ViewPageHomeGreetingTextEasterEgg" xml:space="preserve">
<value>あなたの言う通りだが、しかし「胡桃」はDGP Studioが開発した...</value>
</data>
<data name="ViewPageHomeGreetingTextEpic1" xml:space="preserve">
<value>ねぇ、旅人、今日はテイワットで{0} 日目の冒険だ</value>
<value>なあ、旅人、今日はテイワットで{0} 日目の冒険だぞ!</value>
</data>
<data name="ViewPageHomeLaunchGameSettingAction" xml:space="preserve">
<value>設定</value>
@@ -1848,7 +1854,7 @@
<value>枠の無いポップアップウィンドウとして作成します。</value>
</data>
<data name="ViewPageLaunchGameAppearanceBorderlessHeader" xml:space="preserve">
<value>フレームレス</value>
<value>ボーダーレス</value>
</data>
<data name="ViewPageLaunchGameAppearanceExclusiveDescription" xml:space="preserve">
<value>ゲーム内ブラウザには対応していません。ウィンドウの切り替え操作などによりゲームが強制終了する可能性があります。</value>
@@ -1953,13 +1959,13 @@
<value>有効</value>
</data>
<data name="ViewPageLoginHoyoverseUserHint" xml:space="preserve">
<value>HoYo Lab UIDを入力してください</value>
<value>HoYoLab UIDを入力してください</value>
</data>
<data name="ViewPageLoginMihoyoUserLoggedInAction" xml:space="preserve">
<value>ログインしました</value>
</data>
<data name="ViewPageLoginMihoyoUserTitle" xml:space="preserve">
<value>Hoyoverse通行証ログイン</value>
<value>MiHoYo BBS通行証ログイン</value>
</data>
<data name="ViewPageOpenScreenshotFolderAction" xml:space="preserve">
<value>スクリーンショットフォルダを開く</value>
@@ -2100,7 +2106,7 @@
<value>胡桃アカウント</value>
</data>
<data name="ViewPageSettingIsAdvancedLaunchOptionsEnabledDescription" xml:space="preserve">
<value>原神およびSnap Hutaoの利用規約を全て熟読し、その後『ゲームランチャー - 上級者向け設定』を有効にします。</value>
<value>原神およびSnap Hutaoの利用規約を全て熟読し、その後『ゲームランチャー - 上級者向け設定』を有効にします。</value>
</data>
<data name="ViewPageSettingIsAdvancedLaunchOptionsEnabledHeader" xml:space="preserve">
<value>上級者向け設定を有効にする</value>
@@ -2388,16 +2394,16 @@
<value>武器一覧</value>
</data>
<data name="WebAnnouncementMatchPermanentActivityTime" xml:space="preserve">
<value>(?:〓活动时间〓|〓任务开放时间〓).*?\d\.\d版本更新(?:完|)后永久开放</value>
<value>(?:〓イベント期間〓|〓任務開始時間〓).*?\d\.\dバージョンアップ(?:完|)後常設オープン</value>
</data>
<data name="WebAnnouncementMatchPersistentActivityTime" xml:space="preserve">
<value>〓活动时间〓.*?\d\.\d版本期间持续开放</value>
<value>〓イベント期間〓.*?\d\.\d当バージョン期間オープン</value>
</data>
<data name="WebAnnouncementMatchTransientActivityTime" xml:space="preserve">
<value>(?:〓活动时间〓|祈愿时间|【上架时间】).*?(\d\.\d版本更新后).*?~.*?&amp;lt;t class="t_(?:gl|lc)".*?&amp;gt;(.*?)&amp;lt;/t&amp;gt;</value>
<value>(?:〓イベント期間〓|祈願期間|【開始日時】).*?(\d\.\dバージョンアップ完了後).*?~.*?&amp;lt;t class="t_(?:gl|lc)".*?&amp;gt;(.*?)&amp;lt;/t&amp;gt;</value>
</data>
<data name="WebAnnouncementMatchVersionUpdateTime" xml:space="preserve">
<value>〓更新时间〓.+?&amp;lt;t class=\"t_(?:gl|lc)\".*?&amp;gt;(.*?)&amp;lt;/t&amp;gt;</value>
<value>〓更新日時〓.+?&amp;lt;t class=\"t_(?:gl|lc)\".*?&amp;gt;(.*?)&amp;lt;/t&amp;gt;</value>
</data>
<data name="WebAnnouncementMatchVersionUpdateTitle" xml:space="preserve">
<value>Ver.\d\.\d 更新内容</value>
@@ -2430,10 +2436,10 @@
<value>デイリー依頼の報酬は受け取り済みです</value>
</data>
<data name="WebDailyNoteHomeCoinRecoveryFormat" xml:space="preserve">
<value>上限到達まで{0}{1:HH:mm}</value>
<value>上限到達まで{0} {1:HH:mm}</value>
</data>
<data name="WebDailyNoteHomeLocked" xml:space="preserve">
<value>洞天形態未開放</value>
<value>塵歌壺が未解放です</value>
</data>
<data name="WebDailyNoteRecoveryTimeDay0" xml:space="preserve">
<value>今日</value>

View File

@@ -959,6 +959,9 @@
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
<value>统计</value>
</data>
<data name="ViewControlWebViewerCoreWebView2ProfileQueryInterfaceFailed" xml:space="preserve">
<value>当前 WebView2 版本不支持管理配置,继续使用可能会导致异常,请尽快升级</value>
</data>
<data name="ViewCultivationHeader" xml:space="preserve">
<value>육성 계획</value>
</data>
@@ -1412,6 +1415,9 @@
<data name="ViewModelSettingSetDataFolderSuccess" xml:space="preserve">
<value>데이터 경로를 설정했습니다. 변경 사항을 적용하기 위해 재시작합니다</value>
</data>
<data name="ViewModelSettingSetGamePathDatabaseFailedTitle" xml:space="preserve">
<value>保存游戏路径失败</value>
</data>
<data name="ViewModelUserAdded" xml:space="preserve">
<value>사용자 [{0}]가 정상적으로 추가되었습니다</value>
</data>

View File

@@ -959,6 +959,9 @@
<data name="ViewControlStatisticsSegmentedItemContentStatistics" xml:space="preserve">
<value>統計</value>
</data>
<data name="ViewControlWebViewerCoreWebView2ProfileQueryInterfaceFailed" xml:space="preserve">
<value>当前 WebView2 版本不支持管理配置,继续使用可能会导致异常,请尽快升级</value>
</data>
<data name="ViewCultivationHeader" xml:space="preserve">
<value>養成計劃</value>
</data>
@@ -1412,6 +1415,9 @@
<data name="ViewModelSettingSetDataFolderSuccess" xml:space="preserve">
<value>設置數據目錄成功,重啓以應用更改</value>
</data>
<data name="ViewModelSettingSetGamePathDatabaseFailedTitle" xml:space="preserve">
<value>保存游戏路径失败</value>
</data>
<data name="ViewModelUserAdded" xml:space="preserve">
<value>用戶 [{0}] 新增成功</value>
</data>

View File

@@ -281,7 +281,7 @@ internal sealed partial class GameService : IGameService
}
/// <inheritdoc/>
public async ValueTask DetectGameAccountAsync()
public async ValueTask<GameAccount?> DetectGameAccountAsync()
{
ArgumentNullException.ThrowIfNull(gameAccounts);
@@ -318,7 +318,11 @@ internal sealed partial class GameService : IGameService
gameAccounts.Add(account);
}
}
return account;
}
return default;
}
/// <inheritdoc/>

View File

@@ -26,11 +26,7 @@ internal interface IGameService
/// <param name="uid">uid</param>
void AttachGameAccountToUid(GameAccount gameAccount, string uid);
/// <summary>
/// 检测并尝试添加游戏内账户
/// </summary>
/// <returns>任务</returns>
ValueTask DetectGameAccountAsync();
ValueTask<GameAccount?> DetectGameAccountAsync();
/// <summary>
/// 异步获取游戏路径

View File

@@ -26,7 +26,7 @@ internal static class ProcessInterop
/// <returns>初始化后的游戏进程</returns>
public static Process InitializeGameProcess(LaunchOptions options, string gamePath)
{
Must.Argument(options.IsBorderless ^ options.IsExclusive, "无边框与全屏选项无法同时生效");
Must.Argument(!(options.IsBorderless && options.IsExclusive), "无边框与独占全屏选项无法同时生效");
// https://docs.unity.cn/cn/current/Manual/PlayerCommandLineArguments.html
// https://docs.unity3d.com/2017.4/Documentation/Manual/CommandLineArguments.html

View File

@@ -236,7 +236,15 @@ internal sealed partial class LaunchGameViewModel : Abstraction.ViewModel
{
try
{
await gameService.DetectGameAccountAsync().ConfigureAwait(false);
GameAccount? account = await gameService.DetectGameAccountAsync().ConfigureAwait(false);
// If user canceled the operation, the return is null,
// and thus we should not set SelectedAccount
if (account is not null)
{
await taskContext.SwitchToMainThreadAsync();
SelectedGameAccount = account;
}
}
catch (UserdataCorruptedException ex)
{