using Gameplay.Vehicle.Impl; using LTGame; namespace Gameplay.Vehicle.State { public class VehicleStateIdle: BaseVehicleState { private int _loopAudioId; public VehicleStateIdle(NormalVehicle owner) : base(owner, EVehicleState.Idle) { } protected override void _OnEnter(NBaseState exitState, object param) { base._OnEnter(exitState, param); owner.vAnim.targetAnim = "idle"; _PlayAudio(); } private void _PlayAudio() { _loopAudioId = -1; if (string.IsNullOrEmpty(owner.configData.audioData.IdleLoopAudioId)) { return; } _loopAudioId = AudioManager.Instance.PlayAudio(owner.configData.audioData.IdleLoopAudioId, AudioCriManager.EPlayType.Sound, owner.Node.GameObject, true); } protected override void _OnRunning() { base._OnRunning(); if (owner.aliveData.currentHp <= 0) { isFinished = true; nextState = EVehicleState.Destroy; return; } if (owner.controlData.targetCellIndex != -1) { isFinished = true; nextState = EVehicleState.Move; return; } } protected override void _OnExit(NBaseState exitState, object param) { base._OnExit(exitState, param); if (_loopAudioId != 0) { AudioManager.Instance.StopSoundById(_loopAudioId); } } } }