mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 02:10:21 +08:00
fix: 临期理智药使用输出遗漏时间
This commit is contained in:
@@ -59,7 +59,7 @@ using AsstInstanceOptionKey = System.Int32;
|
||||
|
||||
using AsstTaskId = System.Int32;
|
||||
|
||||
using FightTask = MaaWpfGui.ViewModels.UserControl.TaskQueue.FightSettingsUserControlModel;
|
||||
using FightSetting = MaaWpfGui.ViewModels.UserControl.TaskQueue.FightSettingsUserControlModel;
|
||||
using ToastNotification = MaaWpfGui.Helper.ToastNotification;
|
||||
|
||||
namespace MaaWpfGui.Main;
|
||||
@@ -999,10 +999,10 @@ public class AsstProxy
|
||||
|
||||
private void OnToastNotificationTimerTick(object? sender, EventArgs e)
|
||||
{
|
||||
if (FightTask.SanityReport is not null)
|
||||
if (FightSetting.SanityReport is not null)
|
||||
{
|
||||
var sanityReport = LocalizationHelper.GetString("SanityReport");
|
||||
var recoveryTime = FightTask.SanityReport.ReportTime.AddMinutes(FightTask.SanityReport.SanityCurrent < FightTask.SanityReport.SanityMax ? (FightTask.SanityReport.SanityMax - FightTask.SanityReport.SanityCurrent) * 6 : 0);
|
||||
var recoveryTime = FightSetting.SanityReport.ReportTime.AddMinutes(FightSetting.SanityReport.SanityCurrent < FightSetting.SanityReport.SanityMax ? (FightSetting.SanityReport.SanityMax - FightSetting.SanityReport.SanityCurrent) * 6 : 0);
|
||||
sanityReport = sanityReport.Replace("{DateTime}", recoveryTime.ToString("yyyy-MM-dd HH:mm")).Replace("{TimeDiff}", (recoveryTime - DateTimeOffset.Now).ToString(@"h\h\ m\m"));
|
||||
ToastNotification.ShowDirect(sanityReport);
|
||||
}
|
||||
@@ -1125,12 +1125,12 @@ public class AsstProxy
|
||||
}
|
||||
|
||||
var taskName = task?.NameDisplay ?? $"({LocalizationHelper.GetString(taskChain)})";
|
||||
if (taskChain == "Fight" && FightTask.SanityReport is not null)
|
||||
if (taskChain == "Fight" && FightSetting.SanityReport is not null)
|
||||
{
|
||||
var sanityLog = "\n" + string.Format(LocalizationHelper.GetString("CurrentSanity"), FightTask.SanityReport.SanityCurrent, FightTask.SanityReport.SanityMax);
|
||||
var sanityLog = "\n" + string.Format(LocalizationHelper.GetString("CurrentSanity"), FightSetting.SanityReport.SanityCurrent, FightSetting.SanityReport.SanityMax);
|
||||
Instances.TaskQueueViewModel.AddLog(LocalizationHelper.GetString("CompleteTask") + taskName + sanityLog);
|
||||
|
||||
if (FightTask.SanityReport.SanityCurrent == 0)
|
||||
if (FightSetting.SanityReport.SanityCurrent == 0)
|
||||
{
|
||||
AchievementTrackerHelper.Instance.Unlock(AchievementIds.SanityPlanner);
|
||||
}
|
||||
@@ -1219,9 +1219,9 @@ public class AsstProxy
|
||||
|
||||
var allTaskCompleteLog = string.Format(LocalizationHelper.GetString("AllTasksComplete"), diffTaskTime);
|
||||
|
||||
if (FightTask.SanityReport is not null)
|
||||
if (FightSetting.SanityReport is not null)
|
||||
{
|
||||
var recoveryTime = FightTask.SanityReport.ReportTime.AddMinutes(FightTask.SanityReport.SanityCurrent < FightTask.SanityReport.SanityMax ? (FightTask.SanityReport.SanityMax - FightTask.SanityReport.SanityCurrent) * 6 : 0);
|
||||
var recoveryTime = FightSetting.SanityReport.ReportTime.AddMinutes(FightSetting.SanityReport.SanityCurrent < FightSetting.SanityReport.SanityMax ? (FightSetting.SanityReport.SanityMax - FightSetting.SanityReport.SanityCurrent) * 6 : 0);
|
||||
sanityReport = sanityReport.Replace("{DateTime}", recoveryTime.ToString("yyyy-MM-dd HH:mm")).Replace("{TimeDiff}", (recoveryTime - DateTimeOffset.Now).ToString(@"h\h\ m\m"));
|
||||
|
||||
allTaskCompleteLog = allTaskCompleteLog + Environment.NewLine + sanityReport;
|
||||
@@ -1269,7 +1269,7 @@ public class AsstProxy
|
||||
|
||||
using (var toast = new ToastNotification(allTaskCompleteTitle))
|
||||
{
|
||||
if (FightTask.SanityReport is not null)
|
||||
if (FightSetting.SanityReport is not null)
|
||||
{
|
||||
toast.AppendContentText(sanityReport);
|
||||
}
|
||||
@@ -1524,19 +1524,19 @@ public class AsstProxy
|
||||
case "StartButton2":
|
||||
case "AnnihilationConfirm":
|
||||
StringBuilder missionStartLogBuilder = new();
|
||||
if (FightTask.FightReport is null)
|
||||
if (FightSetting.FightReport is null)
|
||||
{
|
||||
missionStartLogBuilder.AppendLine(string.Format(LocalizationHelper.GetString("MissionStart.FightTask"), "???", "???"));
|
||||
}
|
||||
else
|
||||
{
|
||||
var times = FightTask.FightReport.Series == 1 ? $"{FightTask.FightReport.TimesFinished + 1}" : $"{FightTask.FightReport.TimesFinished + 1}~{FightTask.FightReport.TimesFinished + FightTask.FightReport.Series}";
|
||||
missionStartLogBuilder.AppendLine(string.Format(LocalizationHelper.GetString("MissionStart.FightTask"), times, FightTask.FightReport.SanityCost));
|
||||
var times = FightSetting.FightReport.Series == 1 ? $"{FightSetting.FightReport.TimesFinished + 1}" : $"{FightSetting.FightReport.TimesFinished + 1}~{FightSetting.FightReport.TimesFinished + FightSetting.FightReport.Series}";
|
||||
missionStartLogBuilder.AppendLine(string.Format(LocalizationHelper.GetString("MissionStart.FightTask"), times, FightSetting.FightReport.SanityCost));
|
||||
}
|
||||
|
||||
if (FightTask.SanityReport is not null)
|
||||
if (FightSetting.SanityReport is not null)
|
||||
{
|
||||
missionStartLogBuilder.AppendFormat(LocalizationHelper.GetString("CurrentSanity"), FightTask.SanityReport.SanityCurrent, FightTask.SanityReport.SanityMax);
|
||||
missionStartLogBuilder.AppendFormat(LocalizationHelper.GetString("CurrentSanity"), FightSetting.SanityReport.SanityCurrent, FightSetting.SanityReport.SanityMax);
|
||||
}
|
||||
|
||||
if (ExpiringMedicineUsedTimes > 0)
|
||||
@@ -2215,10 +2215,10 @@ public class AsstProxy
|
||||
|
||||
case "SanityBeforeStage":
|
||||
{
|
||||
FightTask.SanityReport = null;
|
||||
FightSetting.SanityReport = null;
|
||||
if (subTaskDetails?.ToObject<FightSettingsUserControlModel.SanityInfo>() is { SanityMax: > 0 } report)
|
||||
{
|
||||
FightTask.SanityReport = report;
|
||||
FightSetting.SanityReport = report;
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -2226,18 +2226,18 @@ public class AsstProxy
|
||||
|
||||
case "FightTimes":
|
||||
{
|
||||
FightTask.FightReport = null;
|
||||
FightSetting.FightReport = null;
|
||||
if ((subTaskDetails?.Children())?.Any() is true)
|
||||
{
|
||||
FightTask.FightReport = subTaskDetails.ToObject<FightTask.FightTimes>()!;
|
||||
if (FightTask.FightReport.TimesFinished > 0)
|
||||
FightSetting.FightReport = subTaskDetails.ToObject<FightSetting.FightTimes>()!;
|
||||
if (FightSetting.FightReport.TimesFinished > 0)
|
||||
{
|
||||
AchievementTrackerHelper.Instance.SetProgress(AchievementIds.OverLimitAgent, FightTask.FightReport.TimesFinished);
|
||||
AchievementTrackerHelper.Instance.SetProgress(AchievementIds.OverLimitAgent, FightSetting.FightReport.TimesFinished);
|
||||
}
|
||||
|
||||
if (FightTask.Instance.HasTimesLimited != false && FightTask.FightReport.IsFinished && FightTask.FightReport.TimesFinished < FightTask.Instance.MaxTimes)
|
||||
if (FightSetting.Instance.HasTimesLimited != false && FightSetting.FightReport.IsFinished && FightSetting.FightReport.TimesFinished < FightSetting.Instance.MaxTimes)
|
||||
{
|
||||
Instances.TaskQueueViewModel.AddLog(string.Format(LocalizationHelper.GetString("FightTimesUnused"), FightTask.FightReport.TimesFinished, FightTask.FightReport.Series, FightTask.FightReport.TimesFinished + FightTask.FightReport.Series, FightTask.Instance.MaxTimes), UiLogColor.Warning);
|
||||
Instances.TaskQueueViewModel.AddLog(string.Format(LocalizationHelper.GetString("FightTimesUnused"), FightSetting.FightReport.TimesFinished, FightSetting.FightReport.Series, FightSetting.FightReport.TimesFinished + FightSetting.FightReport.Series, FightSetting.Instance.MaxTimes), UiLogColor.Warning);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2270,7 +2270,19 @@ public class AsstProxy
|
||||
else
|
||||
{
|
||||
ExpiringMedicineUsedTimes += medicineCount;
|
||||
medicineLog = LocalizationHelper.GetString("ExpiringMedicineUsed") + $" {ExpiringMedicineUsedTimes}(+{medicineCount})";
|
||||
var item = Instances.TaskQueueViewModel.TaskItemViewModels.FirstOrDefault(i => i.TaskIds.Contains(taskId));
|
||||
var expireDay = "--";
|
||||
if (item is not null && item.Index >= 0 && item.Index < ConfigFactory.CurrentConfig.TaskQueue.Count)
|
||||
{
|
||||
if (ConfigFactory.CurrentConfig.TaskQueue[item.Index] is FightTask fightTask)
|
||||
{
|
||||
var yjTime = DateTimeOffset.Now.ToYjDateTime().ToLocalTime();
|
||||
var daysUntilEndOfWeek = ((7 - (int)yjTime.DayOfWeek + 7) % 7) + 1; // 距离本周结束的天数, 用鹰历计算
|
||||
var expireDays = Math.Max(fightTask.UseExpiringMedicine ? fightTask.MedicineExpireDays : 0, FightSetting.Instance.ActivityExpireIn2Days && fightTask.UseExpireMedicineForActivity ? daysUntilEndOfWeek : 0);
|
||||
expireDay = $"{expireDays * 24}";
|
||||
}
|
||||
}
|
||||
medicineLog = LocalizationHelper.GetStringFormat("ExpiringMedicineUsed", expireDay) + $" {ExpiringMedicineUsedTimes}(+{medicineCount})";
|
||||
AchievementTrackerHelper.Instance.AddProgressToGroup(AchievementIds.SanitySaverGroup, medicineCount);
|
||||
AchievementTrackerHelper.Instance.SetProgress(AchievementIds.SanityExpire, ExpiringMedicineUsedTimes);
|
||||
}
|
||||
|
||||
@@ -1151,7 +1151,7 @@ Right-click to clear inactive jobs</system:String>
|
||||
<system:String x:Key="MedicineUsedTimesWithExpiring" xml:space="preserve">Medicine: {0},{1}(Expiring) </system:String>
|
||||
<system:String x:Key="StoneUsedTimes" xml:space="preserve">Stone: {0} </system:String>
|
||||
<system:String x:Key="MedicineUsed">Medicine used</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">Expiring medicine used</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">Expiring medicine (in {0} hours) used</system:String>
|
||||
<system:String x:Key="StoneUsed">Originite Prime used</system:String>
|
||||
<system:String x:Key="ActingCommandError">PRTS error</system:String>
|
||||
<system:String x:Key="FightMissionFailedAndStop">Proxy failed too many times, task stopped</system:String>
|
||||
|
||||
@@ -1152,7 +1152,7 @@ C:\\leidian\\LDPlayer9
|
||||
<system:String x:Key="MedicineUsedTimesWithExpiring" xml:space="preserve">薬: {0},{1}(期限切れ) </system:String>
|
||||
<system:String x:Key="StoneUsedTimes" xml:space="preserve">石: {0} </system:String>
|
||||
<system:String x:Key="MedicineUsed">回復剤を使った</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">48時間以内に期限が切れる回復剤を使った</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">{0}時間以内に期限が切れる回復剤を使った</system:String>
|
||||
<system:String x:Key="StoneUsed">源石を使った</system:String>
|
||||
<system:String x:Key="ActingCommandError">自動指揮のミスが生じました</system:String>
|
||||
<system:String x:Key="FightMissionFailedAndStop">自動指揮の失敗回数が上限に達したため、任務が停止されました</system:String>
|
||||
|
||||
@@ -1153,7 +1153,7 @@ C:\\leidian\\LDPlayer9
|
||||
<system:String x:Key="MedicineUsedTimesWithExpiring" xml:space="preserve">\n이성 회복제: {0},{1}(만료 예정) </system:String>
|
||||
<system:String x:Key="StoneUsedTimes" xml:space="preserve">\n순오리지늄: {0} </system:String>
|
||||
<system:String x:Key="MedicineUsed">이성 회복제를 사용했습니다</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">48시간 이내 만료되는 이성 회복제를 사용했습니다</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">{0}시간 이내 만료되는 이성 회복제를 사용했습니다</system:String>
|
||||
<system:String x:Key="StoneUsed">순오리지늄을 사용했습니다</system:String>
|
||||
<system:String x:Key="ActingCommandError">대리 지휘 오류 발생</system:String>
|
||||
<system:String x:Key="FightMissionFailedAndStop">대리 지휘 실패 횟수 초과로 작업을 중단합니다</system:String>
|
||||
|
||||
@@ -1152,7 +1152,7 @@ C:\\leidian\\LDPlayer9。\n
|
||||
<system:String x:Key="MedicineUsedTimesWithExpiring" xml:space="preserve">药: {0},{1}(临期) </system:String>
|
||||
<system:String x:Key="StoneUsedTimes" xml:space="preserve">石: {0} </system:String>
|
||||
<system:String x:Key="MedicineUsed">已使用理智药</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">已使用 {0} 天内过期的理智药</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">已使用 {0} H内过期理智药</system:String>
|
||||
<system:String x:Key="StoneUsed">已使用源石</system:String>
|
||||
<system:String x:Key="ActingCommandError">代理指挥失误</system:String>
|
||||
<system:String x:Key="FightMissionFailedAndStop">代理失败次数已达上限,任务已停止</system:String>
|
||||
|
||||
@@ -1152,7 +1152,7 @@ C:\\leidian\\LDPlayer9\n
|
||||
<system:String x:Key="MedicineUsedTimesWithExpiring" xml:space="preserve">藥: {0},{1} (即將過期) </system:String>
|
||||
<system:String x:Key="StoneUsedTimes" xml:space="preserve">石: {0} </system:String>
|
||||
<system:String x:Key="MedicineUsed">已使用理智藥</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">已使用 48 小時內過期的理智藥</system:String>
|
||||
<system:String x:Key="ExpiringMedicineUsed">已使用 {0} 小時內過期的理智藥</system:String>
|
||||
<system:String x:Key="StoneUsed">已使用源石</system:String>
|
||||
<system:String x:Key="ActingCommandError">代理指揮失誤</system:String>
|
||||
<system:String x:Key="FightMissionFailedAndStop">代理失敗次數已達上限,任務已停止</system:String>
|
||||
|
||||
Reference in New Issue
Block a user