protected virtual void ChangeStateFromAttackToIdle(Action pOnFXFinished) { if (pOnFXFinished != null) { pOnFXFinished(); } Boolean flag = m_State.IsState(EState.ATTACK_RANGED); if (m_State.IsState(EState.ATTACK) || m_State.IsState(EState.ATTACK_RANGED)) { m_State.ChangeState(EState.IDLE); } else { Debug.LogError("Current state is not ATTACK and not ATTACKRANGED!", this); } if (MyController != null) { MyController.AttackingDone.Trigger(); if (MyController is Monster) { CheckForReflectedDamage(); m_reflectedMagicDamage.Clear(); ((Monster)MyController).AbilityHandler.FlushActionLog(EExecutionPhase.END_OF_MONSTERS_TURN); ((Monster)MyController).BuffHandler.FlushActionLog(MonsterBuffHandler.ELogEntryPhase.ON_END_TURN); DelayedEventManager.InvokeEvent(EDelayType.ON_FX_FINISH, (!flag) ? EEventType.MONSTER_ATTACKS : EEventType.MONSTER_ATTACKS_RANGED, (Monster)MyController, EventArgs.Empty); } } }
private void Update() { Single stateOverrun = m_state.CurrentStateTime + Time.deltaTime - m_state.CurrentStateDuration; m_state.Update(Time.deltaTime); if (m_state.IsState(EState.MOVING)) { Vector3 localPosition; Helper.Lerp(ref m_oldPosition, ref m_targetPosition, m_state.CurrentStateTimePer, out localPosition); transform.localPosition = localPosition; if (m_state.IsStateTimeout) { m_stateOverrun = stateOverrun; m_state.ChangeState(EState.IDLE); FXMainCamera.Instance.StopWalkFX(); if (MyController != null) { ((MovingEntity)MyController).MovementDone.Trigger(); } } } else { m_stateOverrun = 0f; if (m_state.IsState(EState.ROTATING)) { transform.localRotation = Quaternion.Lerp(m_oldRotation, m_targetRotation, m_state.CurrentStateTimePer); if (m_state.IsStateTimeout) { m_state.ChangeState(EState.IDLE); FXMainCamera.Instance.StopWalkFX(); if (MyController != null) { ((MovingEntity)MyController).RotationDone.Trigger(); } } } } HandleDelayedSound(); }
private void OnCloseKeyPressed(Object p_sender, HotkeyEventArgs p_args) { if (p_args.KeyDown && m_state.IsState(EState.ACTIVE)) { if (m_currentAudioRequest != null) { m_currentAudioRequest.AbortLoad(); } if (m_currentAudio != null) { m_currentAudio.Stop(); } m_state.ChangeState(EState.FADEOUT); } }
public virtual Boolean IsFinished() { return(m_stateMachine.IsState(EState.FINISHED)); }