Beispiel #1
0
def generateResearchOrders_old():
    "generate research orders"

    empire = fo.getEmpire()
    print "Research Queue Management:"
    print ""
    print "Techs researched and available for use:"
    completedTechs = getCompletedTechs()
    for techname in completedTechs:
        print "    " + techname
    print""

    print "Techs currently in Research Queue:"
    researchQueue = empire.researchQueue
    researchQueueList = getResearchQueueTechs()
    for element in researchQueue:
        print "    " + element.tech
    print ""

    # get the highest research priorities
    print "Research Queue Priorities:"
    researchPriorities = {}
    for priorityType in getAIPriorityResearchTypes():
        researchPriorities[priorityType] = foAI.foAIstate.getPriority(priorityType)

    sortedPriorities = researchPriorities.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 Research Queue Priority: " + str(topPriority)
    print ""

    if topPriority == AIPriorityType.PRIORITY_RESEARCH_LEARNING:
        primaryLearningTechs = TechsListsAI.primaryLearningTechsList()
        pLTsToEnqueue = (set(primaryLearningTechs)-(set(completedTechs)|set(researchQueueList)))
        if not pLTsToEnqueue:
            print "All primaryLearningTechs are enqueued or completed."
            print""
            generateDefaultResearchOrders()
        else:
            for name in pLTsToEnqueue:
                fo.issueEnqueueTechOrder(name, -1)
                print "    Enqueued Tech: " + name
            print""
            generateDefaultResearchOrders()
    elif topPriority == AIPriorityType.PRIORITY_RESEARCH_GROWTH:
        primaryGroTechs = TechsListsAI.primaryGroTechsList()
        pGTsToEnqueue = (set(primaryGroTechs)-(set(completedTechs)|set(researchQueueList)))
        if not pGTsToEnqueue:
            print "All primaryGrowthTechs are enqueued or completed."
            print""
            generateDefaultResearchOrders()
        else:
            for name in pGTsToEnqueue:
                fo.issueEnqueueTechOrder(name, -1)
                print "    Enqueued Tech: " + name
            print ""
            generateDefaultResearchOrders()
    elif topPriority == AIPriorityType.PRIORITY_RESEARCH_PRODUCTION:
        generateDefaultResearchOrders()
    elif topPriority == AIPriorityType.PRIORITY_RESEARCH_CONSTRUCTION:
        generateDefaultResearchOrders()
    elif topPriority == AIPriorityType.PRIORITY_RESEARCH_ECONOMICS:
        generateDefaultResearchOrders()
    elif topPriority == AIPriorityType.PRIORITY_RESEARCH_SHIPS:
        primaryShipsTechs = TechsListsAI.primaryShipsTechsList()
        pSTsToEnqueue = (set(primaryShipsTechs)-(set(completedTechs)|set(researchQueueList)))
        if not pSTsToEnqueue:
            print "All primaryShipsTechs are enqueued or completed."
            generateDefaultResearchOrders()
            print ""
        else:
            for name in pSTsToEnqueue:
                fo.issueEnqueueTechOrder(name, -1)
                print "    Enqueued Tech: " + name
            print ""
            generateDefaultResearchOrders()