civInfo = gc.getCivilzationInfo(gc.getPlayer(gc.getGame().getActivePlayer()).getCivilizationType())
for i in range(gc.getNumBuildingClassInfos()):
eBuilding = civInfo.getCivilizationBuildings(i) # or whatever this is
info = gc.getBuildingInfo(eBuilding)
# add (info.getDescription(), eBuilding) to list
g_buildings.append(info.getDescription(), eBuilding)
g_buildings.append([B][COLOR="Red"]([/COLOR][/B]info.getDescription(), eBuilding[B][COLOR="Red"])[/COLOR][/B])
You need to append a single tuple instead of two values:
Code:g_buildings.append([B][COLOR=Red]([/COLOR][/B]info.getDescription(), eBuilding[B][COLOR=Red])[/COLOR][/B])
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
Traceback (most recent call last):
File "CvScreensInterface", line 983, in forceScreenRedraw
File "CvMainInterface", line 3279, in redraw
File "CvMainInterface", line 4474, in updateSelectionButtons
ArgumentError: Python argument types in
CvPythonExtensions.isLimitedWonderClass(tuple)
did not match C++ signature:
isLimitedWonderClass(int)
ERR: Python function forceScreenRedraw failed, module CvScreensInterface
I guess, you try isLimitedWonderClass(g_buildings), right?
Change it to isLimitedWonderClass(g_buildings[1]).
global g_buildings
if g_buildings is None:
g_buildings = []
civInfo = gc.getCivilizationInfo(pHeadSelectedCity.getCivilizationType())
for i in range(gc.getNumBuildingClassInfos()):
eBuilding = civInfo.getCivilizationBuildings(i)
info = gc.getBuildingInfo(eBuilding)
g_buildings.append((info.getDescription(), eBuilding))
g_buildings.sort()
for i in g_buildings:
if (not isLimitedWonderClass(g_buildings[i][1]):
eLoopBuilding = gc.getCivilizationInfo(pHeadSelectedCity.getCivilizationType()).getCivilizationBuildings(g_buildings[i][1])
if (pHeadSelectedCity.canConstruct(eLoopBuilding, False, True, False)):
screen.appendMultiListButton( "BottomButtonContainer", gc.getBuildingInfo(eLoopBuilding).getButton(), iRow, WidgetTypes.WIDGET_CONSTRUCT, g_buildings[i][1], -1, False )
screen.show( "BottomButtonContainer" )
if ( not pHeadSelectedCity.canConstruct(eLoopBuilding, False, False, False) ):
screen.disableMultiListButton( "BottomButtonContainer", iRow, iCount, gc.getBuildingInfo(eLoopBuilding).getButton() )
iCount = iCount + 1
bFound = True
iCount = 0
if (bFound):
iRow = iRow + 1
bFound = False
for _, i in g_buildings:
Ups, isLimitedWonderClass needs a buildingsclasstype (if i see that right), not a building.
Try:
isLimitedWonderClass(gc.getBuildingInfo(g_buildings[1]).getBuildingClassType())
Don't convert to the civilization's building in the second loop as you've already done that in the first loop. Instead, eLoopBuilding is i.
for [B][COLOR="Red"]_, eLoopBuilding[/COLOR][/B] in g_buildings:
if (not isLimitedWonderClass([B][COLOR="Red"]gc.getBuildingType(eLoopBuilding).getBuildingClassType()[/COLOR][/B])):
[s][COLOR="Red"]eLoopBuilding = gc.getCivilizationInfo(pHeadSelectedCity.getCivilizationType()).getCivilizationBuildings(g_buildings[i][1])[/COLOR][/s]
I can't tell what your code looks like now, so let me be clear:
Code:for [B][COLOR=Red]_, eLoopBuilding[/COLOR][/B] in g_buildings: if (not isLimitedWonderClass([B][COLOR=Red]gc.getBuildingType(eLoopBuilding).getBuildingClassType()[/COLOR][/B])): [s][COLOR=Red]eLoopBuilding = gc.getCivilizationInfo(pHeadSelectedCity.getCivilizationType()).getCivilizationBuildings(g_buildings[i][1])[/COLOR][/s]
global g_buildings
if g_buildings is None:
g_buildings = []
civInfo = gc.getCivilizationInfo(pHeadSelectedCity.getCivilizationType())
for i in range(gc.getNumBuildingClassInfos()):
eBuilding = civInfo.getCivilizationBuildings(i)
info = gc.getBuildingInfo(eBuilding)
g_buildings.append((info.getDescription(), eBuilding))
g_buildings.sort()
for i, eLoopBuilding in g_buildings:
if (not isLimitedWonderClass(gc.getBuildingType(eLoopBuilding).getBuildingClassType())):
if (pHeadSelectedCity.canConstruct(eLoopBuilding, False, True, False)):
screen.appendMultiListButton( "BottomButtonContainer", gc.getBuildingInfo(eLoopBuilding).getButton(), iRow, WidgetTypes.WIDGET_CONSTRUCT, eLoopBuilding, -1, False )
screen.show( "BottomButtonContainer" )
if ( not pHeadSelectedCity.canConstruct(eLoopBuilding, False, False, False) ):
screen.disableMultiListButton( "BottomButtonContainer", iRow, iCount, gc.getBuildingInfo(eLoopBuilding).getButton() )
iCount = iCount + 1
bFound = True
iCount = 0
if (bFound):
iRow = iRow + 1
bFound = False