예제 #1
0
 public override void Initialize()
 {
     DefaultDecisionThinker = null;
     ArmyStateMachine       = null;
     DecisionThinkers.Clear();
     VisitedStructures.Clear();
 }
예제 #2
0
        public override void Process(Entity entity)
        {
            ArmyAi armyAi = entity.GetComponent <ArmyAi>();
            Army   army   = entity.GetComponent <Army>();

            _eventBus.Register(armyAi.DefaultDecisionThinker);
            armyAi.DefaultDecisionThinker.Think(entity, _eventBus);

            float lastMovementPoints = 0; //protection against standing in place

            while (army.MovementPoints > 0 && army.MovementPoints != lastMovementPoints)
            {
                lastMovementPoints = army.MovementPoints;
                IDecisionThinker decisionThinker = armyAi.DecisionThinkers[armyAi.ArmyStateMachine.State];
                decisionThinker.Think(entity, _eventBus);
            }


            _eventBus.Unregister(armyAi.DefaultDecisionThinker);
            // Debug.WriteLine("Update AI");
        }