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; _reloadTime = _reloadTime > 0 ? _reloadTime : 0.01f; owner.owner.statusData.isReloading = true; owner.owner.statusData.reloadProgress = 0; } protected override void _OnRunning() { base._OnRunning(); var targetEnemy = owner.owner.controlData.targetEnemy; if (targetEnemy == null) { targetEnemy = owner.owner.controlData.followUnit; } owner.RotateTower(targetEnemy, deltaTime); var progress = passTime / _reloadTime; owner.owner.statusData.reloadProgress = progress; if (progress >= 1) { owner.remainBulletCount = owner.owner.fightData.maxBulletCount; isFinished = true; nextState = EBatteryState.Idle; } } protected override void _OnExit(NBaseState exitState, object param) { base._OnExit(exitState, param); owner.owner.statusData.isReloading = false; } } }