示例#1
0
        public static void SetCanBeChanged(this HealthWriter health, bool canBeChanged)
        {
            var update = new Health.Update()
            {
                CanBeChanged = canBeChanged
            };

            health.SendUpdate(update);
        }
示例#2
0
 public static void SetCurrentHealth(this HealthWriter health, int newHealth)
 {
     if (health.Data.CanBeChanged)
     {
         var update = new Health.Update()
         {
             CurrentHealth = Mathf.Max(newHealth, 0)
         };
         health.SendUpdate(update);
     }
 }
示例#3
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);
        }
示例#4
0
        public static void AddCurrentHealthDelta(this HealthWriter health, int delta)
        {
            if (health.Data.CanBeChanged)
            {
                if (health.TryingToDecreaseHealthBelowZero(delta))
                {
                    return;
                }

                var update = new Health.Update()
                {
                    CurrentHealth = Mathf.Max(health.Data.CurrentHealth + delta, 0)
                };
                health.SendUpdate(update);
            }
        }
示例#5
0
 public TreeBurningState(TreeStateMachine owner, FlammableWriter inFlammable, HealthWriter inHealth)
     : base(owner)
 {
     flammable = inFlammable;
     health    = inHealth;
 }