def placeRequires(self):
screen = self.top.getScreen()
panelName = self.top.getNextWidgetName()
screen.addPanel( panelName, localText.getText("TXT_KEY_PEDIA_REQUIRES", ()), "", false, true, self.X_PREREQ_PANE, self.Y_PREREQ_PANE, self.W_PREREQ_PANE, self.H_PREREQ_PANE, PanelStyles.PANEL_STYLE_BLUE50 )
screen.attachLabel(panelName, "", " ")
# add tech buttons
iPrereq = gc.getUnitInfo(self.iUnit).getPrereqAndTech()
if (iPrereq >= 0):
screen.attachImageButton( panelName, "", gc.getTechInfo(iPrereq).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_TECH, iPrereq, 1, False )
for j in range(gc.getDefineINT("NUM_UNIT_AND_TECH_PREREQS")):
iPrereq = gc.getUnitInfo(self.iUnit).getPrereqAndTechs(j)
if (iPrereq >= 0):
screen.attachImageButton( panelName, "", gc.getTechInfo(iPrereq).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_TECH, iPrereq, -1, False )
# add resource buttons
bFirst = True
iPrereq = gc.getUnitInfo(self.iUnit).getPrereqAndBonus()
if (iPrereq >= 0):
bFirst = False
screen.attachImageButton( panelName, "", gc.getBonusInfo(iPrereq).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_BONUS, iPrereq, -1, False )
# count the number of OR resources
nOr = 0
for j in range(gc.getNUM_UNIT_PREREQ_OR_BONUSES()):
if (gc.getUnitInfo(self.iUnit).getPrereqOrBonuses(j) > -1):
nOr += 1
szLeftDelimeter = ""
szRightDelimeter = ""
# Display a bracket if we have more than one OR resource and an AND resource
if (not bFirst):
if (nOr > 1):
szLeftDelimeter = localText.getText("TXT_KEY_AND", ()) + "( "
szRightDelimeter = " ) "
elif (nOr > 0):
szLeftDelimeter = localText.getText("TXT_KEY_AND", ())
if len(szLeftDelimeter) > 0:
screen.attachLabel(panelName, "", szLeftDelimeter)
bFirst = True
for j in range(gc.getNUM_UNIT_PREREQ_OR_BONUSES()):
eBonus = gc.getUnitInfo(self.iUnit).getPrereqOrBonuses(j)
if (eBonus > -1):
if (not bFirst):
screen.attachLabel(panelName, "", localText.getText("TXT_KEY_OR", ()))
else:
bFirst = False
screen.attachImageButton( panelName, "", gc.getBonusInfo(eBonus).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_BONUS, eBonus, -1, False )
if len(szRightDelimeter) > 0:
screen.attachLabel(panelName, "", szRightDelimeter)
# add religion buttons
iPrereq = gc.getUnitInfo(self.iUnit).getPrereqReligion()
if (iPrereq >= 0):
screen.attachImageButton( panelName, "", gc.getReligionInfo(iPrereq).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_RELIGION, iPrereq, -1, False )
# add building buttons
iPrereq = gc.getUnitInfo(self.iUnit).getPrereqBuilding()
if (iPrereq >= 0):
screen.attachImageButton( panelName, "", gc.getBuildingInfo(iPrereq).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_BUILDING, iPrereq, -1, False )
[COLOR="Red"]# < Multi-Building Unit Requirement Start >[/COLOR]
# count the number of AND resources
bFirst = True
if (iPrereq >= 0):
bFirst = False
nAnd = 0
for j in range(gc.getNumBuildingInfos()):
if (gc.getUnitInfo(self.iUnit).isPrereqAndBuilding(j)):
nAnd += 1
szLeftDelimeter = ""
szRightDelimeter = ""
# Display a bracket if we have more than one OR resource and an AND resource
if (not bFirst and nAnd > 0):
szLeftDelimeter = localText.getText("TXT_KEY_AND", ())
if len(szLeftDelimeter) > 0:
screen.attachLabel(panelName, "", szLeftDelimeter)
bFirst = True
for j in range(gc.getNumBuildingInfos()):
eBuilding = j
if (gc.getUnitInfo(self.iUnit).isPrereqAndBuilding(j)):
if (not bFirst):
screen.attachLabel(panelName, "", localText.getText("TXT_KEY_AND", ()))
else:
bFirst = False
screen.attachImageButton( panelName, "", gc.getBuildingInfo(eBuilding).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_BUILDING, eBuilding, -1, False )
if len(szRightDelimeter) > 0:
screen.attachLabel(panelName, "", szRightDelimeter)
# count the number of OR resources
nOr = 0
for j in range(gc.getNumBuildingInfos()):
if (gc.getUnitInfo(self.iUnit).isPrereqOrBuilding(j) > -1):
nOr += 1
szLeftDelimeter = ""
szRightDelimeter = ""
# Display a bracket if we have more than one OR resource and an AND resource
if (not bFirst):
if (nOr > 1):
szLeftDelimeter = localText.getText("TXT_KEY_AND", ()) + "( "
szRightDelimeter = " ) "
elif (nOr > 0):
szLeftDelimeter = localText.getText("TXT_KEY_AND", ())
if len(szLeftDelimeter) > 0:
screen.attachLabel(panelName, "", szLeftDelimeter)
bFirst = True
for j in range(gc.getNumBuildingInfos()):
eBuilding = j
if (gc.getUnitInfo(self.iUnit).isPrereqOrBuilding(j)):
if (not bFirst):
screen.attachLabel(panelName, "", localText.getText("TXT_KEY_OR", ()))
else:
bFirst = False
screen.attachImageButton( panelName, "", gc.getBuildingInfo(eBuilding).getButton(), GenericButtonSizes.BUTTON_SIZE_CUSTOM, WidgetTypes.WIDGET_PEDIA_JUMP_TO_BUILDING, eBuilding, -1, False )
if len(szRightDelimeter) > 0:
screen.attachLabel(panelName, "", szRightDelimeter)
[COLOR="red"]# < Multi-Building Unit Requirement End >[/COLOR]