From b6f11efda76e7d7bcfebdb37c0dfa7e138cba381 Mon Sep 17 00:00:00 2001 From: status102 Date: Tue, 10 Oct 2023 23:45:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=B7=E7=90=86=E6=99=BA=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E8=A1=8C=E5=8A=A8=E8=BE=93=E5=87=BA=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=20=E6=AF=8F=E6=AC=A1=E5=BC=80=E5=A7=8B=E8=A1=8C=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E8=BE=93=E5=87=BA=E7=90=86=E6=99=BA=E8=8D=AF=E5=92=8C?= =?UTF-8?q?=E7=A2=8E=E7=9F=B3=E6=AC=A1=E6=95=B0=EF=BC=88=E4=B8=8D=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E4=B8=B4=E6=9C=9F=E8=8D=AF=E5=93=81=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MaaWpfGui/Helper/Instances.cs | 6 + src/MaaWpfGui/Main/AsstProxy.cs | 264 +++++++++++---------- src/MaaWpfGui/Res/Localizations/en-us.xaml | 4 +- src/MaaWpfGui/Res/Localizations/ja-jp.xaml | 4 +- src/MaaWpfGui/Res/Localizations/ko-kr.xaml | 4 +- src/MaaWpfGui/Res/Localizations/zh-cn.xaml | 4 +- src/MaaWpfGui/Res/Localizations/zh-tw.xaml | 4 +- 7 files changed, 159 insertions(+), 131 deletions(-) diff --git a/src/MaaWpfGui/Helper/Instances.cs b/src/MaaWpfGui/Helper/Instances.cs index e6b50eb1ae..a22811f21f 100644 --- a/src/MaaWpfGui/Helper/Instances.cs +++ b/src/MaaWpfGui/Helper/Instances.cs @@ -45,9 +45,15 @@ namespace MaaWpfGui.Helper public static DateTimeOffset ReportTime { get; set; } } + public static int MedicineUsedTimes = 0; + + public static int StoneUsedTimes = 0; + public static void ClearCache() { SanityReport.HasSanityReport = false; + MedicineUsedTimes = 0; + StoneUsedTimes = 0; } } diff --git a/src/MaaWpfGui/Main/AsstProxy.cs b/src/MaaWpfGui/Main/AsstProxy.cs index 13d9ce0517..6701976d57 100644 --- a/src/MaaWpfGui/Main/AsstProxy.cs +++ b/src/MaaWpfGui/Main/AsstProxy.cs @@ -503,16 +503,16 @@ namespace MaaWpfGui.Main case "CloseDown": return; case "Recruit": - { - if (msg == AsstMsg.TaskChainError) { - Instances.RecognizerViewModel.RecruitInfo = LocalizationHelper.GetString("IdentifyTheMistakes"); - using var toast = new ToastNotification(LocalizationHelper.GetString("IdentifyTheMistakes")); - toast.Show(); - } + if (msg == AsstMsg.TaskChainError) + { + Instances.RecognizerViewModel.RecruitInfo = LocalizationHelper.GetString("IdentifyTheMistakes"); + using var toast = new ToastNotification(LocalizationHelper.GetString("IdentifyTheMistakes")); + toast.Show(); + } - break; - } + break; + } } bool isCopilotTaskChain = taskChain == "Copilot" || taskChain == "VideoRecognition"; @@ -577,15 +577,15 @@ namespace MaaWpfGui.Main Instances.TaskQueueViewModel.IncreaseCustomInfrastPlanIndex(); break; case "Mall": - { - if (Instances.TaskQueueViewModel.Stage != string.Empty && Instances.SettingsViewModel.CreditFightTaskEnabled) { - Instances.SettingsViewModel.LastCreditFightTaskTime = DateTime.UtcNow.ToYjDate().ToFormattedString(); - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CompleteTask") + LocalizationHelper.GetString("CreditFight")); - } + if (Instances.TaskQueueViewModel.Stage != string.Empty && Instances.SettingsViewModel.CreditFightTaskEnabled) + { + Instances.SettingsViewModel.LastCreditFightTaskTime = DateTime.UtcNow.ToYjDate().ToFormattedString(); + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CompleteTask") + LocalizationHelper.GetString("CreditFight")); + } - break; - } + break; + } } if (taskChain == "Fight" && SanityReport.HasSanityReport) @@ -799,147 +799,159 @@ namespace MaaWpfGui.Main switch (subTask) { case "ProcessTask": - { - string taskName = details["details"]?["task"]?.ToString(); - int execTimes = (int)details["details"]["exec_times"]; - - switch (taskName) { - case "StartButton2": - case "AnnihilationConfirm": - var log = LocalizationHelper.GetString("MissionStart") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"); - if (SanityReport.HasSanityReport) - { - log += "\n" + LocalizationHelper.GetString("CurrentSanity") + $" {SanityReport.Sanity[0]}/{SanityReport.Sanity[1]}"; - } + string taskName = details["details"]?["task"]?.ToString(); + int execTimes = (int)details["details"]["exec_times"]; - Instances.TaskQueueViewModel.AddLog(log, UiLogColor.Info); - break; + switch (taskName) + { + case "StartButton2": + case "AnnihilationConfirm": + var log = LocalizationHelper.GetString("MissionStart") + $" {execTimes} {LocalizationHelper.GetString("UnitTime")}\n"; + if (SanityReport.HasSanityReport) + { + log += LocalizationHelper.GetString("CurrentSanity") + $" {SanityReport.Sanity[0]}/{SanityReport.Sanity[1]} "; + } - case "MedicineConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("MedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - break; + if (MedicineUsedTimes > 0) + { + log += LocalizationHelper.GetString("MedicineUsedTimes") + $" {MedicineUsedTimes}/{Instances.TaskQueueViewModel.MedicineNumber} "; + } - case "ExpiringMedicineConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExpiringMedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - break; + if (StoneUsedTimes > 0) + { + log += LocalizationHelper.GetString("StoneUsedTimes") + $" {StoneUsedTimes}/{Instances.TaskQueueViewModel.StoneNumber} "; + } - case "StoneConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StoneUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - break; + Instances.TaskQueueViewModel.AddLog(log.TrimEnd('\n').TrimEnd(' '), UiLogColor.Info); + break; - case "AbandonAction": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ActingCommandError"), UiLogColor.Error); - break; + case "MedicineConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("MedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + MedicineUsedTimes++; + break; - case "RecruitRefreshConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("LabelsRefreshed"), UiLogColor.Info); - break; + case "ExpiringMedicineConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExpiringMedicineUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + break; - case "RecruitConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitConfirm"), UiLogColor.Info); - break; + case "StoneConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("StoneUsed") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + StoneUsedTimes++; + break; - case "InfrastDormDoubleConfirmButton": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("InfrastDormDoubleConfirmed"), UiLogColor.Error); - break; + case "AbandonAction": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ActingCommandError"), UiLogColor.Error); + break; - /* 肉鸽相关 */ - case "StartExplore": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("BegunToExplore") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - break; + case "RecruitRefreshConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("LabelsRefreshed"), UiLogColor.Info); + break; - case "StageTraderInvestConfirm": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("HasInvested") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); - break; + case "RecruitConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RecruitConfirm"), UiLogColor.Info); + break; - case "ExitThenAbandon": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExplorationAbandoned")); - break; + case "InfrastDormDoubleConfirmButton": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("InfrastDormDoubleConfirmed"), UiLogColor.Error); + break; - // case "StartAction": - // Instances.TaskQueueViewModel.AddLog("开始战斗"); - // break; - case "MissionCompletedFlag": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightCompleted")); - break; + /* 肉鸽相关 */ + case "StartExplore": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("BegunToExplore") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + break; - case "MissionFailedFlag": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightFailed")); - break; + case "StageTraderInvestConfirm": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("HasInvested") + $" {execTimes} " + LocalizationHelper.GetString("UnitTime"), UiLogColor.Info); + break; - case "StageTraderEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Trader")); - break; + case "ExitThenAbandon": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("ExplorationAbandoned")); + break; - case "StageSafeHouseEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("SafeHouse")); - break; + // case "StartAction": + // Instances.TaskQueueViewModel.AddLog("开始战斗"); + // break; + case "MissionCompletedFlag": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightCompleted")); + break; - case "StageEncounterEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Encounter")); - break; + case "MissionFailedFlag": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("FightFailed")); + break; - // case "StageBoonsEnter": - // Instances.TaskQueueViewModel.AddLog("古堡馈赠"); - // break; - case "StageCombatDpsEnter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CombatDps")); - break; + case "StageTraderEnter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Trader")); + break; - case "StageEmergencyDps": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("EmergencyDps")); - break; + case "StageSafeHouseEnter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("SafeHouse")); + break; - case "StageDreadfulFoe": - case "StageDreadfulFoe-5Enter": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("DreadfulFoe")); - break; + case "StageEncounterEnter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("Encounter")); + break; - case "StageTraderInvestSystemFull": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("UpperLimit"), UiLogColor.Info); - break; + // case "StageBoonsEnter": + // Instances.TaskQueueViewModel.AddLog("古堡馈赠"); + // break; + case "StageCombatDpsEnter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CombatDps")); + break; - case "OfflineConfirm": - if (Instances.SettingsViewModel.AutoRestartOnDrop) - { - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDrop"), UiLogColor.Warning); - } - else - { - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDropNoRestart"), UiLogColor.Warning); - using var toast = new ToastNotification(LocalizationHelper.GetString("GameDropNoRestart")); - toast.Show(); - _ = Instances.TaskQueueViewModel.Stop(); - } + case "StageEmergencyDps": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("EmergencyDps")); + break; - break; + case "StageDreadfulFoe": + case "StageDreadfulFoe-5Enter": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("DreadfulFoe")); + break; - case "GamePass": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeGamePass"), UiLogColor.RareOperator); - break; + case "StageTraderInvestSystemFull": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("UpperLimit"), UiLogColor.Info); + break; - case "BattleStartAll": - Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("MissionStart"), UiLogColor.Info); - break; + case "OfflineConfirm": + if (Instances.SettingsViewModel.AutoRestartOnDrop) + { + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDrop"), UiLogColor.Warning); + } + else + { + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("GameDropNoRestart"), UiLogColor.Warning); + using var toast = new ToastNotification(LocalizationHelper.GetString("GameDropNoRestart")); + toast.Show(); + _ = Instances.TaskQueueViewModel.Stop(); + } - case "StageTraderSpecialShoppingAfterRefresh": - Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeSpecialItemBought"), UiLogColor.RareOperator); - break; + break; + + case "GamePass": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeGamePass"), UiLogColor.RareOperator); + break; + + case "BattleStartAll": + Instances.CopilotViewModel.AddLog(LocalizationHelper.GetString("MissionStart"), UiLogColor.Info); + break; + + case "StageTraderSpecialShoppingAfterRefresh": + Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("RoguelikeSpecialItemBought"), UiLogColor.RareOperator); + break; + } + + break; } - - break; - } case "CombatRecordRecognitionTask": - { - string what = details["what"]?.ToString(); - if (!string.IsNullOrEmpty(what)) { - Instances.CopilotViewModel.AddLog(what); - } + string what = details["what"]?.ToString(); + if (!string.IsNullOrEmpty(what)) + { + Instances.CopilotViewModel.AddLog(what); + } - break; - } + break; + } } } diff --git a/src/MaaWpfGui/Res/Localizations/en-us.xaml b/src/MaaWpfGui/Res/Localizations/en-us.xaml index d4459f83d8..176cf68e76 100644 --- a/src/MaaWpfGui/Res/Localizations/en-us.xaml +++ b/src/MaaWpfGui/Res/Localizations/en-us.xaml @@ -560,9 +560,11 @@ The video aspect ratio needs to be 16:9 without interference factors such as bla No bonus stage, stopped Stage Queue: Unable to use PRTS - Current Sanity: Mission started times + Sanity: + Medicine: + Stone: Medicine used Expiring medicine used Originite Prime used diff --git a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml index 959f23388f..0b082f2a79 100644 --- a/src/MaaWpfGui/Res/Localizations/ja-jp.xaml +++ b/src/MaaWpfGui/Res/Localizations/ja-jp.xaml @@ -560,9 +560,11 @@ Bilibili: ログイン インターフェイスに表示されるアカウント ステージ報酬がないため停止します レベルキュー: 自動指揮利用不可 - 現在理性: 行動開始しました + 理性: + 薬: + 石: 回復剤を使った 48時間以内に期限が切れる回復剤を使った 源石を使った diff --git a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml index fc6900f04c..bf1c9cad8e 100644 --- a/src/MaaWpfGui/Res/Localizations/ko-kr.xaml +++ b/src/MaaWpfGui/Res/Localizations/ko-kr.xaml @@ -560,9 +560,11 @@ Bilibili: 로그인 인터페이스에 표시되는 계정 이름(예: 장산) EX 스테이지가 없어 중단되었습니다 레벨 대기열: 프록시 명령을 사용할 수 없습니다 - 현재 이성: 행동 개시 + 제정신: + 약: + 결석: 이성 회복 아이템을 사용했습니다 만료가 임박한 이성 회복 아이템을 사용했습니다 순오리지늄을 사용했습니다 diff --git a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml index 42fe9989ad..fb5e63a9a2 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-cn.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-cn.xaml @@ -560,9 +560,11 @@ 无奖励关卡,已停止 关卡队列: 无法使用代理指挥 - 当前理智: 已开始行动 + 理智: + 药: + 石: 已使用理智药 已使用 48 小时内过期的理智药 已使用源石 diff --git a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml index 4ddab49490..8c3615bac2 100644 --- a/src/MaaWpfGui/Res/Localizations/zh-tw.xaml +++ b/src/MaaWpfGui/Res/Localizations/zh-tw.xaml @@ -560,9 +560,11 @@ 無獎勵關卡,已停止 關卡隊列: 無法使用代理指揮 - 當前理智: 已開始行動 + 理智: + 藥: + 石: 已使用理智藥 已使用 48 小時內過期的理智藥 已使用源石