コード例 #1
0
        private void ShowTreeModel(TreeFSMState currentState)
        {
            switch (currentState)
            {
            case TreeFSMState.HEALTHY:
                StartCoroutine(TimerUtils.WaitAndPerform(SimulationSettings.TreeExtinguishTimeBuffer, () =>
                {
                    TransitionTo(HealthyTree);
                }));
                break;

            case TreeFSMState.STUMP:
                StartCoroutine(TimerUtils.WaitAndPerform(SimulationSettings.TreeCutDownTimeBuffer, () =>
                {
                    TransitionTo(Stump);
                }));
                break;

            case TreeFSMState.BURNING:
                StartCoroutine(TimerUtils.WaitAndPerform(SimulationSettings.TreeIgnitionTimeBuffer, () =>
                {
                    TransitionTo(HealthyTree);
                }));
                break;

            case TreeFSMState.BURNT:
                TransitionTo(BurntTree);
                break;
            }
        }
コード例 #2
0
        public void SetState(TreeFSMState newState)
        {
            CancelTimingCoroutine();

            if (!treeState.CurrentState.Equals(newState))
            {
                treeState.Update.CurrentState(newState).FinishAndSend();

                switch (newState)
                {
                case TreeFSMState.HEALTHY:
                    harvestableInterface.ResetResourceCount();
                    flammable.Send(new Flammable.Update().SetCanBeIgnited(true));
                    break;

                case TreeFSMState.STUMP:
                    flammable.Send(new Flammable.Update().SetCanBeIgnited(false));
                    timingCoroutine = StartCoroutine(RegrowAfter(SimulationSettings.TreeStumpRegrowthTimeSecs));
                    break;

                case TreeFSMState.BURNING:
                    timingCoroutine = StartCoroutine(BurnAfter(SimulationSettings.TreeBurningTimeSecs));
                    break;

                case TreeFSMState.BURNT:
                    flammableInterface.SelfExtinguish(flammable, false);
                    timingCoroutine = StartCoroutine(RegrowAfter(SimulationSettings.BurntTreeRegrowthTimeSecs));
                    break;
                }
            }
        }
コード例 #3
0
        private void ShowTreeModel(TreeFSMState currentState)
        {
            switch (currentState)
            {
            case TreeFSMState.HEALTHY:
                StartCoroutine(TransitionAfter(HealthyTree, SimulationSettings.TreeExtinguishTimeBuffer));
                break;

            case TreeFSMState.STUMP:
                StartCoroutine(TransitionAfter(Stump, SimulationSettings.TreeCutDownTimeBuffer));
                break;

            case TreeFSMState.BURNING:
                StartCoroutine(TransitionAfter(BurningTree, SimulationSettings.TreeIgnitionTimeBuffer));
                break;

            case TreeFSMState.BURNT:
                TransitionTo(BurntTree);
                break;
            }
        }
コード例 #4
0
        private void UpdateTreeTag(TreeFSMState treeFsmState)
        {
            switch (treeFsmState)
            {
            case TreeFSMState.HEALTHY:
                CurrentTreeTag = SimulationSettings.HealthyTreeTag;
                break;

            case TreeFSMState.STUMP:
                CurrentTreeTag = SimulationSettings.TreeStumpTag;
                break;

            case TreeFSMState.BURNING:
                CurrentTreeTag = SimulationSettings.BurningTreeTag;
                break;

            case TreeFSMState.BURNT:
                CurrentTreeTag = SimulationSettings.BurntTreeTag;
                break;

            default:
                return;
            }
        }
コード例 #5
0
 private void UpdateVisualization(TreeState.Update newState)
 {
     ShowTreeModel(newState.CurrentState.Value);
     _state = newState.CurrentState.Value;
 }