def drawContents(self): # Get the screen and the player screen = CyGInterfaceScreen("DomesticAdvisor", CvScreenEnums.DOMESTIC_ADVISOR) player = gc.getPlayer(CyGame().getActivePlayer()) screen.moveToFront("Background") # Build the table screen.addTableControlGFC("CityListBackground", 21, 18, 21, self.nTableWidth, self.nTableHeight, True, False, 24, 24, TableStyles.TABLE_STYLE_STANDARD) screen.enableSelect("CityListBackground", True) screen.enableSort("CityListBackground") screen.setStyle("CityListBackground", "Table_StandardCiv_Style") # Loop through the cities i = 0 (loopCity, iter) = player.firstCity(False) while loopCity: screen.appendTableRow("CityListBackground") if (loopCity.getName() in self.listSelectedCities): screen.selectRow("CityListBackground", i, True) self.updateTable(loopCity, i) i += 1 (loopCity, iter) = player.nextCity(iter, False) self.drawHeaders() self.drawSpecialists() screen.moveToBack("DomesticAdvisorBG") self.updateAppropriateCitySelection() CyInterface().setDirty(InterfaceDirtyBits.Domestic_Advisor_DIRTY_BIT, True)
def interfaceScreen(self): player = gc.getPlayer(gc.getGame().getActivePlayer()) # Create a new screen, called DomesticAdvisor, using the file CvDomesticAdvisor.py for input screen = CyGInterfaceScreen("DomesticAdvisor", CvScreenEnums.DOMESTIC_ADVISOR) self.nScreenWidth = screen.getXResolution() - 30 self.nScreenHeight = screen.getYResolution() - 250 self.nTableWidth = self.nScreenWidth - 35 self.nTableHeight = self.nScreenHeight - 85 self.nNormalizedTableWidth = 970 self.nFirstSpecialistX = 30 self.nSpecialistY = self.nScreenHeight - 55 self.nSpecialistWidth = 32 self.nSpecialistLength = 32 self.nSpecialistDistance = 100 # Offset from Specialist Image/Size for the Specialist Plus/Minus buttons self.nPlusOffsetX = -4 self.nMinusOffsetX = 16 self.nPlusOffsetY = self.nMinusOffsetY = 30 self.nPlusWidth = self.nPlusHeight = self.nMinusWidth = self.nMinusHeight = 20 # Offset from Specialist Image for the Specialist Text self.nSpecTextOffsetX = 40 self.nSpecTextOffsetY = 10 screen.setRenderInterfaceOnly(True) screen.setDimensions(15, 100, self.nScreenWidth, self.nScreenHeight) screen.showScreen(PopupStates.POPUPSTATE_IMMEDIATE, False) # Here we set the background widget and exit button, and we show the screen screen.addPanel("DomesticAdvisorBG", u"", u"", True, False, 0, 0, self.nScreenWidth, self.nScreenHeight, PanelStyles.PANEL_STYLE_MAIN) screen.setText( "DomesticExit", "Background", localText.getText("TXT_KEY_PEDIA_SCREEN_EXIT", ()).upper(), CvUtil.FONT_RIGHT_JUSTIFY, self.nScreenWidth - 25, self.nScreenHeight - 45, -0.1, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_CLOSE_SCREEN, -1, -1) bCanLiberate = False (loopCity, iter) = player.firstCity(False) while loopCity: if loopCity.getLiberationPlayer(False) != -1: # UNOFFICIAL_PATCH begin if not gc.getTeam( gc.getPlayer(loopCity.getLiberationPlayer(False)). getTeam()).isAtWar(CyGame().getActiveTeam()): bCanLiberate = True break # UNOFFICIAL_PATCH end (loopCity, iter) = player.nextCity(iter, False) if bCanLiberate or player.canSplitEmpire(): screen.setImageButton( "DomesticSplit", "", self.nScreenWidth - 180, self.nScreenHeight - 45, 28, 28, WidgetTypes.WIDGET_ACTION, gc.getControlInfo( ControlTypes.CONTROL_FREE_COLONY).getActionInfoIndex(), -1) screen.setStyle("DomesticSplit", "Button_HUDAdvisorVictory_Style") # Erase the flag? CyInterface().setDirty(InterfaceDirtyBits.MiscButtons_DIRTY_BIT, True) # Draw the city list... self.drawContents()