using BetterGenshinImpact.GameTask; using BetterGenshinImpact.GameTask.AutoCook; using BetterGenshinImpact.GameTask.AutoDomain; using BetterGenshinImpact.GameTask.AutoFight; using BetterGenshinImpact.GameTask.AutoFishing; using BetterGenshinImpact.GameTask.AutoGeniusInvokation; using BetterGenshinImpact.GameTask.AutoPick; using BetterGenshinImpact.GameTask.AutoSkip; using BetterGenshinImpact.GameTask.AutoWood; using BetterGenshinImpact.GameTask.QuickTeleport; using BetterGenshinImpact.Service.Notification; using CommunityToolkit.Mvvm.ComponentModel; using Fischless.GameCapture; using System; using System.Collections.Generic; using System.ComponentModel; using System.Text.Json.Serialization; using System.Threading.Tasks; namespace BetterGenshinImpact.Core.Config; /// /// 更好的原神配置 /// [Serializable] public partial class AllConfig : ObservableObject { /// /// 窗口捕获的方式 /// [ObservableProperty] private string _captureMode = CaptureModes.BitBlt.ToString(); /// /// 详细的错误日志 /// [ObservableProperty] private bool _detailedErrorLogs; /// /// 不展示新版本提示的最新版本 /// [ObservableProperty] private string _notShowNewVersionNoticeEndVersion = ""; /// /// 触发器触发频率(ms) /// [ObservableProperty] private int _triggerInterval = 50; /// /// WGC使用位图缓存 /// 高帧率情况下,可能会导致卡顿 /// 云原神可能会出现黑屏 /// [ObservableProperty] private bool _wgcUseBitmapCache = true; /// /// 自动修复Win11下BitBlt截图方式不可用的问题 /// [ObservableProperty] private bool _autoFixWin11BitBlt = true; /// /// 推理使用的设备 /// [ObservableProperty] private string _inferenceDevice = "CPU"; [ObservableProperty] private List> _nextScheduledTask = []; /// /// 一条龙选中使用的配置 /// [ObservableProperty] private string _selectedOneDragonFlowConfigName = string.Empty; /// /// 遮罩窗口配置 /// public MaskWindowConfig MaskWindowConfig { get; set; } = new(); /// /// 通用配置 /// public CommonConfig CommonConfig { get; set; } = new(); /// /// 原神启动配置 /// public GenshinStartConfig GenshinStartConfig { get; set; } = new(); /// /// 自动拾取配置 /// public AutoPickConfig AutoPickConfig { get; set; } = new(); /// /// 自动剧情配置 /// public AutoSkipConfig AutoSkipConfig { get; set; } = new(); /// /// 自动钓鱼配置 /// public AutoFishingConfig AutoFishingConfig { get; set; } = new(); /// /// 快速传送配置 /// public QuickTeleportConfig QuickTeleportConfig { get; set; } = new(); /// /// 自动烹饪配置 /// public AutoCookConfig AutoCookConfig { get; set; } = new(); /// /// 自动打牌配置 /// public AutoGeniusInvokationConfig AutoGeniusInvokationConfig { get; set; } = new(); /// /// 自动伐木配置 /// public AutoWoodConfig AutoWoodConfig { get; set; } = new(); /// /// 自动战斗配置 /// public AutoFightConfig AutoFightConfig { get; set; } = new(); /// /// 自动秘境配置 /// public AutoDomainConfig AutoDomainConfig { get; set; } = new(); /// /// 宏配置 /// public MacroConfig MacroConfig { get; set; } = new(); public RecordConfig RecordConfig { get; set; } = new(); /// /// 脚本配置 /// public ScriptConfig ScriptConfig { get; set; } = new(); /// /// 路径追踪配置 /// public PathingConditionConfig PathingConditionConfig { get; set; } = PathingConditionConfig.Default; /// /// 快捷键配置 /// public HotKeyConfig HotKeyConfig { get; set; } = new(); /// /// 通知配置 /// public NotificationConfig NotificationConfig { get; set; } = new(); [JsonIgnore] public Action? OnAnyChangedAction { get; set; } public void InitEvent() { PropertyChanged += OnAnyPropertyChanged; MaskWindowConfig.PropertyChanged += OnAnyPropertyChanged; CommonConfig.PropertyChanged += OnAnyPropertyChanged; GenshinStartConfig.PropertyChanged += OnAnyPropertyChanged; NotificationConfig.PropertyChanged += OnAnyPropertyChanged; NotificationConfig.PropertyChanged += OnNotificationPropertyChanged; AutoPickConfig.PropertyChanged += OnAnyPropertyChanged; AutoSkipConfig.PropertyChanged += OnAnyPropertyChanged; AutoFishingConfig.PropertyChanged += OnAnyPropertyChanged; QuickTeleportConfig.PropertyChanged += OnAnyPropertyChanged; AutoCookConfig.PropertyChanged += OnAnyPropertyChanged; MacroConfig.PropertyChanged += OnAnyPropertyChanged; HotKeyConfig.PropertyChanged += OnAnyPropertyChanged; AutoWoodConfig.PropertyChanged += OnAnyPropertyChanged; AutoFightConfig.PropertyChanged += OnAnyPropertyChanged; AutoDomainConfig.PropertyChanged += OnAnyPropertyChanged; ScriptConfig.PropertyChanged += OnAnyPropertyChanged; PathingConditionConfig.PropertyChanged += OnAnyPropertyChanged; } public void OnAnyPropertyChanged(object? sender, EventArgs args) { GameTaskManager.RefreshTriggerConfigs(); OnAnyChangedAction?.Invoke(); } public void OnNotificationPropertyChanged(object? sender, PropertyChangedEventArgs args) { NotificationService.Instance().RefreshNotifiers(); } }