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); } }
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); }