class AbstractAlert(object): """Provides a base class and several convenience functions for implementing an alert. """ gc = CyGlobalContext() localText = CyTranslator() #config = CvConfigParser.CvConfigParser("Civ IV Gameplay Enhancements Config.ini") def __init__(self, eventManager, *args, **kwargs): super(AbstractAlert, self).__init__(*args, **kwargs)
class AbstractAlert(object): """Provides a base class and several convenience functions for implementing an alert. """ gc = CyGlobalContext() localText = CyTranslator() def __init__(self, eventManager, *args, **kwargs): super(AbstractAlert, self).__init__(*args, **kwargs) def _addMessageNoIcon(self, player, message): """Displays an on-screen message with no popup icon.""" self._addMessage(player, message, None, 0, 0) def _addMessageAtCity(self, player, message, icon, city): """Displays an on-screen message with a popup icon that zooms to the given city. """ self._addMessage(player, message, icon, city.getX(), city.getY()) def _addMessageAtPlot(self, player, message, icon, plot): """Displays an on-screen message with a popup icon that zooms to the given plot. """ self._addMessage(player, message, icon, plot.getX(), plot.getY()) def _addMessage(self, ePlayer, szString, szIcon, iFlashX, iFlashY): """Displays an on-screen message.""" eventMessageTimeLong = self.gc.getDefineINT("EVENT_MESSAGE_TIME_LONG") CyInterface().addMessage(ePlayer, True, eventMessageTimeLong, szString, None, 0, szIcon, ColorTypes(-1), iFlashX, iFlashY, True, True)
## Sid Meier's Civilization 4 ## Copyright Firaxis Games 2005 ## ## Alex Mantzaris / Jesse Smith 09-2005 from CvPythonExtensions import (CyGlobalContext, CyArtFileMgr, CyTranslator, FontTypes, CivilopediaPageTypes, NotifyCode, WidgetTypes, PanelStyles, AttitudeTypes, CyGameTextMgr, InputTypes, LeaderheadAction) import CvUtil # import ScreenInput import CvScreenEnums # import random # globals gc = CyGlobalContext() ArtFileMgr = CyArtFileMgr() localText = CyTranslator() class CvPediaLeader: "Civilopedia Screen for Leaders" def __init__(self, main): self.iLeader = -1 self.top = main self.X_LEADERHEAD_PANE = 10 self.Y_LEADERHEAD_PANE = 50 self.W_LEADERHEAD_PANE = 270 self.H_LEADERHEAD_PANE = 300
## AutoSave from CvPythonExtensions import CyGlobalContext GC = CyGlobalContext() GAME = GC.getGame() MAP = GC.getMap() def init(): import SystemPaths as SP global _saveDir, options _saveDir = SP.userDir + "\\Saves" import BugCore options = BugCore.game.AutoSave import CvEventInterface CvEventInterface.eventManager.addEventHandler("MapRegen", onMapRegen) CvEventInterface.eventManager.addEventHandler("endTurnReady", onEndTurnReady) CvEventInterface.eventManager.addEventHandler("GameEnd", onGameEnd) def onMapRegen(argsList): autoSave("[Start]", 0) def onEndTurnReady(argsList): iTurn, = argsList inter = options.getInterval() if inter > 0 and not iTurn % inter: autoSave("[Late]", iTurn) def onGameEnd(argsList): autoSave("[End]", argsList[0]) def save(type, prefix, iTurn):
def writeLog(): import SystemPaths as SP import CvUtil GC = CyGlobalContext() MAP = GC.getMap() GAME = GC.getGame() iPlayer = GAME.getActivePlayer() szName = CvUtil.convertToStr(GC.getActivePlayer().getName()) szName = SP.userDir + "\\Logs\\%s - Player %d - Turn %d OOSLog.txt" % ( szName, iPlayer, GAME.getGameTurn()) pFile = open(szName, "w") SEP = "-----------------------------------------------------------------\n" # Backup current language iLanguage = GAME.getCurrentLanguage() # Force english language for logs GAME.setCurrentLanguage(0) # Global data pFile.write(2 * SEP + "\tGLOBALS\n" + 2 * SEP + "\n") pFile.write("Last MapRand Value: %d\n" % GAME.getMapRand().getSeed()) pFile.write("Last SorenRand Value: %d\n" % GAME.getSorenRand().getSeed()) pFile.write("Total num cities: %d\n" % GAME.getNumCities()) pFile.write("Total population: %d\n" % GAME.getTotalPopulation()) pFile.write("Total Deals: %d\n" % GAME.getNumDeals()) pFile.write("Total owned plots: %d\n" % MAP.getOwnedPlots()) pFile.write("Total num areas: %d\n\n\n" % MAP.getNumAreas()) # Player data for iPlayer in xrange(GC.getMAX_PLAYERS()): pPlayer = GC.getPlayer(iPlayer) if pPlayer.isEverAlive(): pFile.write(2 * SEP + "%s player %d: %s\n" % (['NPC', 'Human'][pPlayer.isHuman()], iPlayer, CvUtil.convertToStr(pPlayer.getName()))) pFile.write( " Civilization: %s\n" % CvUtil.convertToStr(pPlayer.getCivilizationDescriptionKey())) pFile.write(" Alive: %s\n" % pPlayer.isAlive()) pFile.write(2 * SEP + "\n\nBasic data:\n-----------\n") pFile.write("Player %d Score: %d\n" % (iPlayer, GAME.getPlayerScore(iPlayer))) pFile.write("Player %d Population: %d\n" % (iPlayer, pPlayer.getTotalPopulation())) pFile.write("Player %d Total Land: %d\n" % (iPlayer, pPlayer.getTotalLand())) pFile.write("Player %d Gold: %d\n" % (iPlayer, pPlayer.getGold())) pFile.write("Player %d Assets: %d\n" % (iPlayer, pPlayer.getAssets())) pFile.write("Player %d Power: %d\n" % (iPlayer, pPlayer.getPower())) pFile.write("Player %d Num Cities: %d\n" % (iPlayer, pPlayer.getNumCities())) pFile.write("Player %d Num Units: %d\n" % (iPlayer, pPlayer.getNumUnits())) pFile.write("Player %d Num Selection Groups: %d\n" % (iPlayer, pPlayer.getNumSelectionGroups())) pFile.write("Player %d Difficulty: %d\n" % (iPlayer, pPlayer.getHandicapType())) pFile.write( "Player %d State Religion: %s\n" % (iPlayer, CvUtil.convertToStr(pPlayer.getStateReligionKey()))) pFile.write("Player %d Culture: %d\n" % (iPlayer, pPlayer.getCulture())) pFile.write("\n\nYields:\n-------\n") for iYield in xrange(YieldTypes.NUM_YIELD_TYPES): pFile.write("Player %d %s Total Yield: %d\n" % (iPlayer, CvUtil.convertToStr( GC.getYieldInfo(iYield).getDescription()), pPlayer.calculateTotalYield(iYield))) pFile.write("\n\nCommerce:\n---------\n") for iCommerce in xrange(CommerceTypes.NUM_COMMERCE_TYPES): pFile.write( "Player %d %s Total Commerce: %d\n" % (iPlayer, CvUtil.convertToStr( GC.getCommerceInfo(iCommerce).getDescription()), pPlayer.getCommerceRate(CommerceTypes(iCommerce)))) pFile.write("\n\nCity event history:\n-----------\n") if pPlayer.getNumCities(): pCity, i = pPlayer.firstCity(False) while pCity: bFirst = True for iEvent in xrange(GC.getNumEventInfos()): if pCity.isEventOccured(iEvent): if bFirst: pFile.write( "City: %s\n" % CvUtil.convertToStr(pCity.getName())) bFirst = False pFile.write("\t" + CvUtil.convertToStr( GC.getEventInfo(iEvent).getDescription()) + "\n") pCity, i = pPlayer.nextCity(i, False) pFile.write("\n\nCity Info:\n----------\n") if pPlayer.getNumCities(): pCity, i = pPlayer.firstCity(False) while pCity: pFile.write("City: %s\n" % CvUtil.convertToStr(pCity.getName())) pFile.write("X: %d, Y: %d\n" % (pCity.getX(), pCity.getY())) pFile.write("Population: %d\n" % (pCity.getPopulation())) pFile.write("Buildings: %d\n" % (pCity.getNumRealBuildings())) pFile.write("Improved Plots: %d\n" % (pCity.countNumImprovedPlots())) pFile.write("Tiles Worked: %d, Specialists: %d\n" % (pCity.getWorkingPopulation(), pCity.getSpecialistPopulation())) pFile.write("Great People: %d\n" % pCity.getNumGreatPeople()) pFile.write("Good Health: %d, Bad Health: %d\n" % (pCity.goodHealth(), pCity.badHealth(False))) pFile.write("Happy Level: %d, Unhappy Level: %d\n" % (pCity.happyLevel(), pCity.unhappyLevel(0))) pFile.write("Food: %d\n" % pCity.getFood()) pCity, i = pPlayer.nextCity(i, False) else: pFile.write("No Cities") pFile.write("\n\nBonus Info:\n-----------\n") for iBonus in xrange(GC.getNumBonusInfos()): szTemp = CvUtil.convertToStr( GC.getBonusInfo(iBonus).getDescription()) pFile.write( "Player %d, %s, Number Available: %d\n" % (iPlayer, szTemp, pPlayer.getNumAvailableBonuses(iBonus))) pFile.write("Player %d, %s, Import: %d\n" % (iPlayer, szTemp, pPlayer.getBonusImport(iBonus))) pFile.write("Player %d, %s, Export: %d\n\n" % (iPlayer, szTemp, pPlayer.getBonusExport(iBonus))) pFile.write("\n\nImprovement Info:\n-----------------\n") for iImprovement in xrange(GC.getNumImprovementInfos()): pFile.write( "Player %d, %s, Improvement count: %d\n" % (iPlayer, CvUtil.convertToStr( GC.getImprovementInfo(iImprovement).getDescription()), pPlayer.getImprovementCount(iImprovement))) pFile.write("\n\nBuilding Info:\n--------------------\n") for iBuilding in xrange(GC.getNumBuildingInfos()): pFile.write( "Player %d, %s, Building class count plus making: %d\n" % (iPlayer, CvUtil.convertToStr( GC.getBuildingInfo(iBuilding).getDescription()), pPlayer.getBuildingCountPlusMaking(iBuilding))) pFile.write("\n\nUnit Class Info:\n--------------------\n") for iUnit in xrange(GC.getNumUnitInfos()): pFile.write( "Player %d, %s, Unit class count plus training: %d\n" % (iPlayer, CvUtil.convertToStr( GC.getUnitInfo(iUnit).getDescription()), pPlayer.getUnitCountPlusMaking(iUnit))) pFile.write("\n\nUnitAI Types Info:\n------------------\n") for iUnitAIType in xrange(int(UnitAITypes.NUM_UNITAI_TYPES)): pFile.write( "Player %d, %s, Unit AI Type count: %d\n" % (iPlayer, GC.getUnitAIInfo(iUnitAIType).getType(), pPlayer.AI_totalUnitAIs(UnitAITypes(iUnitAIType)))) pFile.write("\n\nCity Religions:\n-----------\n") if pPlayer.getNumCities(): pCity, i = pPlayer.firstCity(False) while pCity: bFirst = True for iReligion in xrange(GC.getNumReligionInfos()): if pCity.isHasReligion(iReligion): if bFirst: pFile.write( "City: %s\n" % CvUtil.convertToStr(pCity.getName())) bFirst = False pFile.write("\t" + CvUtil.convertToStr( GC.getReligionInfo(iReligion).getDescription()) + "\n") pCity, i = pPlayer.nextCity(i, False) pFile.write("\n\nCity Corporations:\n-----------\n") if pPlayer.getNumCities(): pCity, i = pPlayer.firstCity(False) while pCity: bFirst = True for iCorporation in xrange(GC.getNumCorporationInfos()): if pCity.isHasCorporation(iCorporation): if bFirst: pFile.write( "City: %s\n" % CvUtil.convertToStr(pCity.getName())) bFirst = False pFile.write("\t" + CvUtil.convertToStr( GC.getCorporationInfo( iCorporation).getDescription()) + "\n") pCity, i = pPlayer.nextCity(i, False) pFile.write("\n\nUnit Info:\n----------\n") if pPlayer.getNumUnits(): for pUnit in pPlayer.units(): pFile.write("Player %d, Unit ID: %d, %s\n" % (iPlayer, pUnit.getID(), CvUtil.convertToStr(pUnit.getName()))) pFile.write( "X: %d, Y: %d\nDamage: %d\n" % (pUnit.getX(), pUnit.getY(), pUnit.getDamage())) pFile.write("Experience: %d\nLevel: %d\n" % (pUnit.getExperience(), pUnit.getLevel())) bFirst = True for j in xrange(GC.getNumPromotionInfos()): if pUnit.isHasPromotion(j): if bFirst: pFile.write("Promotions:\n") bFirst = False pFile.write("\t" + CvUtil.convertToStr( GC.getPromotionInfo(j).getDescription()) + "\n") bFirst = True for j in xrange(GC.getNumUnitCombatInfos()): if pUnit.isHasUnitCombat(j): if bFirst: pFile.write("UnitCombats:\n") bFirst = False pFile.write("\t" + CvUtil.convertToStr( GC.getUnitCombatInfo(j).getDescription()) + "\n") else: pFile.write("No Units") # Space at end of player's info pFile.write("\n\n") # Close file pFile.close() # Restore current language GAME.setCurrentLanguage(iLanguage)
def interfaceScreen(self, iTech): self.EXIT_TEXT = localText.getText("TXT_KEY_SCREEN_CONTINUE", ()) self.nTechs = CyGlobalContext().getNumTechInfos() self.iTech = iTech self.nWidgetCount = 0 # Create screen screen = self.getScreen() techInfo = CyGlobalContext().getTechInfo(self.iTech) screen.setSound(techInfo.getSound()) screen.showScreen(PopupStates.POPUPSTATE_IMMEDIATE, False) screen.enableWorldSounds( False ) # screen.setHelpTextArea(self.W_HELP_AREA, FontTypes.SMALL_FONT, self.X_UNIT_PANE, self.Y_UNIT_PANE, self.Z_HELP_AREA, 1, CyArtFileMgr().getInterfaceArtInfo("POPUPS_BACKGROUND_TRANSPARENT").getPath(), True, True, CvUtil.FONT_LEFT_JUSTIFY, 0 ) # screen.addDDSGFC( "TechSplashBackground", CyArtFileMgr().getInterfaceArtInfo("TEMP_BG").getPath(), 0, 0, self.W_SCREEN, self.H_SCREEN, WidgetTypes.WIDGET_GENERAL, -1, -1 ) screen.showWindowBackground( False ) screen.setDimensions(screen.centerX(0), screen.centerY(0), self.W_SCREEN, self.H_SCREEN) # Create panels # Main Panel szMainPanel = "TechSplashMainPanel" screen.addPanel( szMainPanel, "", "", True, True, self.X_MAIN_PANEL, self.Y_MAIN_PANEL, self.W_MAIN_PANEL, self.H_MAIN_PANEL, PanelStyles.PANEL_STYLE_MAIN ) # Top Panel szHeaderPanel = "TechSplashHeaderPanel" screen.addPanel( szHeaderPanel, "", "", True, True, self.X_UPPER_PANEL, self.Y_UPPER_PANEL, self.W_UPPER_PANEL, self.H_UPPER_PANEL, PanelStyles.PANEL_STYLE_DAWNBOTTOM ) screen.setStyle(szHeaderPanel, "Panel_DawnBottom_Style") # Icon Panel szIconPanel = "IconPanel" screen.addPanel( szIconPanel, "", "", True, True, self.X_ICON_PANEL, self.Y_ICON_PANEL, self.W_UPPER_PANEL-(self.iMarginSpace * 2), self.H_UPPER_PANEL-(self.iMarginSpace * 4), PanelStyles.PANEL_STYLE_MAIN_TAN15 ) screen.setStyle(szIconPanel, "Panel_TechDiscover_Style") # Icon Panel szIconPanel = "IconPanelGlow" screen.addPanel( szIconPanel, "", "", True, True, self.X_ICON_PANEL, self.Y_ICON_PANEL, self.W_ICON_PANEL, self.H_ICON_PANEL, PanelStyles.PANEL_STYLE_MAIN_TAN15 ) screen.setStyle(szIconPanel, "Panel_TechDiscoverGlow_Style") # Bottom Panel szTextPanel = "TechSplashTextPanel" screen.addPanel( szTextPanel, "", "", True, True, self.X_LOWER_PANEL+self.iMarginSpace, self.Y_LOWER_PANEL, self.W_LOWER_PANEL-(self.iMarginSpace * 2), self.H_LOWER_PANEL, PanelStyles.PANEL_STYLE_MAIN ) screen.setStyle(szTextPanel, "Panel_TanT_Style") # Exit Button screen.setButtonGFC("Exit", localText.getText("TXT_KEY_SCREEN_CONTINUE", ()), "", self.X_EXIT, self.Y_EXIT, self.W_EXIT , self.H_EXIT, WidgetTypes.WIDGET_CLOSE_SCREEN, -1, -1, ButtonStyles.BUTTON_STYLE_STANDARD ) # Special Panel szSpecialPanel = "TechSplashSpecialPanel" screen.addPanel( szSpecialPanel, "", "", True, True, self.X_SPECIAL_PANEL+self.iMarginSpace, self.Y_SPECIAL_PANEL, self.W_SPECIAL_PANEL-(self.iMarginSpace * 2), self.H_SPECIAL_PANEL, PanelStyles.PANEL_STYLE_IN ) screen.setStyle(szSpecialPanel, "Panel_Black25_Style") #---Eingefügt START - kann komplett gelöscht werden----------------- # Allows PanelSIR panelNameSIR = "SIR" screen.addPanel( panelNameSIR, "", "", False, True, self.X_ALLOWS_PANELSIR+self.iMarginSpace, self.Y_ALLOWS_PANELSIR, self.W_ALLOWS_PANELSIR-(self.iMarginSpace * 2), self.H_ALLOWS_PANELSIR, PanelStyles.PANEL_STYLE_IN ) screen.setStyle(panelNameSIR, "Panel_Black25_Style") #---Eingefügt ENDE ------------------------------------------------- # Allows Panel panelName = self.getNextWidgetName() screen.addPanel( panelName, "", "", False, True, self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL, self.W_ALLOWS_PANEL-(self.iMarginSpace * 2), self.H_ALLOWS_PANEL, PanelStyles.PANEL_STYLE_IN ) screen.setStyle(panelName, "Panel_Black25_Style") #---Eingefügt START - kann komplett gelöscht werden----------------- # Allows Panel2 panelName2 = "SIR2" screen.addPanel( panelName2, "", "", False, True, self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL2, self.W_ALLOWS_PANEL-(self.iMarginSpace * 2), self.H_ALLOWS_PANEL, PanelStyles.PANEL_STYLE_IN ) screen.setStyle(panelName2, "Panel_Black25_Style") # Allows Panel3 panelName3 = "SIR3" screen.addPanel( panelName3, "", "", False, True, self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL3, self.W_ALLOWS_PANEL-(self.iMarginSpace * 2), self.H_ALLOWS_PANEL, PanelStyles.PANEL_STYLE_IN ) screen.setStyle(panelName3, "Panel_Black25_Style") #---Eingefügt ENDE ------------------------------------------------- # Add Contents # Title szTech = techInfo.getDescription() screen.setLabel(self.getNextWidgetName(), "Background", u"<font=4>" + szTech.upper() + u"</font>", CvUtil.FONT_CENTER_JUSTIFY, self.X_TITLE, self.Y_TITLE, self.Z_CONTROLS, FontTypes.GAME_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1 ) # Tech Icon screen.addDDSGFC(self.getNextWidgetName(), techInfo.getButton(), self.X_ICON, self.Y_ICON, self.W_ICON, self.H_ICON, WidgetTypes.WIDGET_PEDIA_JUMP_TO_TECH, self.iTech, -1 ) # Tech Quote szTechQuote = techInfo.getQuote() iTextOffset = 0 if TechWindowOpt.isShowCivilopediaText(): szTechQuote += "\n\n" + techInfo.getCivilopedia() else: iTextOffset = 20 screen.addMultilineText( "Text", szTechQuote, self.X_QUOTE, self.Y_QUOTE + iTextOffset, self.W_QUOTE, self.H_QUOTE - iTextOffset, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) # Special szSpecialTitle = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_SPECIAL_ABILITIES", ()) + u"</font>" szSpecialTitleWidget = "SpecialTitle" screen.setText(szSpecialTitleWidget, "", szSpecialTitle, CvUtil.FONT_LEFT_JUSTIFY, self.X_SPECIAL_PANEL+self.iMarginSpace, self.Y_SPECIAL_PANEL - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1) listName = self.getNextWidgetName() szSpecialText = CyGameTextMgr().getTechHelp(self.iTech, True, False, False, True, -1)[1:] screen.addMultilineText(listName, szSpecialText, self.X_SPECIAL_PANEL+10, self.Y_SPECIAL_PANEL+5, self.W_SPECIAL_PANEL-20, self.H_SPECIAL_PANEL-20, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY) #---Eingefügt START - kann komplett gelöscht werden -------------- # Allows -> LeadsTo szAllowsTitleDescSIR = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_LEADS_TO", ()) + ":" + u"</font>" szAllowsTitleWidgetSIR = "AllowsTitleSIR" screen.setText(szAllowsTitleWidgetSIR, "", szAllowsTitleDescSIR, CvUtil.FONT_LEFT_JUSTIFY, self.X_ALLOWS_PANELSIR+self.iMarginSpace, self.Y_ALLOWS_PANELSIR - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1) for j in xrange(CyGlobalContext().getNumTechInfos()): for k in xrange(CyGlobalContext().getDefineINT("NUM_OR_TECH_PREREQS")): iPrereq = CyGlobalContext().getTechInfo(j).getPrereqOrTechs(k) if (iPrereq == self.iTech): screen.attachImageButton( panelNameSIR, "", CyGlobalContext().getTechInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_DERIVED_TECH, j, self.iTech, False ) for k in xrange(CyGlobalContext().getDefineINT("NUM_AND_TECH_PREREQS")): iPrereq = CyGlobalContext().getTechInfo(j).getPrereqAndTechs(k) if (iPrereq == self.iTech): screen.attachImageButton( panelNameSIR, "", CyGlobalContext().getTechInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_DERIVED_TECH, j, self.iTech, False ) #---Eingefügt ENDE ------------------------------------------------ # Allows # szAllowsTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_ALLOWS", ()) + ":" + u"</font>" # szAllowsTitleWidget = "AllowsTitle" # screen.setText(szAllowsTitleWidget, "", szAllowsTitleDesc, CvUtil.FONT_LEFT_JUSTIFY, # self.X_ALLOWS_PANEL+self.iMarginSpace, self.Y_ALLOWS_PANEL - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1) # Units Enabled szUnitsTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_UNITS_ENABLED", ()) + ":" + u"</font>" szUnitsTitleWidget = "UnitsTitle" screen.setText(szUnitsTitleWidget, "", szUnitsTitleDesc, CvUtil.FONT_LEFT_JUSTIFY, self.X_ALLOWS_PANEL + self.iMarginSpace, self.Y_ALLOWS_PANEL - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1) for j in xrange( CyGlobalContext().getNumUnitClassInfos() ): eLoopUnit = CyGlobalContext().getCivilizationInfo(CyGlobalContext().getGame().getActiveCivilizationType()).getCivilizationUnits(j) if (eLoopUnit != -1): if (isTechRequiredForUnit(self.iTech, eLoopUnit)): screen.attachImageButton( panelName, "", CyGlobalContext().getUnitInfo(eLoopUnit).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_UNIT, eLoopUnit, 1, False ) # Buildings Enabled szBuildingsTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_BUILDINGS_ENABLED", ()) + ":" + u"</font>" szBuildingsTitleWidget = "BuildingsTitle" screen.setText(szBuildingsTitleWidget, "", szBuildingsTitleDesc, CvUtil.FONT_LEFT_JUSTIFY, self.X_ALLOWS_PANEL + self.iMarginSpace, self.Y_ALLOWS_PANEL2 - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1) for j in xrange(CyGlobalContext().getNumBuildingClassInfos()): bTechFound = 0 eLoopBuilding = CyGlobalContext().getCivilizationInfo(CyGlobalContext().getGame().getActiveCivilizationType()).getCivilizationBuildings(j) if (eLoopBuilding != -1): if (isTechRequiredForBuilding(self.iTech, eLoopBuilding)): screen.attachImageButton( panelName2, "", CyGlobalContext().getBuildingInfo(eLoopBuilding).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_BUILDING, eLoopBuilding, 1, False ) # Improvements szImprovesTitleDesc = u"<font=3b>" + localText.getText("TXT_KEY_PEDIA_CATEGORY_IMPROVEMENT", ()) + ":" + u"</font>" szImprovesTitleWidget = "ImprovesTitle" screen.setText(szImprovesTitleWidget, "", szImprovesTitleDesc, CvUtil.FONT_LEFT_JUSTIFY, self.X_ALLOWS_PANEL + self.iMarginSpace, self.Y_ALLOWS_PANEL3 - 20, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1) for j in xrange(CyGlobalContext().getNumProjectInfos()): bTechFound = 0 if (isTechRequiredForProject(self.iTech, j)): screen.attachImageButton( panelName3, "", CyGlobalContext().getProjectInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_PROJECT, j, 1, False ) for j in xrange(CyGlobalContext().getNumPromotionInfos()): if (CyGlobalContext().getPromotionInfo(j).getTechPrereq() == self.iTech): screen.attachImageButton( panelName3, "", CyGlobalContext().getPromotionInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_PROMOTION, j, 1, False ) #---Eingefügt START - kann komplett gelöscht werden -------------- # Improvements for j in xrange(CyGlobalContext().getNumBuildInfos()): bTechFound = 0; if (CyGlobalContext().getBuildInfo(j).getTechPrereq() == -1): bTechFound = 0 for k in xrange(CyGlobalContext().getNumFeatureInfos()): if (CyGlobalContext().getBuildInfo(j).getFeatureTech(k) == self.iTech): bTechFound = 1 else: if (CyGlobalContext().getBuildInfo(j).getTechPrereq() == self.iTech): bTechFound = 1 if (bTechFound == 1): if (CyGlobalContext().getBuildInfo(j).getImprovement() == -1): screen.attachImageButton( panelName3, "", CyGlobalContext().getBuildInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_HELP_IMPROVEMENT, j, 1, False ) else: screen.attachImageButton( panelName3, "", CyGlobalContext().getBuildInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_IMPROVEMENT, CyGlobalContext().getBuildInfo(j).getImprovement(), 1, False ) # Bonuses for j in xrange(CyGlobalContext().getNumBonusInfos()): if (CyGlobalContext().getBonusInfo(j).getTechReveal() == self.iTech): screen.attachImageButton( panelName3, "", CyGlobalContext().getBonusInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_BONUS, j, 1, False ) # Civic for j in xrange(CyGlobalContext().getNumCivicInfos()): if (CyGlobalContext().getCivicInfo(j).getTechPrereq() == self.iTech): screen.attachImageButton( panelName3, "", CyGlobalContext().getCivicInfo(j).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_CIVIC, j, 1, False )
def create(self, screen): self.createTab(screen) panel = self.createMainPanel(screen) left, center, right = self.addThreeColumnLayout( screen, panel, panel, True) GC = CyGlobalContext() GAME = GC.getGame() bCanAdjustSettings = not GAME.isGameMultiPlayer( ) or GAME.getActivePlayer() == 0 #Flexible Difficulty self.addLabel(screen, left, "RoMSettings__FlexibleDifficulty") screen.setEnabled( self.addCheckbox(screen, left, "RoMSettings__EnableFlexibleDifficulty"), bCanAdjustSettings) screen.setEnabled( self.addTextDropdown(screen, left, left, "RoMSettings__FlexibleDifficultyMinimumDiff", False, "LAYOUT_LEFT"), bCanAdjustSettings) screen.setEnabled( self.addTextDropdown(screen, left, left, "RoMSettings__FlexibleDifficultyMaximumDiff", False, "LAYOUT_LEFT"), bCanAdjustSettings) screen.setEnabled( self.addIntDropdown( screen, left, left, "RoMSettings__FlexibleDifficultyTurnIncrements", False, "LAYOUT_LEFT"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, left, "RoMSettings__FlexibleDifficultyAI"), bCanAdjustSettings) screen.setEnabled( self.addTextDropdown(screen, left, left, "RoMSettings__CurrentDifficulty", False, "LAYOUT_LEFT"), bCanAdjustSettings) self.addTextDropdown( screen, left, left, "RoMSettings__PlayerColor", False, "LAYOUT_LEFT" ) # This might be OOS safe, but I'm not sure... Toffer. #Reset Settings self.addSpacer(screen, left, "") self.addCheckbox(screen, left, "RoMSettings__RoMReset") #City Management self.addLabel(screen, center, "RoMSettings__CityManagement") screen.setEnabled( self.addIntDropdown(screen, center, center, "RoMSettings__MaxBombardDefense", False, "LAYOUT_LEFT"), bCanAdjustSettings) self.addCheckbox(screen, center, "RoMSettings__ShowCoastalBuildings") self.addCheckbox(screen, center, "RoMSettings__HideObsoleteBuildings") self.addCheckbox(screen, center, "RoMSettings__HideReplacedBuildings") self.addCheckbox(screen, center, "RoMSettings__HideUnconstructableBuildings") self.addCheckbox(screen, center, "RoMSettings__HideUntrainableUnits") #Empire Management self.addLabel(screen, center, "RoMSettings__EmpireManagement") self.addCheckbox(screen, center, "RoMSettings__ShowCivTraits") self.addCheckbox(screen, center, "RoMSettings__HideUnavailableBuilds") if GAME.isOption(GameOptionTypes.GAMEOPTION_REVOLUTION): self.addCheckbox(screen, center, "RoMSettings__ShowRevCivics") if GAME.isOption(GameOptionTypes.GAMEOPTION_PERSONALIZED_MAP): self.addCheckbox(screen, center, "RoMSettings__UseLandmarkNames") self.addCheckbox(screen, center, "RoMSettings__EventImages") screen.setEnabled( self.addCheckbox(screen, center, "RoMSettings__StrategicEvents"), bCanAdjustSettings) self.addCheckbox(screen, center, "RoMSettings__IgnoreDisabledBuildingAlerts") self.addCheckbox(screen, center, "RoMSettings__NoProductionPopup") screen.setEnabled( self.addCheckbox(screen, center, "RoMSettings__InfrastructureIgnoresImprovements"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, center, "RoMSettings__CanNotClaimOcean"), bCanAdjustSettings) self.addCheckbox(screen, center, "RoMSettings__NoFriendlyPillaging") #Game Settings self.addLabel(screen, right, "RoMSettings__GameSettings") screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__DefenderWithdraw"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__DepletionMod"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__BetterAirInterception"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__BattlefieldPromotions"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__ImprovedXP"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__WarPrizes"), bCanAdjustSettings) if GC.getInfoTypeForStringWithHiddenAssert( "VICTORY_TOTAL") > 0 and GAME.isVictoryValid( GC.getInfoTypeForString("VICTORY_TOTAL")): screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__MercyRule"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__RealisiticDiplomacy"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__NoStorms"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__MultipleReligionSpread"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__TelepathicReligion"), bCanAdjustSettings) screen.setEnabled( self.addIntDropdown(screen, right, right, "RoMSettings__MaxRebaseRange"), bCanAdjustSettings) screen.setEnabled( self.addIntDropdown(screen, right, right, "RoMSettings__MaxUnitsPerTile"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__TerrainDamage"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__AllowTerraforming"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__Reforestation"), bCanAdjustSettings) screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__SeaTunnels"), bCanAdjustSettings) if GAME.isOption(GameOptionTypes.GAMEOPTION_REALISTIC_CORPORATIONS): screen.setEnabled( self.addCheckbox(screen, right, "RoMSettings__NoAutoCorporationFounding"), bCanAdjustSettings) if GAME.isGameMultiPlayer(): self.addCheckbox(screen, right, "RoMSettings__PlayWaitingAlertSound") self.addIntDropdown(screen, right, right, "RoMSettings__PlayWaitingAlertSoundTimer")
### Imports from CvPythonExtensions import (CyGlobalContext, CyInterface, CyTranslator, DirectionTypes, ColorTypes, UnitAITypes, CyPopupInfo, ButtonPopupTypes, CyAudioGame, plotXY, GameOptionTypes) # import CvEventInterface import CvUtil import PyHelpers # TODO remove # DEBUG code for Python 3 linter # unicode = str # xrange = range ### Defines gc = CyGlobalContext() PyPlayer = PyHelpers.PyPlayer bMultiPlayer = False bGoodyHuts = True bBarbForts = True bRageBarbs = False if gc.getGame().isGameMultiPlayer(): bMultiPlayer = True if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_GOODY_HUTS): bGoodyHuts = False if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_BARBARIANS): bBarbForts = False if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_RAGING_BARBARIANS): bRageBarbs = True
ButtonPopupTypes, plotXY, plotDirection, GameOptionTypes) # import CvEventInterface import CvUtil import PAE_Barbaren import PAE_Lists as L import PyHelpers # TODO remove # DEBUG code for Python 3 linter # unicode = str # xrange = range ### Defines gc = CyGlobalContext() PyPlayer = PyHelpers.PyPlayer bMultiPlayer = gc.getGame().isGameMultiPlayer() bGoodyHuts = not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_GOODY_HUTS) bBarbForts = not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_BARBARIANS) bRageBarbs = gc.getGame().isOption(GameOptionTypes.GAMEOPTION_RAGING_BARBARIANS) # PAE VI: kein Treibgut mehr erstellen, es gibt eh soviel durch Seeschlachten bFlotsam = False # activates flotsam after a certain tech lNumHistoryTexts = { -3480: 4, -3000: 5, -2680: 4,
CyCity, YieldTypes, TradeData, GameOptionTypes) import BugUtil # import GameUtil import PlayerUtil import CvUtil # TODO remove # DEBUG code for Python 3 linter # unicode = str # xrange = range # Mod BUG - Mac Support - start BugUtil.fixSets(globals()) # Mod BUG - Mac Support - end gc = CyGlobalContext() CORP_BONUSES = {} DOMESTIC_TRADE = 0 DOMESTIC_OVERSEAS_TRADE = 1 FOREIGN_TRADE = 2 FOREIGN_OVERSEAS_TRADE = 3 MAX_TRADE_ROUTES = gc.getDefineINT("MAX_TRADE_ROUTES") FRACTIONAL_TRADE = False TRADE_PROFIT_FUNC = None TRADE_FORMATS = {} ## Trading Partners
def setup(): global RebelTypeList RebelTypeList = list() GC = CyGlobalContext() for idx in range(0, GC.getNumCivilizationInfos()): RebelTypeList.append(list()) try: iArabia = GC.getInfoTypeForString('CIVILIZATION_ARABIA') iAssyria = GC.getInfoTypeForString('CIVILIZATION_ASSYRIA') iAztec = GC.getInfoTypeForString('CIVILIZATION_AZTEC') iBabylon = GC.getInfoTypeForString('CIVILIZATION_BABYLON') iByzantium = GC.getInfoTypeForString('CIVILIZATION_BYZANTIUM') iCarthage = GC.getInfoTypeForString('CIVILIZATION_CARTHAGE') iCelt = GC.getInfoTypeForString('CIVILIZATION_CELT') iChina = GC.getInfoTypeForString('CIVILIZATION_CHINA') iEgypt = GC.getInfoTypeForString('CIVILIZATION_EGYPT') iEngland = GC.getInfoTypeForString('CIVILIZATION_ENGLAND') iEthiopia = GC.getInfoTypeForString('CIVILIZATION_ETHIOPIA') iFrance = GC.getInfoTypeForString('CIVILIZATION_FRANCE') iGermany = GC.getInfoTypeForString('CIVILIZATION_GERMANY') iGreece = GC.getInfoTypeForString('CIVILIZATION_GREECE') iHittites = GC.getInfoTypeForString('CIVILIZATION_HITTITES') iHolyRoman = GC.getInfoTypeForString('CIVILIZATION_HOLY_ROMAN') iInca = GC.getInfoTypeForString('CIVILIZATION_INCA') iIndia = GC.getInfoTypeForString('CIVILIZATION_INDIA') iIroquois = GC.getInfoTypeForString('CIVILIZATION_IROQUOIS') iJapan = GC.getInfoTypeForString('CIVILIZATION_JAPAN') iKhmer = GC.getInfoTypeForString('CIVILIZATION_KHMER') iKorea = GC.getInfoTypeForString('CIVILIZATION_KOREA') iMali = GC.getInfoTypeForString('CIVILIZATION_MALI') iMaya = GC.getInfoTypeForString('CIVILIZATION_MAYA') iMongol = GC.getInfoTypeForString('CIVILIZATION_MONGOL') iNativeAmerica = GC.getInfoTypeForString('CIVILIZATION_NATIVE_AMERICA') iNetherlands = GC.getInfoTypeForString('CIVILIZATION_NETHERLANDS') iOttoman = GC.getInfoTypeForString('CIVILIZATION_OTTOMAN') iPersia = GC.getInfoTypeForString('CIVILIZATION_PERSIA') iPortugal = GC.getInfoTypeForString('CIVILIZATION_PORTUGAL') iRome = GC.getInfoTypeForString('CIVILIZATION_ROME') iRussia = GC.getInfoTypeForString('CIVILIZATION_RUSSIA') iSiam = GC.getInfoTypeForString('CIVILIZATION_SIAM') iSpain = GC.getInfoTypeForString('CIVILIZATION_SPAIN') iSumeria = GC.getInfoTypeForString('CIVILIZATION_SUMERIA') iUnitedStates = GC.getInfoTypeForString('CIVILIZATION_UNITED_STATES') iViking = GC.getInfoTypeForString('CIVILIZATION_VIKING') iZulu = GC.getInfoTypeForString('CIVILIZATION_ZULU') except: print "Error! Civ not found. -RebelTypes.py" # Format is: # RebelTypeList[iHomeland] = [iRebel1, iRebel2, iRebel3] try: RebelTypeList[iArabia] = [ iEgypt, iPersia, iOttoman, iBabylon, iSumeria, iAssyria ] RebelTypeList[iAssyria] = [ iPersia, iBabylon, iSumeria, iHittites, iEgypt, iArabia ] RebelTypeList[iAztec] = [ iInca, iSpain, iNativeAmerica, iMaya, iIroquois ] RebelTypeList[iBabylon] = [ iSumeria, iPersia, iGreece, iEgypt, iArabia, iAssyria, iHittites ] RebelTypeList[iByzantium] = [ iGreece, iRome, iOttoman, iHolyRoman, iHittites ] RebelTypeList[iCarthage] = [iRome, iGreece, iMali, iSpain] RebelTypeList[iCelt] = [iFrance, iEngland, iGermany, iSpain] RebelTypeList[iChina] = [ iKorea, iMongol, iIndia, iJapan, iKhmer, iSiam ] RebelTypeList[iEgypt] = [ iBabylon, iArabia, iPersia, iGreece, iEthiopia, iAssyria, iHittites ] RebelTypeList[iEngland] = [ iUnitedStates, iIndia, iZulu, iNetherlands, iCelt ] RebelTypeList[iEthiopia] = [iEgypt, iMali, iZulu, iArabia] RebelTypeList[iFrance] = [iGermany, iCelt, iEngland, iMali, iHolyRoman] RebelTypeList[iGermany] = [ iFrance, iRussia, iViking, iHolyRoman, iNetherlands ] RebelTypeList[iGreece] = [ iRome, iPersia, iCarthage, iOttoman, iHittites ] RebelTypeList[iHittites] = [ iAssyria, iEgypt, iPersia, iOttoman, iByzantium, iGreece, iBabylon ] RebelTypeList[iHolyRoman] = [iGermany, iFrance, iSpain, iByzantium] RebelTypeList[iInca] = [ iAztec, iSpain, iMaya, iNativeAmerica, iIroquois ] RebelTypeList[iIndia] = [iPersia, iSiam, iChina, iEngland, iKhmer] RebelTypeList[iIroquois] = [ iNativeAmerica, iAztec, iMaya, iInca, iUnitedStates ] RebelTypeList[iJapan] = [iKorea, iChina, iMongol, iKhmer, iSiam] RebelTypeList[iKhmer] = [iSiam, iIndia, iChina, iMongol, iJapan] RebelTypeList[iKorea] = [iJapan, iChina, iMongol, iKhmer] RebelTypeList[iMali] = [iCarthage, iEgypt, iFrance, iZulu, iEthiopia] RebelTypeList[iMaya] = [ iAztec, iInca, iSpain, iNativeAmerica, iIroquois ] RebelTypeList[iMongol] = [iChina, iRussia, iPersia, iKorea, iSiam] RebelTypeList[iNativeAmerica] = [ iIroquois, iAztec, iMaya, iUnitedStates, iInca ] RebelTypeList[iNetherlands] = [ iPortugal, iGermany, iEngland, iUnitedStates ] RebelTypeList[iOttoman] = [ iPersia, iGreece, iGermany, iArabia, iByzantium, iHittites ] RebelTypeList[iPersia] = [ iOttoman, iIndia, iMongol, iGreece, iSumeria, iBabylon, iAssyria, iHittites ] RebelTypeList[iPortugal] = [iSpain, iFrance, iNetherlands] RebelTypeList[iRome] = [iGreece, iCarthage, iCelt, iEgypt, iByzantium] RebelTypeList[iRussia] = [iViking, iGermany, iMongol, iPersia] RebelTypeList[iSiam] = [iKhmer, iIndia, iChina, iMongol, iJapan] RebelTypeList[iSpain] = [iPortugal, iArabia, iAztec, iInca, iHolyRoman] RebelTypeList[iSumeria] = [ iBabylon, iOttoman, iGreece, iPersia, iAssyria ] RebelTypeList[iUnitedStates] = [ iEngland, iAztec, iNativeAmerica, iIroquois ] RebelTypeList[iViking] = [iRussia, iGermany, iEngland, iUnitedStates] RebelTypeList[iZulu] = [iMali, iArabia, iEgypt, iEthiopia] except: print "Error! Rebel types not found, no short lists available"