Exemplo n.º 1
0
        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 OnChangeState(LumberjackFSMState.StateEnum newState, EntityId targetEntityId)
        {
            StopAllCoroutines();

            switch (newState)
            {
            case LumberjackFSMState.StateEnum.IDLE:
                navigation.StopNavigation();
                DecideWhereToMove();
                break;

            case LumberjackFSMState.StateEnum.MOVING_TO_TREE:
                break;

            case LumberjackFSMState.StateEnum.HARVESTING:
                StartCoroutine(BufferHarvestingAnimation(SimulationSettings.NPCChoppingAnimationBuffer, targetEntityId));
                break;

            case LumberjackFSMState.StateEnum.MOVING_TO_STOCKPILE:
                break;

            case LumberjackFSMState.StateEnum.STOCKPILING:
                StartCoroutine(BufferDroppingAnimation(SimulationSettings.NPCStockpilingAnimationBuffer, targetEntityId));
                break;

            case LumberjackFSMState.StateEnum.ON_FIRE:
                navigation.StopNavigation();
                StartMovingTowardsPosition(transform.position + (Random.insideUnitSphere * SimulationSettings.OnFireWaypointDistance).FlattenVector());
                break;
            }
        }