diff --git a/src/MaaWpfGui/Helper/AchievementTrackerHelper.cs b/src/MaaWpfGui/Helper/AchievementTrackerHelper.cs
index 9a229cbd12..5d1203fb5a 100644
--- a/src/MaaWpfGui/Helper/AchievementTrackerHelper.cs
+++ b/src/MaaWpfGui/Helper/AchievementTrackerHelper.cs
@@ -15,6 +15,7 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Input;
@@ -24,6 +25,8 @@ using HandyControl.Tools.Command;
using MaaWpfGui.Constants;
using MaaWpfGui.Extensions;
using MaaWpfGui.Models;
+using MaaWpfGui.ViewModels.UI;
+using MaaWpfGui.ViewModels.UserControl.Settings;
using Newtonsoft.Json.Linq;
using Stylet;
using static MaaWpfGui.Constants.Enums;
@@ -543,5 +546,61 @@ namespace MaaWpfGui.Helper
}
#endregion
+
+ public static class Events
+ {
+ ///
+ /// 启动时触发成就
+ ///
+ public static void Startup()
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.FirstLaunch);
+ if ((DateTime.UtcNow - VersionUpdateSettingsUserControlModel.BuildDateTime).TotalDays > 90 ||
+ (DateTime.UtcNow - SettingsViewModel.VersionUpdateSettings.ResourceDateTime).TotalDays > 90)
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.Martian);
+ }
+
+ if (Instances.VersionUpdateViewModel.IsDebugVersion())
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.Pioneer3);
+ }
+ else if (Instances.VersionUpdateViewModel.IsBetaVersion())
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.Pioneer1);
+ }
+ else if (!Instances.VersionUpdateViewModel.IsStdVersion()) // 内测版要传入 SemVersion 判断,这里就取反判断了
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.Pioneer2);
+ }
+
+ // 0.066% 概率触发
+ if (new Random().NextDouble() < 0.00066)
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.Lucky);
+ }
+
+ var now = DateTime.Now;
+
+ // 0~4 点启动
+ if (now.Hour is >= 0 and < 4)
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.MidnightLaunch);
+ }
+
+ // 愚人节启动
+ if (now is { Month: 4, Day: 1 })
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.AprilFools);
+ }
+
+ // 春节
+ ChineseLunisolarCalendar chineseCalendar = new();
+ if (chineseCalendar.GetMonth(now) == 1 && chineseCalendar.GetDayOfMonth(now) == 1)
+ {
+ AchievementTrackerHelper.Instance.Unlock(AchievementIds.LunarNewYear);
+ }
+ }
+ }
}
}
diff --git a/src/MaaWpfGui/Main/Bootstrapper.cs b/src/MaaWpfGui/Main/Bootstrapper.cs
index 3f81156ade..753cc58785 100644
--- a/src/MaaWpfGui/Main/Bootstrapper.cs
+++ b/src/MaaWpfGui/Main/Bootstrapper.cs
@@ -14,7 +14,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
-using System.Globalization;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
@@ -28,7 +27,6 @@ using System.Windows.Media;
using System.Windows.Threading;
using GlobalHotKey;
using MaaWpfGui.Configuration.Factory;
-using MaaWpfGui.Constants;
using MaaWpfGui.Helper;
using MaaWpfGui.Properties;
using MaaWpfGui.Services;
@@ -39,7 +37,6 @@ using MaaWpfGui.Services.Web;
using MaaWpfGui.States;
using MaaWpfGui.Utilities;
using MaaWpfGui.ViewModels.UI;
-using MaaWpfGui.ViewModels.UserControl.Settings;
using MaaWpfGui.Views.UI;
using MaaWpfGui.WineCompat;
using Serilog;
@@ -323,53 +320,7 @@ namespace MaaWpfGui.Main
return;
}
- // 以下是成就解锁逻辑
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.FirstLaunch);
- if ((DateTime.UtcNow - VersionUpdateSettingsUserControlModel.BuildDateTime).TotalDays > 90 ||
- (DateTime.UtcNow - SettingsViewModel.VersionUpdateSettings.ResourceDateTime).TotalDays > 90)
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.Martian);
- }
-
- if (Instances.VersionUpdateViewModel.IsDebugVersion())
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.Pioneer3);
- }
- else if (Instances.VersionUpdateViewModel.IsBetaVersion())
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.Pioneer1);
- }
- else if (!Instances.VersionUpdateViewModel.IsStdVersion()) // 内测版要传入 SemVersion 判断,这里就取反判断了
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.Pioneer2);
- }
-
- // 0.066% 概率触发
- if (new Random().NextDouble() < 0.00066)
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.Lucky);
- }
-
- var now = DateTime.Now;
-
- // 0~4 点启动
- if (now.Hour is >= 0 and < 4)
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.MidnightLaunch);
- }
-
- // 愚人节启动
- if (now is { Month: 4, Day: 1 })
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.AprilFools);
- }
-
- // 春节
- ChineseLunisolarCalendar chineseCalendar = new();
- if (chineseCalendar.GetMonth(now) == 1 && chineseCalendar.GetDayOfMonth(now) == 1)
- {
- AchievementTrackerHelper.Instance.Unlock(AchievementIds.LunarNewYear);
- }
+ AchievementTrackerHelper.Events.Startup();
}
///