mirror of
https://github.com/babalae/better-genshin-impact.git
synced 2026-03-31 10:29:52 +08:00
54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using BetterGenshinImpact.Core.Simulator;
|
|
using BetterGenshinImpact.Core.Simulator.Extensions;
|
|
using BetterGenshinImpact.GameTask.AutoPathing.Model;
|
|
using BetterGenshinImpact.GameTask.Common.BgiVision;
|
|
using Microsoft.Extensions.Logging;
|
|
using static BetterGenshinImpact.GameTask.Common.TaskControl;
|
|
|
|
namespace BetterGenshinImpact.GameTask.AutoPathing.Handler;
|
|
|
|
public class StopFlyingHandler : IActionHandler
|
|
{
|
|
public async Task RunAsync(CancellationToken ct, WaypointForTrack? waypointForTrack = null, object? config = null)
|
|
{
|
|
// 如果有参数,先自由落体,然后恢复飞行
|
|
if (waypointForTrack != null
|
|
&& !string.IsNullOrEmpty(waypointForTrack.ActionParams)
|
|
&& int.TryParse(waypointForTrack.ActionParams, out var stopFlyingWaitTime))
|
|
{
|
|
Simulation.SendInput.SimulateAction(GIActions.Jump);
|
|
await Delay(stopFlyingWaitTime, ct);
|
|
Simulation.SendInput.SimulateAction(GIActions.Jump);
|
|
await Delay(300, ct);
|
|
}
|
|
|
|
// 下落攻击接近目的地
|
|
Logger.LogInformation("动作:下落攻击");
|
|
Simulation.SendInput.SimulateAction(GIActions.NormalAttack);
|
|
int i;
|
|
for (i = 0; i < 50; i++)
|
|
{
|
|
var screen = CaptureToRectArea();
|
|
var isFlying = Bv.GetMotionStatus(screen) == MotionStatus.Fly;
|
|
if (isFlying)
|
|
{
|
|
await Delay(300, ct);
|
|
}
|
|
else
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (i == 50)
|
|
{
|
|
Logger.LogWarning("动作:下落攻击 超时结束");
|
|
}
|
|
else
|
|
{
|
|
Logger.LogInformation("动作:下落攻击 结束");
|
|
}
|
|
}
|
|
} |