Пример #1
0
 public WizardOnFireState(WizardStateMachine owner,
                          TargetNavigationBehaviour inNavigation,
                          TargetNavigation.Writer inTargetNavigation)
     : base(owner)
 {
     navigation       = inNavigation;
     targetNavigation = inTargetNavigation;
 }
 public LumberjackOnFireState(LumberjackStateMachine owner,
                              TargetNavigationBehaviour inNavigation,
                              TargetNavigation.Writer inTargetNavigation)
     : base(owner)
 {
     navigation       = inNavigation;
     targetNavigation = inTargetNavigation;
 }
 public WizardMoveToTargetState(WizardStateMachine owner,
                                WizardBehaviour inParentBehaviour,
                                TargetNavigation.Writer inTargetNavigation,
                                TargetNavigationBehaviour inNavigation)
     : base(owner)
 {
     parentBehaviour  = inParentBehaviour;
     targetNavigation = inTargetNavigation;
     navigation       = inNavigation;
 }
 public LumberjackMoveToTargetState(LumberjackStateMachine owner,
                                    LumberjackBehaviour inParentBehaviour,
                                    TargetNavigation.Writer inTargetNavigation,
                                    TargetNavigationBehaviour inNavigation)
     : base(owner)
 {
     targetNavigation = inTargetNavigation;
     parentBehaviour  = inParentBehaviour;
     navigation       = inNavigation;
 }
Пример #5
0
        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);
        }
        public LumberjackStateMachine(LumberjackBehaviour behaviour,
                                      TargetNavigationBehaviour navigation,
                                      Inventory.Writer inventory,
                                      TargetNavigation.Writer targetNavigation,
                                      NPCLumberjack.Writer inNpcLumberjack,
                                      TeamAssignment.Reader teamAssignment)
        {
            npcLumberjack = inNpcLumberjack;

            var idleState         = new LumberjackIdleState(this, behaviour, teamAssignment, inventory);
            var moveToTargetState = new LumberjackMoveToTargetState(this, behaviour, targetNavigation, navigation);
            var harvestingState   = new LumberjackHarvestingState(this, behaviour, inventory);
            var stockPilingState  = new LumberjackStockpilingState(this, behaviour, inventory);
            var onFireState       = new LumberjackOnFireState(this, navigation, targetNavigation);

            var stateList = new Dictionary <LumberjackFSMState.StateEnum, IFsmState>
            {
                { LumberjackFSMState.StateEnum.IDLE, idleState },
                { LumberjackFSMState.StateEnum.MOVING_TO_TARGET, moveToTargetState },
                { LumberjackFSMState.StateEnum.HARVESTING, harvestingState },
                { LumberjackFSMState.StateEnum.STOCKPILING, stockPilingState },
                { LumberjackFSMState.StateEnum.ON_FIRE, onFireState }
            };

            SetStates(stateList);

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

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

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

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

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

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

            SetTransitions(allowedTransitions);
        }