using System.Collections.Generic;
using BetterGenshinImpact.GameTask.AutoFight.Model;
using BetterGenshinImpact.Model;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
using BetterGenshinImpact.GameTask.AutoPathing.Suspend;
using BetterGenshinImpact.GameTask.Common.Job;
using OpenCvSharp;
using Wpf.Ui.Controls;
using static BetterGenshinImpact.GameTask.Common.TaskControl;
namespace BetterGenshinImpact.GameTask;
///
/// 使用 TaskRunner 运行任务时的上下文
///
public class RunnerContext : Singleton
{
///
/// 是否是连续执行配置组的场景
///
public bool IsContinuousRunGroup { get; set; }
///
/// 暂停逻辑
///
public bool IsSuspend { get; set; }
///
/// 暂停实现
///
public Dictionary SuspendableDictionary = new();
///
/// 当前使用队伍名称
/// 游戏内定义的队伍名称
///
public string? PartyName { get; set; }
///
/// 当前队伍角色信息
///
private CombatScenes? _combatScenes;
public async Task GetCombatScenes(CancellationToken ct)
{
if (_combatScenes == null)
{
// 返回主界面再识别
var returnMainUiTask = new ReturnMainUiTask();
await returnMainUiTask.Start(ct);
await Delay(200, ct);
_combatScenes = new CombatScenes().InitializeTeam(CaptureToRectArea());
if (!_combatScenes.CheckTeamInitialized())
{
Logger.LogError("队伍角色识别失败");
_combatScenes = null;
}
}
return _combatScenes;
}
public void ClearCombatScenes()
{
_combatScenes = null;
}
///
/// 任务结束后的清理
///
public void Clear()
{
// 连续执行配置组的情况下,不清理当前队伍
if (!IsContinuousRunGroup)
{
PartyName = null;
}
_combatScenes = null;
IsSuspend = false;
SuspendableDictionary.Clear();
}
///
/// 彻底恢复到初始状态
///
public void Reset()
{
IsContinuousRunGroup = false;
PartyName = null;
_combatScenes = null;
IsSuspend = false;
SuspendableDictionary.Clear();
}
}