Beispiel #1
0
        public TreeStateMachine(
            TreeBehaviour owner,
            TreeState.Writer inTree,
            Health.Writer health,
            FlammableBehaviour flammableInterface,
            Flammable.Writer 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);
        }