Files
better-genshin-impact/BetterGenshinImpact/Core/Script/Group/ScriptGroup.cs
mfkvfhpdx 468a54e037 执行调度器任务增加继续执行功能 (#1658)
* 完全跳过的配置组,不发送通知。给周期配置增加说明。

* 启动参数增加 --no-single ,允许多开,实现特殊需求(重启需要)。增加了一个重启bgi的方法。增加了任务进度的功能,执行调度器任务时,会记录当前任务执行位置,当关闭后(比如F11),下次可以通过继续菜单,选择记录,从上次关闭任务处执行。

* 调整继续执行,最后一次成功的下一个任务执行

* 设置,其他设置,增加了调度器任务,遇到异常时,连续累计一定次数时,重启BGI,和可配置的重启游戏。

* 连续任务支持循环,右键支持从连续的某一个任务开始执行。修改了一些配置变量的写法,使之不会保存到json文件中。
2025-06-02 00:03:26 +08:00

70 lines
1.8 KiB
C#

using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using BetterGenshinImpact.Service;
using CommunityToolkit.Mvvm.ComponentModel;
using Newtonsoft.Json;
using JsonSerializer = System.Text.Json.JsonSerializer;
namespace BetterGenshinImpact.Core.Script.Group;
/// <summary>
/// 调度器 配置组
/// </summary>
public partial class ScriptGroup : ObservableObject
{
public int Index { get; set; }
[ObservableProperty]
private string _name = string.Empty;
[ObservableProperty]
private ScriptGroupConfig _config = new();
[ObservableProperty]
private ObservableCollection<ScriptGroupProject> _projects = [];
[System.Text.Json.Serialization.JsonIgnore]
public bool NextFlag
{
get => _nextFlag;
set => SetProperty(ref _nextFlag, value);
}
private bool _nextFlag;
public ScriptGroup()
{
Projects.CollectionChanged += ProjectsCollectionChanged;
}
private void ProjectsCollectionChanged(object? sender, NotifyCollectionChangedEventArgs e)
{
OnPropertyChanged(nameof(Projects));
}
public string ToJson()
{
return JsonSerializer.Serialize(this, ConfigService.JsonOptions);
}
public static ScriptGroup FromJson(string json)
{
var group = JsonConvert.DeserializeObject<ScriptGroup>(json) ?? throw new Exception("解析配置组JSON配置失败");
ResetGroupInfo(group);
return group;
}
public static void ResetGroupInfo(ScriptGroup group)
{
foreach (var project in group.Projects)
{
project.GroupInfo = group;
}
}
public void AddProject(ScriptGroupProject project)
{
project.GroupInfo = this;
Projects.Add(project);
}
}