Example #1
0
def calculateTopProductionQueuePriority():
    "calculates the top production queue priority"

    productionQueuePriorities = {}
    for priorityType in getAIPriorityProductionTypes():
        productionQueuePriorities[priorityType] = foAI.foAIstate.getPriority(priorityType)

    sortedPriorities = productionQueuePriorities.items()
    sortedPriorities.sort(lambda x,y: cmp(x[1], y[1]), reverse=True)
    topProductionQueuePriority = -1
    for evaluationPair in sortedPriorities:
        if topProductionQueuePriority < 0:
            topProductionQueuePriority = evaluationPair[0]

    return topProductionQueuePriority
Example #2
0
def generateProductionOrders():
    "generate production orders"

    print "Production Queue Management:"
    empire = fo.getEmpire()
    totalPP = empire.productionPoints
    print ""
    print "  Total Available Production Points: " + str(totalPP)

    totalPPSpent = fo.getEmpire().productionQueue.totalSpent
    print "  Total Production Points Spent:     " + str(totalPPSpent)

    wastedPP = totalPP - totalPPSpent
    print "  Wasted Production Points:          " + str(wastedPP)
    print ""

    print "Possible building types to build:"
    possibleBuildingTypes = empire.availableBuildingTypes
    for buildingTypeID in possibleBuildingTypes:
        buildingType = fo.getBuildingType(buildingTypeID)
        print "    " + str(buildingType.name) + " cost:" + str(buildingType.productionCost) + " time:" + str(buildingType.productionTime)

    print ""
    print "Possible ship designs to build:"
    possibleShipDesigns = empire.availableShipDesigns
    for shipDesignID in possibleShipDesigns:
        shipDesign = fo.getShipDesign(shipDesignID)
        print "    " + str(shipDesign.name(True)) + " cost:" + str(shipDesign.productionCost) + " time:" + str(shipDesign.productionTime)

    print ""
    print "Projects already in Production Queue:"
    productionQueue = empire.productionQueue
    for element in productionQueue:
        print "    " + element.name + " turns:" + str(element.turnsLeft) + " PP:" + str(element.allocation)

    print ""
    # get the highest production priorities
    print "Production Queue Priorities:"
    productionPriorities = {}
    for priorityType in getAIPriorityProductionTypes():
        productionPriorities[priorityType] = foAI.foAIstate.getPriority(priorityType)

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

    locationIDs = getAvailableBuildLocations(shipDesignID)
    if len(locationIDs) > 0 and wastedPP > 0:
        for shipDesignID in possibleShipDesigns:
            shipDesign = fo.getShipDesign(shipDesignID)
            explorationShipName = "SD_SCOUT"
            colonyShipName = "SD_COLONY_SHIP"
            outpostShipName = "SD_OUTPOST_SHIP"
            troopShipName = "SD_TROOP_SHIP"
            if topPriority == 6 and shipDesign.name(False) == explorationShipName:
                # exploration ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 7 and shipDesign.canColonize and shipDesign.name(False) == outpostShipName:
                # outpost ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 8 and shipDesign.canColonize and shipDesign.name(False) == colonyShipName:
                # colony ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 9 and shipDesign.canInvade and shipDesign.name(False) == troopShipName:
                # troop ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 10 and shipDesign.isArmed:
                # military ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif shipDesign.attack > 0:
                # military ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
    print ""
Example #3
0
def generateProductionOrders():
    "generate production orders"

    print "Production Queue Management:"
    empire = fo.getEmpire()
    totalPP = empire.productionPoints
    print ""
    print "  Total Available Production Points: " + str(totalPP)

    totalPPSpent = fo.getEmpire().productionQueue.totalSpent
    print "  Total Production Points Spent:     " + str(totalPPSpent)

    wastedPP = totalPP - totalPPSpent
    print "  Wasted Production Points:          " + str(wastedPP)
    print ""

    colonisablePlanetIDs = AIstate.colonisablePlanetIDs
    for element in colonisablePlanetIDs:
        print "  Colonizable Planet ID, Score:             " + str(element)

    colonyFleetIDs = getEmpireFleetIDsByRole(AIFleetMissionType.FLEET_MISSION_COLONISATION)
    for element in colonyFleetIDs:
        print "  Colony Fleet ID:                          " + str(element)

    numColonyFleets = len(extractFleetIDsWithoutMissionTypes(colonyFleetIDs))
    print "  Number of Colony Fleets Without Missions: " + str(numColonyFleets)
    print ""

    print "Possible building types to build:"
    possibleBuildingTypes = empire.availableBuildingTypes
    for buildingTypeID in possibleBuildingTypes:
        buildingType = fo.getBuildingType(buildingTypeID)
        print "    " + str(buildingType.name) + " cost:" + str(buildingType.productionCost) + " time:" + str(buildingType.productionTime)

    print ""
    print "Possible ship designs to build:"
    possibleShipDesigns = empire.availableShipDesigns
    for shipDesignID in possibleShipDesigns:
        shipDesign = fo.getShipDesign(shipDesignID)
        print "    " + str(shipDesign.name(True)) + " cost:" + str(shipDesign.productionCost) + " time:" + str(shipDesign.productionTime)

    print ""
    print "Projects already in Production Queue:"
    productionQueue = empire.productionQueue
    for element in productionQueue:
        print "    " + element.name + " turns:" + str(element.turnsLeft) + " PP:" + str(element.allocation)

    print ""
    # get the highest production priorities
    print "Production Queue Priorities:"
    productionPriorities = {}
    for priorityType in getAIPriorityProductionTypes():
        productionPriorities[priorityType] = foAI.foAIstate.getPriority(priorityType)

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

    locationIDs = getAvailableBuildLocations(shipDesignID)
    if len(locationIDs) > 0 and wastedPP > 0:
        for shipDesignID in possibleShipDesigns:
            shipDesign = fo.getShipDesign(shipDesignID)
            explorationShipName = "Scout"
            colonyShipName = "Colony Ship"
            outpostShipName = "Outpost Ship"
            troopShipName = "Troop Ship"
            if topPriority == 5 and shipDesign.name(True) == explorationShipName:
                # exploration ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 6 and shipDesign.canColonize and shipDesign.name(True) == outpostShipName:
                # outpost ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 7 and shipDesign.canColonize and shipDesign.name(True) == colonyShipName:
                # colony ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 8 and shipDesign.name(True) == troopShipName:
                # troop ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif topPriority == 9 and shipDesign.isArmed:
                # military ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
            elif shipDesign.attack > 0:
                # military ship
                print ""
                print "adding new ship to production queue: " + shipDesign.name(True)
                fo.issueEnqueueShipProductionOrder(shipDesignID, locationIDs[0])
    print ""