public WizardDefendingState(WizardStateMachine owner,
                             WizardBehaviour inParentBehaviour,
                             SpellsBehaviour inSpellsBehaviour)
     : base(owner)
 {
     parentBehaviour = inParentBehaviour;
     spellsBehaviour = inSpellsBehaviour;
 }
Exemple #2
0
        private void Awake()
        {
            if (navigation == null)
            {
                navigation = GetComponent <TargetNavigationBehaviour>();
            }

            if (teamAssignment == null)
            {
                teamAssignment = GetComponent <TeamAssignmentVisualizer>();
            }

            if (spellsBehaviour == null)
            {
                spellsBehaviour = GetComponent <SpellsBehaviour>();
            }
        }
        public WizardStateMachine(WizardBehaviour behaviour,
                                  NPCWizard.Writer inNpcWizard,
                                  TargetNavigationBehaviour navigation,
                                  TeamAssignmentVisualizerFSim teamAssignment,
                                  TargetNavigation.Writer targetNavigation,
                                  SpellsBehaviour spellsBehaviour,
                                  IList <Coordinates> cachedTeamHqCoordinates)
        {
            npcWizard = inNpcWizard;

            var idleState         = new WizardIdleState(this, teamAssignment, cachedTeamHqCoordinates);
            var moveToTargetState = new WizardMoveToTargetState(this, behaviour, targetNavigation, navigation);
            var attackingState    = new WizardAttackingState(this, behaviour, spellsBehaviour);
            var defendingState    = new WizardDefendingState(this, behaviour, spellsBehaviour);
            var onFireState       = new WizardOnFireState(this, navigation, targetNavigation);

            var stateList = new Dictionary <WizardFSMState.StateEnum, IFsmState>()
            {
                { WizardFSMState.StateEnum.IDLE, idleState },
                { WizardFSMState.StateEnum.MOVING_TO_TARGET, moveToTargetState },
                { WizardFSMState.StateEnum.ATTACKING_TARGET, attackingState },
                { WizardFSMState.StateEnum.DEFENDING_TARGET, defendingState },
                { WizardFSMState.StateEnum.ON_FIRE, onFireState }
            };

            SetStates(stateList);

            var allowedTransitions = new Dictionary <WizardFSMState.StateEnum, IList <WizardFSMState.StateEnum> >();

            allowedTransitions.Add(WizardFSMState.StateEnum.IDLE, new List <WizardFSMState.StateEnum>
            {
                WizardFSMState.StateEnum.IDLE,
                WizardFSMState.StateEnum.MOVING_TO_TARGET,
                WizardFSMState.StateEnum.ON_FIRE
            });

            allowedTransitions.Add(WizardFSMState.StateEnum.MOVING_TO_TARGET, new List <WizardFSMState.StateEnum>
            {
                WizardFSMState.StateEnum.IDLE,
                WizardFSMState.StateEnum.MOVING_TO_TARGET,
                WizardFSMState.StateEnum.ATTACKING_TARGET,
                WizardFSMState.StateEnum.DEFENDING_TARGET,
                WizardFSMState.StateEnum.ON_FIRE
            });

            allowedTransitions.Add(WizardFSMState.StateEnum.ATTACKING_TARGET, new List <WizardFSMState.StateEnum>
            {
                WizardFSMState.StateEnum.IDLE,
                WizardFSMState.StateEnum.ON_FIRE
            });

            allowedTransitions.Add(WizardFSMState.StateEnum.DEFENDING_TARGET, new List <WizardFSMState.StateEnum>
            {
                WizardFSMState.StateEnum.IDLE,
                WizardFSMState.StateEnum.ON_FIRE
            });

            allowedTransitions.Add(WizardFSMState.StateEnum.ON_FIRE, new List <WizardFSMState.StateEnum>
            {
                WizardFSMState.StateEnum.IDLE,
                WizardFSMState.StateEnum.ON_FIRE
            });

            SetTransitions(allowedTransitions);
        }
 private void Awake()
 {
     navigation      = gameObject.GetComponentIfUnassigned(navigation);
     teamAssignment  = gameObject.GetComponentIfUnassigned(teamAssignment);
     spellsBehaviour = gameObject.GetComponentIfUnassigned(spellsBehaviour);
 }