示例#1
0
        public TreeStateMachine(
            TreeBehaviour owner,
            TreeStateWriter inTree,
            HealthWriter health,
            FlammableBehaviour flammableInterface,
            FlammableWriter flammable
            )
        {
            tree = inTree;

            var healthyState = new TreeHealthyState(this, flammable, health);
            var burningState = new TreeBurningState(this, flammable, health);
            var burntState   = new TreeBurntState(this, owner, flammable, flammableInterface);
            var stumpState   = new TreeStumpState(this, owner, flammable);

            var stateList = new Dictionary <TreeFSMState, IFsmState>();

            stateList.Add(TreeFSMState.HEALTHY, healthyState);
            stateList.Add(TreeFSMState.BURNING, burningState);
            stateList.Add(TreeFSMState.BURNT, burntState);
            stateList.Add(TreeFSMState.STUMP, stumpState);

            SetStates(stateList);

            var allowedTransitions = new Dictionary <TreeFSMState, IList <TreeFSMState> >();

            allowedTransitions.Add(TreeFSMState.HEALTHY, new List <TreeFSMState>()
            {
                TreeFSMState.BURNING,
                TreeFSMState.STUMP
            });

            allowedTransitions.Add(TreeFSMState.BURNING, new List <TreeFSMState>()
            {
                TreeFSMState.HEALTHY,
                TreeFSMState.BURNT
            });

            allowedTransitions.Add(TreeFSMState.BURNT, new List <TreeFSMState>()
            {
                TreeFSMState.HEALTHY
            });

            allowedTransitions.Add(TreeFSMState.STUMP, new List <TreeFSMState>()
            {
                TreeFSMState.HEALTHY
            });

            SetTransitions(allowedTransitions);
        }
示例#2
0
 public TreeStumpState(TreeStateMachine owner, TreeBehaviour inParentBehaviour, FlammableWriter inFlammable) : base(owner)
 {
     parentBehaviour = inParentBehaviour;
     flammable       = inFlammable;
 }
示例#3
0
 public TreeBurntState(TreeStateMachine owner, TreeBehaviour inParentBehaviour, FlammableWriter inFlammable, FlammableBehaviour inflammableInterface) : base(owner)
 {
     parentBehaviour = inParentBehaviour;
     flammable = inFlammable;
     flammableInterface = inflammableInterface;
 }
示例#4
0
 public TreeBurningState(TreeStateMachine owner, FlammableWriter inFlammable, HealthWriter inHealth)
     : base(owner)
 {
     flammable = inFlammable;
     health    = inHealth;
 }