示例#1
0
    private void DoProduce()
    {
        this.ComputeMilitaryBodyRatio();
        List <EvaluableMessage_UnitProduction> list = new List <EvaluableMessage_UnitProduction>();

        this.FillUnitProduction(ref list);
        HeuristicValue globalMotivation = new HeuristicValue(0.9f);

        for (int i = 0; i < list.Count; i++)
        {
            if (!this.CheckUnitProduction(list[i]))
            {
                list[i].Cancel();
            }
            else
            {
                HeuristicValue unitPriority = this.GetUnitPriority(list[i].UnitDesign);
                list[i].Refresh(globalMotivation, unitPriority);
                this.ProcessUnitProduction(list[i].UnitDesign);
            }
        }
        while (this.needMilitaryPower > 0f)
        {
            UnitDesign unitDesign = this.ChooseMilitaryUnitToBuild();
            if (unitDesign == null)
            {
                break;
            }
            HeuristicValue unitPriority2            = this.GetUnitPriority(unitDesign);
            EvaluableMessage_UnitProduction message = new EvaluableMessage_UnitProduction(globalMotivation, unitPriority2, unitDesign, -1, 1, AILayer_AccountManager.MilitaryAccountName);
            this.AIEntity.AIPlayer.Blackboard.AddMessage(message);
            this.ProcessUnitProduction(unitDesign);
        }
    }
示例#2
0
 private bool CheckUnitProduction(EvaluableMessage_UnitProduction unitRequest)
 {
     if (unitRequest.UnitDesign == null)
     {
         return(false);
     }
     if (unitRequest.EvaluationState != EvaluableMessage.EvaluableMessageState.Obtaining)
     {
         if (this.needMilitaryPower <= 0f)
         {
             return(false);
         }
         if (this.maxNewUnits <= 0f)
         {
             return(false);
         }
     }
     return(true);
 }