def printResourcesPriority(): "calculate top resource priority" universe = fo.getUniverse() empire = fo.getEmpire() empireID = empire.empireID ownedPlanetIDs = PlanetUtilsAI.getOwnedPlanetsByEmpire(universe.planetIDs, empireID) print "Resource Management:" print "" print "Resource Priorities:" resourcePriorities = {} for priorityType in getAIPriorityResourceTypes(): resourcePriorities[priorityType] = foAI.foAIstate.getPriority(priorityType) sortedPriorities = resourcePriorities.items() sortedPriorities.sort(lambda x,y: cmp(x[1], y[1]), reverse=True) topPriority = -1 for evaluationPair in sortedPriorities: if topPriority < 0: topPriority = evaluationPair[0] print " ID|Score: " + str(evaluationPair) print " Top Resource Priority: " + str(topPriority) # what is the focus of available resource centers? print "" print "Planet Resources Foci:" for planetID in ownedPlanetIDs: planet = universe.getPlanet(planetID) planetPopulation = planet.currentMeterValue(fo.meterType.population) print " ID: " + str(planetID) + " Name: " + str(planet.name) + " Type: " + str(planet.type) + " Size: " + str(planet.size) + " Focus: " + str(planet.focus) + " Species: " + str(planet.speciesName) + " Population: " + str(planetPopulation)
def printResourcesPriority(): "calculate top resource priority" universe = fo.getUniverse() empire = fo.getEmpire() empireID = empire.empireID empirePlanetIDs = PlanetUtilsAI.getOwnedPlanetsByEmpire(universe.planetIDs, empireID) print "Resource Management:" print "" print "Resource Priorities:" resourcePriorities = {} for priorityType in getAIPriorityResourceTypes(): resourcePriorities[priorityType] = foAI.foAIstate.getPriority(priorityType) sortedPriorities = resourcePriorities.items() sortedPriorities.sort(lambda x,y: cmp(x[1], y[1]), reverse=True) topPriority = -1 for evaluationPair in sortedPriorities: if topPriority < 0: topPriority = evaluationPair[0] print " ResourcePriority |Score: %s | %s "%(AIPriorityTypeNames.name(evaluationPair[0]), evaluationPair[1]) # what is the focus of available resource centers? print "" warnings={} print "Planet Resources Foci:" for planetID in empirePlanetIDs: planet = universe.getPlanet(planetID) planetPopulation = planet.currentMeterValue(fo.meterType.population) maxPop = planet.currentMeterValue(fo.meterType.targetPopulation) if maxPop < 1 and planetPopulation >0: warnings[planet.name]=(planetPopulation, maxPop) statusStr = " ID: " + str(planetID) + " Name: % 18s -- % 6s % 8s "%(str(planet.name) , str(planet.size), str(planet.type) ) statusStr += " Focus: % 8s"%("_".join(str(planet.focus).split("_")[1:])[:8]) + " Species: " + str(planet.speciesName) + " Pop: %2d/%2d"%(planetPopulation, maxPop) print statusStr print "\n\nEmpire Totals:\nPopulation: %5d \nProduction: %5d\nResearch: %5d\n"%(empire.population(), empire.productionPoints, empire.resourceProduction(fo.resourceType.research)) if warnings != {}: for pname in warnings: mp, cp = warnings[pname] print "Population Warning! -- %s has unsustainable current pop %d -- target %d"%(pname, cp, mp ) print "" warnings.clear()
def topResourcePriority(): "calculate top resource priority" universe = fo.getUniverse() empire = fo.getEmpire() empireID = empire.empireID empirePlanetIDs = PlanetUtilsAI.getOwnedPlanetsByEmpire(universe.planetIDs, empireID) resourcePriorities = {} for priorityType in getAIPriorityResourceTypes(): resourcePriorities[priorityType] = foAI.foAIstate.getPriority(priorityType) sortedPriorities = resourcePriorities.items() sortedPriorities.sort(lambda x,y: cmp(x[1], y[1]), reverse=True) topPriority = -1 for evaluationPair in sortedPriorities: if topPriority < 0: topPriority = evaluationPair[0] return topPriority
def generateResourcesOrders(): "generate resources focus orders" # get the highest resource priorities universe = fo.getUniverse() empire = fo.getEmpire() empireID = empire.empireID ownedPlanetIDs = PlanetUtilsAI.getOwnedPlanetsByEmpire(universe.planetIDs, empireID) capitalID = PlanetUtilsAI.getCapitalID() print "Resources Management:" print "" print "Resource Priorities:" resourcePriorities = {} for priorityType in getAIPriorityResourceTypes(): resourcePriorities[priorityType] = foAI.foAIstate.getPriority(priorityType) sortedPriorities = resourcePriorities.items() sortedPriorities.sort(lambda x,y: cmp(x[1], y[1]), reverse=True) topPriority = -1 for evaluationPair in sortedPriorities: if topPriority < 0: topPriority = evaluationPair[0] print " ID|Score: " + str(evaluationPair) print " Top Resource Priority: " + str(topPriority) if topPriority == AIPriorityType.PRIORITY_RESOURCE_FOOD: newFocus = AIFocusType.FOCUS_FARMING print " New Resource Focus: " + str(newFocus) for planetID in ownedPlanetIDs: planet = universe.getPlanet(planetID) focus = newFocus if planetID == capitalID and newFocus in planet.availableFoci: print " Capital ID: " + str(planetID) + " Resource Focus: " + str(newFocus) fo.issueChangeFocusOrder(planetID, newFocus) elif topPriority == AIPriorityType.PRIORITY_RESOURCE_MINERALS: newFocus = AIFocusType.FOCUS_MINING print " Top Resource Focus: " + str(newFocus) for planetID in ownedPlanetIDs: planet = universe.getPlanet(planetID) focus = newFocus if planetID == capitalID and newFocus in planet.availableFoci: print " Capital ID: " + str(planetID) + " Resource Focus: " + str(newFocus) fo.issueChangeFocusOrder(planetID, newFocus) elif topPriority == AIPriorityType.PRIORITY_RESOURCE_PRODUCTION: newFocus = AIFocusType.FOCUS_INDUSTRY print " New Resource Focus: " + str(newFocus) for planetID in ownedPlanetIDs: planet = universe.getPlanet(planetID) focus = newFocus if planetID == capitalID and newFocus in planet.availableFoci: print " Capital ID: " + str(planetID) + " Resource Focus: " + str(newFocus) fo.issueChangeFocusOrder(planetID, newFocus) elif topPriority == AIPriorityType.PRIORITY_RESOURCE_RESEARCH: newFocus = AIFocusType.FOCUS_RESEARCH print " New Resource Focus: " + str(newFocus) # what is the focus of available resource centers? print "" print "Planet Resources Foci:" print "" print " Empire Owned planetIDs:" + str(ownedPlanetIDs) for planetID in ownedPlanetIDs: planet = universe.getPlanet(planetID) planetPopulation = planet.currentMeterValue(fo.meterType.population) print " ID: " + str(planetID) + " Name: " + str(planet.name) + " Type: " + str(planet.type) + " Size: " + str(planet.size) + " Focus: " + str(planet.focus) + " Species: " + str(planet.speciesName) + " Population: " + str(planetPopulation)