using System;
using BetterGenshinImpact.GameTask.AutoPathing;
using BetterGenshinImpact.GameTask.AutoPathing.Model;
using System.Threading.Tasks;
using BetterGenshinImpact.Core.Config;
using BetterGenshinImpact.GameTask.Common;
using Microsoft.Extensions.Logging;
namespace BetterGenshinImpact.Core.Script.Dependence;
public class AutoPathingScript
{
private object? _config = null;
private string _rootPath;
public AutoPathingScript(string rootPath, object? config)
{
_config = config;
_rootPath = rootPath;
}
public async Task Run(string json)
{
try
{
var task = PathingTask.BuildFromJson(json);
var pathExecutor = new PathExecutor(CancellationContext.Instance.Cts.Token);
if (_config != null && _config is PathingPartyConfig patyConfig)
{
pathExecutor.PartyConfig = patyConfig;
}
await pathExecutor.Pathing(task);
}
catch (Exception e)
{
TaskControl.Logger.LogDebug(e,"执行地图追踪时候发生错误");
TaskControl.Logger.LogError("执行地图追踪时候发生错误: {Msg}",e.Message);
}
}
public async Task RunFile(string path)
{
try
{
var json = await new LimitedFile(_rootPath).ReadText(path);
await Run(json);
}
catch (Exception e)
{
TaskControl.Logger.LogDebug(e,"读取文件时发生错误");
TaskControl.Logger.LogError("读取文件时发生错误: {Msg}",e.Message);
}
}
///
/// 从已订阅的内容中获取文件
///
/// 在 `\User\AutoPathing` 目录下获取文件
public async Task RunFileFromUser(string path)
{
var json = await new LimitedFile(Global.Absolute(@"User\AutoPathing")).ReadText(path);
await Run(json);
}
}