private void OnStateChanged(WizardFSMState.StateEnum state, EntityId target) { switch (state) { case WizardFSMState.StateEnum.IDLE: navigation.StopNavigation(); Idle(); StartCoroutines(); break; case WizardFSMState.StateEnum.MOVING_TO_TARGET: break; case WizardFSMState.StateEnum.MOVING_TO_POSITION: break; case WizardFSMState.StateEnum.ATTACKING_TARGET: TrySpellCast(target, SpellType.LIGHTNING); break; case WizardFSMState.StateEnum.DEFENDING_TARGET: TrySpellCast(target, SpellType.RAIN); break; case WizardFSMState.StateEnum.ON_FIRE: StopCoroutines(); navigation.StopNavigation(); NavigateToPosition(transform.position + (UnityEngine.Random.insideUnitSphere * SimulationSettings.OnFireWaypointDistance).FlattenVector()); break; } }
private void OnWizardComponentUpdate(NPCWizard.Update update) { if (update.currentState.HasValue) { cachedWizardFSMStateEnum = update.currentState.Value; OnStateChanged(cachedWizardFSMStateEnum, wizard.Data.targetEntity); } }
private void ChangeTo(WizardFSMState.StateEnum newState, EntityId targetEntityId) { if (wizard != null) { wizard.Send(new NPCWizard.Update() .SetCurrentState(newState) .SetTargetEntity(targetEntityId)); } }
private void SetAnimationState(WizardFSMState.StateEnum currentState) { if (currentState.Equals(WizardFSMState.StateEnum.ATTACKING_TARGET) || currentState.Equals(WizardFSMState.StateEnum.DEFENDING_TARGET)) { anim.SetTrigger("Casting"); CastAnim.Play(); } else { CastAnim.Stop(); } }
public void ChangeTo(WizardFSMState.StateEnum newState) { ChangeTo(newState, EntityId.InvalidEntityId); }
private IEnumerator ChangeAfter(WizardFSMState.StateEnum newState, float playerCastAnimationTime) { yield return(new WaitForSeconds(playerCastAnimationTime)); ChangeTo(newState); }