public LumberjackIdleState(LumberjackStateMachine owner, LumberjackBehaviour inParentBehaviour, TeamAssignment.Reader inTeamAssignment, Inventory.Reader inInventory) : base(owner) { parentBehaviour = inParentBehaviour; teamAssignment = inTeamAssignment; inventory = inInventory; }
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); }