2023-08-22 19:08:45 +08:00
|
|
|
using LTGame;
|
|
|
|
|
namespace Gameplay.Vehicle
|
|
|
|
|
{
|
|
|
|
|
public class BatteryStateReload: BaseBaterryState
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private float _reloadTime;
|
|
|
|
|
|
|
|
|
|
public BatteryStateReload(BaseBattery owner) : base(owner, EBatteryState.Reload)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void _OnEnter(NBaseState exitState,
|
|
|
|
|
object param)
|
|
|
|
|
{
|
|
|
|
|
base._OnEnter(exitState, param);
|
|
|
|
|
|
|
|
|
|
_reloadTime = owner.owner.fightData.reloadTime;
|
2024-10-22 18:11:17 +08:00
|
|
|
_reloadTime = _reloadTime > 0 ? _reloadTime : 0.01f;
|
2024-10-22 15:48:46 +08:00
|
|
|
owner.owner.statusData.isReloading = true;
|
2024-10-22 18:11:17 +08:00
|
|
|
owner.owner.statusData.reloadProgress = 0;
|
2023-08-22 19:08:45 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void _OnRunning()
|
|
|
|
|
{
|
|
|
|
|
base._OnRunning();
|
|
|
|
|
|
|
|
|
|
var targetEnemy = owner.owner.controlData.targetEnemy;
|
|
|
|
|
if (targetEnemy == null)
|
|
|
|
|
{
|
|
|
|
|
targetEnemy = owner.owner.controlData.followUnit;
|
|
|
|
|
}
|
|
|
|
|
owner.RotateTower(targetEnemy, deltaTime);
|
2024-10-22 18:11:17 +08:00
|
|
|
|
|
|
|
|
var progress = passTime / _reloadTime;
|
|
|
|
|
owner.owner.statusData.reloadProgress = progress;
|
|
|
|
|
if (progress >= 1)
|
2023-08-22 19:08:45 +08:00
|
|
|
{
|
2023-10-19 15:00:19 +08:00
|
|
|
owner.remainBulletCount = owner.owner.fightData.maxBulletCount;
|
2023-08-22 19:08:45 +08:00
|
|
|
isFinished = true;
|
|
|
|
|
nextState = EBatteryState.Idle;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-22 15:48:46 +08:00
|
|
|
protected override void _OnExit(NBaseState exitState,
|
|
|
|
|
object param)
|
|
|
|
|
{
|
|
|
|
|
base._OnExit(exitState, param);
|
|
|
|
|
owner.owner.statusData.isReloading = false;
|
|
|
|
|
}
|
|
|
|
|
|
2023-08-22 19:08:45 +08:00
|
|
|
}
|
|
|
|
|
}
|