home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2006 January / Gamestar_80_2006-01_dvd.iso / Dema / Civilization4 / data1.cab / Civ4DemoComponent / Assets / Python / Screens / CvPediaTerrain.py < prev    next >
Encoding:
Python Source  |  2005-11-09  |  5.2 KB  |  144 lines

  1. ## Sid Meier's Civilization 4
  2. ## Copyright Firaxis Games 2005
  3. from CvPythonExtensions import *
  4. import CvUtil
  5. import ScreenInput
  6. import CvScreenEnums
  7. import string
  8.  
  9. # globals
  10. gc = CyGlobalContext()
  11. ArtFileMgr = CyArtFileMgr()
  12. localText = CyTranslator()
  13.  
  14. class CvPediaTerrain:
  15.     "Civilopedia Screen for Terrain"
  16.  
  17.     def __init__(self, main):
  18.         self.iTerrain = -1
  19.         self.top = main
  20.         
  21.         self.X_ICON_PANE = 20 + 30
  22.         self.Y_ICON_PANE = 70 + 30
  23.         self.W_ICON_PANE = 433
  24.         self.H_ICON_PANE = 210
  25.  
  26.         self.X_ICON = 48 + 30
  27.         self.Y_ICON = 105 + 30
  28.         self.W_ICON = 150
  29.         self.H_ICON = 150
  30.         self.ICON_SIZE = 64
  31.         
  32.         self.X_STATS_PANE = 215 + 30
  33.         self.Y_STATS_PANE = 140 + 30
  34.         self.W_STATS_PANE = 220
  35.         self.H_STATS_PANE = 120
  36.         
  37.         self.X_SPECIAL_PANE = 50
  38.         self.Y_SPECIAL_PANE = 320
  39.         self.W_SPECIAL_PANE = 690
  40.         self.H_SPECIAL_PANE = 350
  41.  
  42.     # Screen construction function
  43.     def interfaceScreen(self, iTerrain):    
  44.             
  45.         self.iTerrain = iTerrain
  46.     
  47.         self.top.deleteAllWidgets()                        
  48.                             
  49.         screen = self.top.getScreen()
  50.         
  51.         bNotActive = (not screen.isActive())
  52.         if bNotActive:
  53.             self.top.setPediaCommonWidgets()
  54.  
  55.         # Header...
  56.         szHeader = u"<font=4b>" + gc.getTerrainInfo(self.iTerrain).getDescription().upper() + u"</font>"
  57.         szHeaderId = self.top.getNextWidgetName()
  58.         screen.setLabel(szHeaderId, "Background", szHeader, CvUtil.FONT_CENTER_JUSTIFY, self.top.X_SCREEN, self.top.Y_TITLE, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)
  59.         
  60.         # Top
  61.         screen.setText(self.top.getNextWidgetName(), "Background", self.top.MENU_TEXT, CvUtil.FONT_LEFT_JUSTIFY, self.top.X_MENU, self.top.Y_MENU, 0, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_PEDIA_MAIN, CivilopediaPageTypes.CIVILOPEDIA_PAGE_TERRAIN, -1)
  62.  
  63.         if self.top.iLastScreen    != CvScreenEnums.PEDIA_TERRAIN or bNotActive:        
  64.             self.placeLinks()
  65.             self.top.iLastScreen = CvScreenEnums.PEDIA_TERRAIN
  66.  
  67.         
  68.         # Icon
  69.         screen.addPanel( self.top.getNextWidgetName(), "", "", False, False,
  70.             self.X_ICON_PANE, self.Y_ICON_PANE, self.W_ICON_PANE, self.H_ICON_PANE, PanelStyles.PANEL_STYLE_BLUE50)
  71.         screen.addPanel(self.top.getNextWidgetName(), "", "", false, false,
  72.             self.X_ICON, self.Y_ICON, self.W_ICON, self.H_ICON, PanelStyles.PANEL_STYLE_MAIN)
  73.         screen.addDDSGFC(self.top.getNextWidgetName(), gc.getTerrainInfo(self.iTerrain).getButton(),
  74.             self.X_ICON + self.W_ICON/2 - self.ICON_SIZE/2, self.Y_ICON + self.H_ICON/2 - self.ICON_SIZE/2, self.ICON_SIZE, self.ICON_SIZE, WidgetTypes.WIDGET_GENERAL, -1, -1 )
  75.  
  76.         self.placeStats()
  77.  
  78.         self.placeSpecial()
  79.  
  80.  
  81.     def placeStats(self):
  82.     
  83.         screen = self.top.getScreen()
  84.         
  85.         panelName = self.top.getNextWidgetName()
  86.         screen.addListBoxGFC(panelName, "", self.X_STATS_PANE, self.Y_STATS_PANE, self.W_STATS_PANE, self.H_STATS_PANE, TableStyles.TABLE_STYLE_EMPTY)
  87. #        screen.addPanel( panelName, "", "", true, true, self.X_STATS_PANE, self.Y_STATS_PANE, self.W_STATS_PANE, self.H_STATS_PANE, PanelStyles.PANEL_STYLE_EMPTY )
  88.         screen.enableSelect(panelName, False)
  89.         
  90.         for k in range(YieldTypes.NUM_YIELD_TYPES):
  91.             iYield = gc.getTerrainInfo(self.iTerrain).getYield(k)
  92.             if (iYield != 0):                                                            
  93.                 szYield = (u"%s: %i" % (gc.getYieldInfo(k).getDescription().upper(), iYield))
  94.  
  95.                 screen.appendListBoxString(panelName, u"<font=4>" + szYield + (u"%c" % gc.getYieldInfo(k).getChar()) + u"</font>", WidgetTypes.WIDGET_GENERAL, 0, 0, CvUtil.FONT_LEFT_JUSTIFY)
  96. #                screen.attachTextGFC(panelName, "", szYield + (u"%c" % gc.getYieldInfo(k).getChar()), FontTypes.GAME_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1)
  97.  
  98.     def placeSpecial(self):
  99.         
  100.         screen = self.top.getScreen()
  101.         
  102.         panelName = self.top.getNextWidgetName()
  103.         screen.addPanel( panelName, localText.getText("TXT_KEY_PEDIA_SPECIAL_ABILITIES", ()), "", true, false, self.X_SPECIAL_PANE, self.Y_SPECIAL_PANE, self.W_SPECIAL_PANE, self.H_SPECIAL_PANE, PanelStyles.PANEL_STYLE_BLUE50 )
  104.         
  105.         listName = self.top.getNextWidgetName()
  106.         screen.attachListBoxGFC( panelName, listName, "", TableStyles.TABLE_STYLE_EMPTY )
  107.         screen.enableSelect(listName, False)
  108.         
  109.         szSpecialText = CyGameTextMgr().getTerrainHelp(self.iTerrain, True)
  110.         splitText = string.split( szSpecialText, "\n" )
  111.         for special in splitText:
  112.             if len( special ) != 0:
  113.                 screen.appendListBoxString( listName, special, WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY )
  114.         
  115.     def placeLinks(self):
  116.  
  117.         screen = self.top.getScreen()
  118.                 
  119.         screen.clearListBoxGFC(self.top.LIST_ID)
  120.         
  121.         # sort resources alphabetically
  122.         listSorted=[(0,0)]*gc.getNumTerrainInfos()
  123.         for j in range(gc.getNumTerrainInfos()):
  124.             listSorted[j] = (gc.getTerrainInfo(j).getDescription(), j)
  125.         listSorted.sort()    
  126.             
  127.         iSelected = 0
  128.         i = 0
  129.         for iI in range(gc.getNumTerrainInfos()):
  130.             if (not gc.getTerrainInfo(listSorted[iI][1]).isGraphicalOnly()):
  131.                 screen.appendListBoxString(self.top.LIST_ID, listSorted[iI][0], WidgetTypes.WIDGET_PEDIA_JUMP_TO_TERRAIN, listSorted[iI][1], 0, CvUtil.FONT_LEFT_JUSTIFY )
  132.                 if listSorted[iI][1] == self.iTerrain:
  133.                     iSelected = i
  134.                 i += 1
  135.  
  136.         screen.setSelectedListBoxStringGFC(self.top.LIST_ID, iSelected)
  137.                 
  138.  
  139.     # Will handle the input for this screen...
  140.     def handleInput (self, inputClass):
  141.         return 0
  142.  
  143.  
  144.