public WizardDefendingState(WizardStateMachine owner, WizardBehaviour inParentBehaviour, SpellsBehaviour inSpellsBehaviour) : base(owner) { parentBehaviour = inParentBehaviour; spellsBehaviour = inSpellsBehaviour; }
public WizardMoveToTargetState(WizardStateMachine owner, WizardBehaviour inParentBehaviour, TargetNavigation.Writer inTargetNavigation, TargetNavigationBehaviour inNavigation) : base(owner) { parentBehaviour = inParentBehaviour; targetNavigation = inTargetNavigation; navigation = inNavigation; }
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); }