def initCityUnit(city, sUnitClass): """ 都市とユニットクラス名を指定して、都市のオーナーの支配下でユニットを生成する 都市はCyCityでもPyCityでもよい """ pyPlayer = PyHelpers.PyPlayer(city.getOwner()) iUnit = getCivilizationUnitType(pyPlayer, sUnitClass) return pyPlayer.initUnit(iUnit, city.getX(), city.getY())
def initCityUnitDirect(city, sUnit): """ 都市とユニット名を指定して、都市のオーナーの支配下でユニットを生成する 都市はCyCityでもPyCityでもよい UnitClassでやるほうがいろいろと潰しがきくと思うので一応程度に """ pyPlayer = PyHelpers.PyPlayer(city.getOwner()) iUnit = gc.getInfoTypeForString(sUnit) return pyPlayer.initUnit(iUnit, city.getX(), city.getY())
def showVictoryConditionScreen(self): activePlayer = PyHelpers.PyPlayer(self.iActivePlayer) iActiveTeam = gc.getPlayer(self.iActivePlayer).getTeam() # Conquest nRivals = -1 for i in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(i).isAlive() and not gc.getTeam(i).isMinorCiv() and not gc.getTeam(i).isBarbarian()): nRivals += 1 # Population totalPop = gc.getGame().getTotalPopulation() ourPop = activePlayer.getTeam().getTotalPopulation() if (totalPop > 0): popPercent = (ourPop * 100.0) / totalPop else: popPercent = 0.0 iBestPopTeam = -1 bestPop = 0 for iLoopTeam in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(iLoopTeam).isAlive() and not gc.getTeam(iLoopTeam).isMinorCiv() and not gc.getTeam(iLoopTeam).isBarbarian()): if (iLoopTeam != iActiveTeam and (activePlayer.getTeam().isHasMet(iLoopTeam) or gc.getGame().isDebugMode())): teamPop = gc.getTeam(iLoopTeam).getTotalPopulation() if (teamPop > bestPop): bestPop = teamPop iBestPopTeam = iLoopTeam # Score ourScore = gc.getGame().getTeamScore(iActiveTeam) iBestScoreTeam = -1 bestScore = 0 for iLoopTeam in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(iLoopTeam).isAlive() and not gc.getTeam(iLoopTeam).isMinorCiv() and not gc.getTeam(iLoopTeam).isBarbarian()): if (iLoopTeam != iActiveTeam and (activePlayer.getTeam().isHasMet(iLoopTeam) or gc.getGame().isDebugMode())): teamScore = gc.getGame().getTeamScore(iLoopTeam) if (teamScore > bestScore): bestScore = teamScore iBestScoreTeam = iLoopTeam # Land Area totalLand = gc.getMap().getLandPlots() ourLand = activePlayer.getTeam().getTotalLand() if (totalLand > 0): landPercent = (ourLand * 100.0) / totalLand else: landPercent = 0.0 iBestLandTeam = -1 bestLand = 0 for iLoopTeam in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(iLoopTeam).isAlive() and not gc.getTeam(iLoopTeam).isMinorCiv() and not gc.getTeam(iLoopTeam).isBarbarian()): if (iLoopTeam != iActiveTeam and (activePlayer.getTeam().isHasMet(iLoopTeam) or gc.getGame().isDebugMode())): teamLand = gc.getTeam(iLoopTeam).getTotalLand() if (teamLand > bestLand): bestLand = teamLand iBestLandTeam = iLoopTeam # Religion iOurReligion = -1 ourReligionPercent = 0 for iLoopReligion in range(gc.getNumReligionInfos()): if (activePlayer.getTeam().hasHolyCity(iLoopReligion)): religionPercent = gc.getGame().calculateReligionPercent(iLoopReligion) if (religionPercent > ourReligionPercent): ourReligionPercent = religionPercent iOurReligion = iLoopReligion iBestReligion = -1 bestReligionPercent = 0 for iLoopReligion in range(gc.getNumReligionInfos()): if (iLoopReligion != iOurReligion): religionPercent = gc.getGame().calculateReligionPercent(iLoopReligion) if (religionPercent > bestReligionPercent): bestReligionPercent = religionPercent iBestReligion = iLoopReligion # Total Culture ourCulture = activePlayer.getTeam().countTotalCulture() iBestCultureTeam = -1 bestCulture = 0 for iLoopTeam in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(iLoopTeam).isAlive() and not gc.getTeam(iLoopTeam).isMinorCiv() and not gc.getTeam(iLoopTeam).isBarbarian()): if (iLoopTeam != iActiveTeam and (activePlayer.getTeam().isHasMet(iLoopTeam) or gc.getGame().isDebugMode())): teamCulture = gc.getTeam(iLoopTeam).countTotalCulture() if (teamCulture > bestCulture): bestCulture = teamCulture iBestCultureTeam = iLoopTeam # Vote aiVoteBuildingClass = [] for i in range(gc.getNumBuildingInfos()): for j in range(gc.getNumVoteSourceInfos()): if (gc.getBuildingInfo(i).getVoteSourceType() == j): iUNTeam = -1 bUnknown = true for iLoopTeam in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(iLoopTeam).isAlive() and not gc.getTeam(iLoopTeam).isMinorCiv() and not gc.getTeam(iLoopTeam).isBarbarian()): if (gc.getTeam(iLoopTeam).getBuildingClassCount(gc.getBuildingInfo(i).getBuildingClassType()) > 0): iUNTeam = iLoopTeam if (iLoopTeam == iActiveTeam or gc.getGame().isDebugMode() or activePlayer.getTeam().isHasMet(iLoopTeam)): bUnknown = false break aiVoteBuildingClass.append((gc.getBuildingInfo(i).getBuildingClassType(), iUNTeam, bUnknown)) self.bVoteTab = (len(aiVoteBuildingClass) > 0) self.deleteAllWidgets() screen = self.getScreen() # Start filling in the table below screen.addPanel(self.getNextWidgetName(), "", "", False, False, self.X_AREA-10, self.Y_AREA-15, self.W_AREA+20, self.H_AREA+30, PanelStyles.PANEL_STYLE_BLUE50) szTable = self.getNextWidgetName() screen.addTableControlGFC(szTable, 6, self.X_AREA, self.Y_AREA, self.W_AREA, self.H_AREA, False, False, 32,32, TableStyles.TABLE_STYLE_STANDARD) screen.setTableColumnHeader(szTable, 0, "", self.TABLE_WIDTH_0) screen.setTableColumnHeader(szTable, 1, "", self.TABLE_WIDTH_1) screen.setTableColumnHeader(szTable, 2, "", self.TABLE_WIDTH_2) screen.setTableColumnHeader(szTable, 3, "", self.TABLE_WIDTH_3) screen.setTableColumnHeader(szTable, 4, "", self.TABLE_WIDTH_4) screen.setTableColumnHeader(szTable, 5, "", self.TABLE_WIDTH_5) screen.appendTableRow(szTable) for iLoopVC in range(gc.getNumVictoryInfos()): victory = gc.getVictoryInfo(iLoopVC) if gc.getGame().isVictoryValid(iLoopVC): iNumRows = screen.getTableNumRows(szTable) szVictoryType = u"<font=4b>" + victory.getDescription().upper() + u"</font>" if (victory.isEndScore() and (gc.getGame().getMaxTurns() > gc.getGame().getElapsedGameTurns())): szVictoryType += " (" + localText.getText("TXT_KEY_MISC_TURNS_LEFT", (gc.getGame().getMaxTurns() - gc.getGame().getElapsedGameTurns(), )) + ")" iVictoryTitleRow = iNumRows - 1 screen.setTableText(szTable, 0, iVictoryTitleRow, szVictoryType, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bSpaceshipFound = False bEntriesFound = False if (victory.isTargetScore() and gc.getGame().getTargetScore() != 0): iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_TARGET_SCORE", (gc.getGame().getTargetScore(), )), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, (u"%d" % ourScore), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iBestScoreTeam != -1): screen.setTableText(szTable, 4, iRow, gc.getTeam(iBestScoreTeam).getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, (u"%d" % bestScore), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True if (victory.isEndScore()): szText1 = localText.getText("TXT_KEY_VICTORY_SCREEN_HIGHEST_SCORE", (CyGameTextMgr().getTimeStr(gc.getGame().getStartTurn() + gc.getGame().getMaxTurns(), false), )) iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, szText1, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, (u"%d" % ourScore), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iBestScoreTeam != -1): screen.setTableText(szTable, 4, iRow, gc.getTeam(iBestScoreTeam).getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, (u"%d" % bestScore), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True if (victory.isConquest()): iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_ELIMINATE_ALL", ()), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_RIVALS_LEFT", ()), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, unicode(nRivals), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True if (gc.getGame().getAdjustedPopulationPercent(iLoopVC) > 0): iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_PERCENT_POP", (gc.getGame().getAdjustedPopulationPercent(iLoopVC), )), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, (u"%.2f%%" % popPercent), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iBestPopTeam != -1): screen.setTableText(szTable, 4, iRow, gc.getTeam(iBestPopTeam).getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, (u"%.2f%%" % (bestPop * 100 / totalPop)), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True if (gc.getGame().getAdjustedLandPercent(iLoopVC) > 0): iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_PERCENT_LAND", (gc.getGame().getAdjustedLandPercent(iLoopVC), )), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, (u"%.2f%%" % landPercent), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iBestLandTeam != -1): screen.setTableText(szTable, 4, iRow, gc.getTeam(iBestLandTeam).getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, (u"%.2f%%" % (bestLand * 100 / totalLand)), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True if (victory.getReligionPercent() > 0): iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_PERCENT_RELIGION", (victory.getReligionPercent(), )), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iOurReligion != -1): screen.setTableText(szTable, 2, iRow, gc.getReligionInfo(iOurReligion).getDescription() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, (u"%d%%" % ourReligionPercent), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) else: screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, u"No Holy City", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iBestReligion != -1): screen.setTableText(szTable, 4, iRow, gc.getReligionInfo(iBestReligion).getDescription() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, (u"%d%%" % religionPercent), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True if (victory.getTotalCultureRatio() > 0): iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_PERCENT_CULTURE", (int((100.0 * bestCulture) / victory.getTotalCultureRatio()), )), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, unicode(ourCulture), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iBestLandTeam != -1): screen.setTableText(szTable, 4, iRow, gc.getTeam(iBestCultureTeam).getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, unicode(bestCulture), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True iBestBuildingTeam = -1 bestBuilding = 0 for iLoopTeam in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(iLoopTeam).isAlive() and not gc.getTeam(iLoopTeam).isMinorCiv() and not gc.getTeam(iLoopTeam).isBarbarian()): if (iLoopTeam != iActiveTeam and (activePlayer.getTeam().isHasMet(iLoopTeam) or gc.getGame().isDebugMode())): teamBuilding = 0 for i in range(gc.getNumBuildingClassInfos()): if (gc.getBuildingClassInfo(i).getVictoryThreshold(iLoopVC) > 0): teamBuilding += gc.getTeam(iLoopTeam).getBuildingClassCount(i) if (teamBuilding > bestBuilding): bestBuilding = teamBuilding iBestBuildingTeam = iLoopTeam for i in range(gc.getNumBuildingClassInfos()): if (gc.getBuildingClassInfo(i).getVictoryThreshold(iLoopVC) > 0): iRow = screen.appendTableRow(szTable) szNumber = unicode(gc.getBuildingClassInfo(i).getVictoryThreshold(iLoopVC)) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_BUILDING", (szNumber, gc.getBuildingClassInfo(i).getTextKey())), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) # screen.setTableText(szTable, 3, iRow, activePlayer.getTeam().getBuildingClassCount(i), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, str(activePlayer.getTeam().getBuildingClassCount(i)), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iBestBuildingTeam != -1): screen.setTableText(szTable, 4, iRow, gc.getTeam(iBestBuildingTeam).getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) # screen.setTableText(szTable, 5, iRow, gc.getTeam(iBestBuildingTeam).getBuildingClassCount(i), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, str(gc.getTeam(iBestBuildingTeam).getBuildingClassCount(i)), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True iBestProjectTeam = -1 bestProject = 0 for iLoopTeam in range(gc.getMAX_CIV_TEAMS()): if (gc.getTeam(iLoopTeam).isAlive() and not gc.getTeam(iLoopTeam).isMinorCiv() and not gc.getTeam(iLoopTeam).isBarbarian()): if (iLoopTeam != iActiveTeam and (activePlayer.getTeam().isHasMet(iLoopTeam) or gc.getGame().isDebugMode())): teamProject = 0 for i in range(gc.getNumProjectInfos()): if (gc.getProjectInfo(i).getVictoryThreshold(iLoopVC) > 0): teamProject += gc.getTeam(iLoopTeam).getProjectCount(i) if (teamProject > bestProject): bestProject = teamProject iBestProjectTeam = iLoopTeam for i in range(gc.getNumProjectInfos()): if (gc.getProjectInfo(i).getVictoryThreshold(iLoopVC) > 0): iRow = screen.appendTableRow(szTable) if (gc.getProjectInfo(i).getVictoryMinThreshold(iLoopVC) == gc.getProjectInfo(i).getVictoryThreshold(iLoopVC)): szNumber = unicode(gc.getProjectInfo(i).getVictoryThreshold(iLoopVC)) else: szNumber = unicode(gc.getProjectInfo(i).getVictoryMinThreshold(iLoopVC)) + u"-" + unicode(gc.getProjectInfo(i).getVictoryThreshold(iLoopVC)) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_BUILDING", (szNumber, gc.getProjectInfo(i).getTextKey())), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 2, iRow, activePlayer.getTeam().getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, str(activePlayer.getTeam().getProjectCount(i)), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) #check if spaceship #if (gc.getProjectInfo(i).isSpaceship() and (activePlayer.getTeam().getProjectCount(i) > 0)): if (gc.getProjectInfo(i).isSpaceship()): bSpaceshipFound = True if (iBestProjectTeam != -1): screen.setTableText(szTable, 4, iRow, gc.getTeam(iBestProjectTeam).getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, unicode(gc.getTeam(iBestProjectTeam).getProjectCount(i)), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True #add spaceship button if (bSpaceshipFound): screen.setButtonGFC("SpaceShipButton" + str(iLoopVC), localText.getText("TXT_KEY_GLOBELAYER_STRATEGY_VIEW", ()), "", 0, 0, 15, 10, WidgetTypes.WIDGET_GENERAL, self.SPACESHIP_SCREEN_BUTTON, -1, ButtonStyles.BUTTON_STYLE_STANDARD ) screen.attachControlToTableCell("SpaceShipButton" + str(iLoopVC), szTable, iVictoryTitleRow, 1) victoryDelay = gc.getTeam(iActiveTeam).getVictoryCountdown(iLoopVC) if((victoryDelay > 0) and (gc.getGame().getGameState() != GameStateTypes.GAMESTATE_EXTENDED)): victoryDate = CyGameTextMgr().getTimeStr(gc.getGame().getGameTurn() + victoryDelay, false) screen.setTableText(szTable, 2, iVictoryTitleRow, localText.getText("TXT_KEY_SPACE_SHIP_SCREEN_ARRIVAL", ()) + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iVictoryTitleRow, victoryDate, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 4, iVictoryTitleRow, localText.getText("TXT_KEY_REPLAY_SCREEN_TURNS", ()) + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iVictoryTitleRow, str(victoryDelay), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (victory.isDiploVote()): for (iVoteBuildingClass, iUNTeam, bUnknown) in aiVoteBuildingClass: iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_ELECTION", (gc.getBuildingClassInfo(iVoteBuildingClass).getTextKey(), )), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (iUNTeam != -1): if bUnknown: szName = localText.getText("TXT_KEY_TOPCIVS_UNKNOWN", ()) else: szName = gc.getTeam(iUNTeam).getName() screen.setTableText(szTable, 2, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_BUILT", (szName, )), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) else: screen.setTableText(szTable, 2, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_NOT_BUILT", ()), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) bEntriesFound = True if (victory.getCityCulture() != CultureLevelTypes.NO_CULTURELEVEL and victory.getNumCultureCities() > 0): ourBestCities = self.getListCultureCities(self.iActivePlayer)[0:victory.getNumCultureCities()] iBestCulturePlayer = -1 bestCityCulture = 0 maxCityCulture = gc.getCultureLevelInfo(victory.getCityCulture()).getSpeedThreshold(gc.getGame().getGameSpeedType()) for iLoopPlayer in range(gc.getMAX_PLAYERS()): if (gc.getPlayer(iLoopPlayer).isAlive() and not gc.getPlayer(iLoopPlayer).isMinorCiv() and not gc.getPlayer(iLoopPlayer).isBarbarian()): if (iLoopPlayer != self.iActivePlayer and (activePlayer.getTeam().isHasMet(gc.getPlayer(iLoopPlayer).getTeam()) or gc.getGame().isDebugMode())): theirBestCities = self.getListCultureCities(iLoopPlayer)[0:victory.getNumCultureCities()] iTotalCulture = 0 for loopCity in theirBestCities: if loopCity[0] >= maxCityCulture: iTotalCulture += maxCityCulture else: iTotalCulture += loopCity[0] if (iTotalCulture >= bestCityCulture): bestCityCulture = iTotalCulture iBestCulturePlayer = iLoopPlayer if (iBestCulturePlayer != -1): theirBestCities = self.getListCultureCities(iBestCulturePlayer)[0:(victory.getNumCultureCities())] else: theirBestCities = [] iRow = screen.appendTableRow(szTable) screen.setTableText(szTable, 0, iRow, localText.getText("TXT_KEY_VICTORY_SCREEN_CITY_CULTURE", (victory.getNumCultureCities(), gc.getCultureLevelInfo(victory.getCityCulture()).getTextKey())), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) for i in range(victory.getNumCultureCities()): if (len(ourBestCities) > i): screen.setTableText(szTable, 2, iRow, ourBestCities[i][1].getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 3, iRow, str(ourBestCities[i][0]), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (len(theirBestCities) > i): screen.setTableText(szTable, 4, iRow, theirBestCities[i][1].getName() + ":", "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) screen.setTableText(szTable, 5, iRow, unicode(theirBestCities[i][0]), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) if (i < victory.getNumCultureCities()-1): iRow = screen.appendTableRow(szTable) bEntriesFound = True if (bEntriesFound): screen.appendTableRow(szTable) screen.appendTableRow(szTable) # civ picker dropdown if (CyGame().isDebugMode()): self.szDropdownName = self.DEBUG_DROPDOWN_ID screen.addDropDownBoxGFC(self.szDropdownName, 22, 12, 300, WidgetTypes.WIDGET_GENERAL, -1, -1, FontTypes.GAME_FONT) for j in range(gc.getMAX_PLAYERS()): if (gc.getPlayer(j).isAlive()): screen.addPullDownString(self.szDropdownName, gc.getPlayer(j).getName(), j, j, False ) self.drawTabs()