mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-19 08:19:48 +08:00
* 完全跳过的配置组,不发送通知。给周期配置增加说明。 * 启动参数增加 --no-single ,允许多开,实现特殊需求(重启需要)。增加了一个重启bgi的方法。增加了任务进度的功能,执行调度器任务时,会记录当前任务执行位置,当关闭后(比如F11),下次可以通过继续菜单,选择记录,从上次关闭任务处执行。 * 调整继续执行,最后一次成功的下一个任务执行 * 设置,其他设置,增加了调度器任务,遇到异常时,连续累计一定次数时,重启BGI,和可配置的重启游戏。 * 连续任务支持循环,右键支持从连续的某一个任务开始执行。修改了一些配置变量的写法,使之不会保存到json文件中。
70 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|