using UnityEngine;
///
/// 模拟输入源(测试用),提供预设的输入序列
///
public class SimulatedInputSource : IInputSource
{
private readonly (float turn, float throttle)[] _inputSequence;
private int _index;
private Vector3 _lastAimDirection = Vector3.forward;
private bool _shootTriggered;
public SimulatedInputSource((float turn, float throttle)[] sequence)
{
_inputSequence = sequence;
_index = 0;
}
public Vector3 GetPlanarInput()
{
if (_index >= _inputSequence.Length)
{
return Vector3.zero;
}
var (turn, throttle) = _inputSequence[_index];
return new Vector3(turn, 0f, throttle);
}
public bool ConsumeShootInput()
{
if (_shootTriggered)
{
_shootTriggered = false;
return true;
}
return false;
}
public Vector3 GetAimDirection()
{
return _lastAimDirection;
}
///
/// 推进到下一个输入
///
public void Advance()
{
if (_index < _inputSequence.Length)
{
_index++;
}
}
///
/// 是否还有更多输入
///
public bool HasMore => _index < _inputSequence.Length;
///
/// 设置射击触发(下次 ConsumeShootInput 返回 true)
///
public void SetShootTriggered()
{
_shootTriggered = true;
}
///
/// 设置瞄准方向
///
public void SetAimDirection(Vector3 direction)
{
_lastAimDirection = direction;
}
///
/// 获取当前输入索引
///
public int CurrentIndex => _index;
}