示例#1
0
文件: Tester.py 项目: markourm/fall
	def showRevSuccessPopup( self ) :
		
		bodStr = ""
		pPlayer = gc.getActivePlayer()
		
		pPyPlayer = PyPlayer( pPlayer.getID() )
		
		for city in pPyPlayer.getCityList() :
			pCity = city.GetCy()
			bodStr += "%s: %d"%(pCity.getName(),pCity.getRevSuccessTimer())
			bodStr += "\n"
		 
		popup = PyPopup.PyPopup()
		popup.setBodyString( bodStr )
		popup.launch()
示例#2
0
	def refreshScreen(self):

		self.deleteAllWidgets()

		if (self.iTargetPlayer != -1):

			# Create a new screen, called EspionageAdvisor, using the file EspionageAdvisor.py for input
			screen = self.getScreen()

			pActivePlayer = gc.getPlayer(self.iActivePlayer)
			pActiveTeam = gc.getTeam(pActivePlayer.getTeam())

			iPlayerLoop = 0

			for iPlayerID in self.aiKnownPlayers:

				iX = 0
				iY = 15 #+ (148 * iPlayerLoop)#(110 * iPlayerLoop)

				pTargetPlayer = gc.getPlayer(iPlayerID)
				iTargetTeam = pTargetPlayer.getTeam()

				attach = "LeaderContainer%d" % (iPlayerID)

				szName = "SpendingText%d" %(iPlayerID)
				self.aszSpendingTexts.append(szName)
				szText = u"<font=2>" + localText.getText("TXT_KEY_ESPIONAGE_SCREEN_SPENDING_WEIGHT", ()) + ": %d</font>" %(pActivePlayer.getEspionageSpendingWeightAgainstTeam(iTargetTeam))
				screen.deleteWidget(szName)
				screen.setLabelAt( szName, attach, szText, 0, 85, iY, self.Z_CONTROLS, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1 );

				szName = "AmountText%d" %(iPlayerID)

				if (pActivePlayer.getEspionageSpending(iTargetTeam) > 0):
					szText = u"<font=2><color=0,255,0,0>%s</color></font>" %(localText.getText("TXT_KEY_ESPIONAGE_NUM_EPS_PER_TURN", (pActivePlayer.getEspionageSpending(iTargetTeam), )))
				else:
					szText = u"<font=2><color=192,0,0,0>%s</color></font>" %(localText.getText("TXT_KEY_ESPIONAGE_NUM_EPS_PER_TURN", (pActivePlayer.getEspionageSpending(iTargetTeam), )))

				screen.deleteWidget(szName)
				screen.setLabelAt( szName, attach, szText, 0, 247, iY - 1, self.Z_CONTROLS, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1 );

				szName = "SpendingIcon%d" %(iPlayerID)
				if (pActivePlayer.getEspionageSpendingWeightAgainstTeam(iTargetTeam) > 0):
					szText = u"<font=2>%c</font>" %(gc.getCommerceInfo(CommerceTypes.COMMERCE_ESPIONAGE).getChar())
				else:
					szText = u""

				screen.deleteWidget(szName)
				screen.setLabelAt( szName, attach, szText, 0, 3, iY - 9, self.Z_CONTROLS, FontTypes.TITLE_FONT, WidgetTypes.WIDGET_GENERAL, -1, -1 );


				iPlayerLoop += 1

			# Is there any other players which have been met?
			if (self.iTargetPlayer != -1):

				pTargetPlayer = gc.getPlayer(self.iTargetPlayer)
				pyTargetPlayer = PyPlayer(self.iTargetPlayer)

				# List of Cities
				self.szCityListBox = self.getNextWidgetName()
				screen.addListBoxGFC(self.szCityListBox, "", self.X_CITY_LIST, self.Y_CITY_LIST, self.W_CITY_LIST, self.H_CITY_LIST, TableStyles.TABLE_STYLE_STANDARD)
				screen.enableSelect(self.szCityListBox, True)
				screen.setStyle(self.szCityListBox, "Table_StandardCiv_Style")

				# Loop through target's cities, see which are visible and add them to the list
				apCityList = pyTargetPlayer.getCityList()

				iLoop = 0

				for pyCity in apCityList:

					pCity = pyCity.GetCy()

					if (pCity.isRevealed(pActivePlayer.getTeam(), false)):
						screen.appendListBoxString( self.szCityListBox, pCity.getName(), WidgetTypes.WIDGET_GENERAL, pCity.getID(), 0, CvUtil.FONT_LEFT_JUSTIFY )

						if (self.iActiveCityID == -1 or pTargetPlayer.getCity(self.iActiveCityID).isNone()):
							self.iActiveCityID = pCity.getID()

						if (self.iActiveCityID == pCity.getID()):
							screen.setSelectedListBoxStringGFC(self.szCityListBox, iLoop)

						iLoop += 1

				#screen.updateListBox(self.szCityListBox)

				self.W_TABLE_0 = self.W_EFFECTS_LIST
				self.W_TABLE_1 = 0
				self.W_TABLE_2 = self.W_EFFECTS_COSTS_LIST
				self.W_TABLE_3 = 20

				szEffectsTable = self.getNextWidgetName()
				szHelpText = localText.getText("TXT_KEY_ESPIONAGE_PASSIVE_AUTOMATIC", ())
				screen.addTableControlGFCWithHelp(szEffectsTable, 4, self.X_EFFECTS_LIST, self.Y_EFFECTS_LIST, self.W_EFFECTS_LIST + self.W_EFFECTS_COSTS_LIST + self.W_TABLE_1 + self.W_TABLE_3, self.H_EFFECTS_LIST, False, False, 32,32, TableStyles.TABLE_STYLE_STANDARD, szHelpText)
				screen.setTableColumnHeader(szEffectsTable, 0, "", self.W_TABLE_0)
				screen.setTableColumnHeader(szEffectsTable, 1, "", self.W_TABLE_1)
				screen.setTableColumnHeader(szEffectsTable, 2, "", self.W_TABLE_2)
				screen.setTableColumnHeader(szEffectsTable, 3, "", self.W_TABLE_3)

				szMissionsTable = self.getNextWidgetName()
				szHelpText = localText.getText("TXT_KEY_ESPIONAGE_MISSIONS_SPY", ())
				screen.addTableControlGFCWithHelp(szMissionsTable, 4, self.X_MISSIONS_LIST, self.Y_MISSIONS_LIST, self.W_MISSIONS_LIST + self.W_MISSIONS_COSTS_LIST + self.W_TABLE_1 + self.W_TABLE_3, self.H_MISSIONS_LIST, False, False, 32,32, TableStyles.TABLE_STYLE_STANDARD, szHelpText)
				screen.setTableColumnHeader(szMissionsTable, 0, "", self.W_TABLE_0)
				screen.setTableColumnHeader(szMissionsTable, 1, "", self.W_TABLE_1)
				screen.setTableColumnHeader(szMissionsTable, 2, "", self.W_TABLE_2)
				screen.setTableColumnHeader(szMissionsTable, 3, "", self.W_TABLE_3)


				# Loop through all Missions
				for iMissionLoop in range(gc.getNumEspionageMissionInfos()):

					pMission = gc.getEspionageMissionInfo(iMissionLoop)

					if (pMission.getCost() != -1):

						# Only passive effects
						if (pMission.isPassive()):

							pPlot = None

							if (self.iActiveCityID != -1 and pMission.isTargetsCity()):

								pActiveCity = gc.getPlayer(self.iTargetPlayer).getCity(self.iActiveCityID)
								pPlot = pActiveCity.plot()


							if (self.iActiveCityID != -1 or not pMission.isTargetsCity()):

								iCost = pActivePlayer.getEspionageMissionCost(iMissionLoop, self.iTargetPlayer, pPlot, -1)

								szTechText = ""
								if (pMission.getTechPrereq() != -1):
									szTechText = " (%s)" %(gc.getTechInfo(pMission.getTechPrereq()).getDescription())

								szText = pMission.getDescription() + szTechText

								if (pMission.getTechPrereq() != -1):
									pTeam = gc.getTeam(pActivePlayer.getTeam())
									if (not pTeam.isHasTech(pMission.getTechPrereq())):
										szText = u"<color=255,0,0,0>%s</color>" %(szText)

								iRow = screen.appendTableRow(szEffectsTable)
								screen.setTableText(szEffectsTable, 0, iRow, szText, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)
								screen.setTableText(szEffectsTable, 2, iRow, str(iCost), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_RIGHT_JUSTIFY)

						# Active Mission
						else:

							if (self.iSelectedMission == -1):
								self.iSelectedMission = iMissionLoop

							pPlot = -1
							if (self.iActiveCityID != -1):
								pPlot = pActiveCity.plot()
							else:
								pPlot = None

							iCost = pActivePlayer.getEspionageMissionCost(iMissionLoop, self.iTargetPlayer, pPlot, -1)

							szTechText = ""
							if (pMission.getTechPrereq() != -1):
								szTechText = " (%s)" %(gc.getTechInfo(pMission.getTechPrereq()).getDescription())

							szText = pMission.getDescription() + szTechText

							if (pMission.getTechPrereq() != -1):
								pTeam = gc.getTeam(pActivePlayer.getTeam())
								if (not pTeam.isHasTech(pMission.getTechPrereq())):
									szText = u"<color=255,0,0,0>%s</color>" %(szText)

							iRow = screen.appendTableRow(szMissionsTable)
							screen.setTableText(szMissionsTable, 0, iRow, szText, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)
							if iCost > 0:
								screen.setTableText(szMissionsTable, 2, iRow, str(iCost), "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_RIGHT_JUSTIFY)

		return 0
示例#3
0
    def refreshScreen(self):

        self.deleteAllWidgets()

        if (self.iTargetPlayer != -1):

            # Create a new screen, called EspionageAdvisor, using the file EspionageAdvisor.py for input
            screen = self.getScreen()

            pActivePlayer = gc.getPlayer(self.iActivePlayer)
            pActiveTeam = gc.getTeam(pActivePlayer.getTeam())

            iPlayerLoop = 0

            for iPlayerID in self.aiKnownPlayers:

                iX = 0
                iY = 15  #+ (148 * iPlayerLoop)#(110 * iPlayerLoop)

                pTargetPlayer = gc.getPlayer(iPlayerID)
                iTargetTeam = pTargetPlayer.getTeam()

                attach = "LeaderContainer%d" % (iPlayerID)

                szName = "SpendingText%d" % (iPlayerID)
                self.aszSpendingTexts.append(szName)
                szText = u"<font=2>" + localText.getText(
                    "TXT_KEY_ESPIONAGE_SCREEN_SPENDING_WEIGHT",
                    ()) + ": %d</font>" % (
                        pActivePlayer.getEspionageSpendingWeightAgainstTeam(
                            iTargetTeam))
                screen.deleteWidget(szName)
                screen.setLabelAt(szName, attach, szText, 0, 85, iY,
                                  self.Z_CONTROLS, FontTypes.TITLE_FONT,
                                  WidgetTypes.WIDGET_GENERAL, -1, -1)

                szName = "AmountText%d" % (iPlayerID)

                if (pActivePlayer.getEspionageSpending(iTargetTeam) > 0):
                    szText = u"<font=2><color=0,255,0,0>%s</color></font>" % (
                        localText.getText("TXT_KEY_ESPIONAGE_NUM_EPS_PER_TURN",
                                          (pActivePlayer.getEspionageSpending(
                                              iTargetTeam), )))
                else:
                    szText = u"<font=2><color=192,0,0,0>%s</color></font>" % (
                        localText.getText("TXT_KEY_ESPIONAGE_NUM_EPS_PER_TURN",
                                          (pActivePlayer.getEspionageSpending(
                                              iTargetTeam), )))

                screen.deleteWidget(szName)
                screen.setLabelAt(szName, attach, szText, 0, 247, iY - 1,
                                  self.Z_CONTROLS, FontTypes.TITLE_FONT,
                                  WidgetTypes.WIDGET_GENERAL, -1, -1)

                szName = "SpendingIcon%d" % (iPlayerID)
                if (pActivePlayer.getEspionageSpendingWeightAgainstTeam(
                        iTargetTeam) > 0):
                    szText = u"<font=2>%c</font>" % (gc.getCommerceInfo(
                        CommerceTypes.COMMERCE_ESPIONAGE).getChar())
                else:
                    szText = u""

                screen.deleteWidget(szName)
                screen.setLabelAt(szName, attach, szText, 0, 3, iY - 9,
                                  self.Z_CONTROLS, FontTypes.TITLE_FONT,
                                  WidgetTypes.WIDGET_GENERAL, -1, -1)

                iPlayerLoop += 1

            # Is there any other players which have been met?
            if (self.iTargetPlayer != -1):

                pTargetPlayer = gc.getPlayer(self.iTargetPlayer)
                pyTargetPlayer = PyPlayer(self.iTargetPlayer)

                # List of Cities
                self.szCityListBox = self.getNextWidgetName()
                screen.addListBoxGFC(self.szCityListBox, "", self.X_CITY_LIST,
                                     self.Y_CITY_LIST, self.W_CITY_LIST,
                                     self.H_CITY_LIST,
                                     TableStyles.TABLE_STYLE_STANDARD)
                screen.enableSelect(self.szCityListBox, True)
                screen.setStyle(self.szCityListBox, "Table_StandardCiv_Style")

                # Loop through target's cities, see which are visible and add them to the list
                apCityList = pyTargetPlayer.getCityList()

                iLoop = 0

                for pyCity in apCityList:

                    pCity = pyCity.GetCy()

                    if (pCity.isRevealed(pActivePlayer.getTeam(), false)):
                        screen.appendListBoxString(self.szCityListBox,
                                                   pCity.getName(),
                                                   WidgetTypes.WIDGET_GENERAL,
                                                   pCity.getID(), 0,
                                                   CvUtil.FONT_LEFT_JUSTIFY)

                        if (self.iActiveCityID == -1 or pTargetPlayer.getCity(
                                self.iActiveCityID).isNone()):
                            self.iActiveCityID = pCity.getID()

                        if (self.iActiveCityID == pCity.getID()):
                            screen.setSelectedListBoxStringGFC(
                                self.szCityListBox, iLoop)

                        iLoop += 1

                #screen.updateListBox(self.szCityListBox)

                self.W_TABLE_0 = self.W_EFFECTS_LIST
                self.W_TABLE_1 = 0
                self.W_TABLE_2 = self.W_EFFECTS_COSTS_LIST
                self.W_TABLE_3 = 20

                szEffectsTable = self.getNextWidgetName()
                szHelpText = localText.getText(
                    "TXT_KEY_ESPIONAGE_PASSIVE_AUTOMATIC", ())
                screen.addTableControlGFCWithHelp(
                    szEffectsTable, 4, self.X_EFFECTS_LIST,
                    self.Y_EFFECTS_LIST,
                    self.W_EFFECTS_LIST + self.W_EFFECTS_COSTS_LIST +
                    self.W_TABLE_1 + self.W_TABLE_3, self.H_EFFECTS_LIST,
                    False, False, 32, 32, TableStyles.TABLE_STYLE_STANDARD,
                    szHelpText)
                screen.setTableColumnHeader(szEffectsTable, 0, "",
                                            self.W_TABLE_0)
                screen.setTableColumnHeader(szEffectsTable, 1, "",
                                            self.W_TABLE_1)
                screen.setTableColumnHeader(szEffectsTable, 2, "",
                                            self.W_TABLE_2)
                screen.setTableColumnHeader(szEffectsTable, 3, "",
                                            self.W_TABLE_3)

                szMissionsTable = self.getNextWidgetName()
                szHelpText = localText.getText(
                    "TXT_KEY_ESPIONAGE_MISSIONS_SPY", ())
                screen.addTableControlGFCWithHelp(
                    szMissionsTable, 4, self.X_MISSIONS_LIST,
                    self.Y_MISSIONS_LIST,
                    self.W_MISSIONS_LIST + self.W_MISSIONS_COSTS_LIST +
                    self.W_TABLE_1 + self.W_TABLE_3, self.H_MISSIONS_LIST,
                    False, False, 32, 32, TableStyles.TABLE_STYLE_STANDARD,
                    szHelpText)
                screen.setTableColumnHeader(szMissionsTable, 0, "",
                                            self.W_TABLE_0)
                screen.setTableColumnHeader(szMissionsTable, 1, "",
                                            self.W_TABLE_1)
                screen.setTableColumnHeader(szMissionsTable, 2, "",
                                            self.W_TABLE_2)
                screen.setTableColumnHeader(szMissionsTable, 3, "",
                                            self.W_TABLE_3)

                # Loop through all Missions
                for iMissionLoop in range(gc.getNumEspionageMissionInfos()):

                    pMission = gc.getEspionageMissionInfo(iMissionLoop)

                    if (pMission.getCost() != -1):

                        # Only passive effects
                        if (pMission.isPassive()):

                            pPlot = None

                            if (self.iActiveCityID != -1
                                    and pMission.isTargetsCity()):

                                pActiveCity = gc.getPlayer(
                                    self.iTargetPlayer).getCity(
                                        self.iActiveCityID)
                                pPlot = pActiveCity.plot()

                            if (self.iActiveCityID != -1
                                    or not pMission.isTargetsCity()):

                                iCost = pActivePlayer.getEspionageMissionCost(
                                    iMissionLoop, self.iTargetPlayer, pPlot,
                                    -1)

                                szTechText = ""
                                if (pMission.getTechPrereq() != -1):
                                    szTechText = " (%s)" % (gc.getTechInfo(
                                        pMission.getTechPrereq()).
                                                            getDescription())

                                szText = pMission.getDescription() + szTechText

                                if (pMission.getTechPrereq() != -1):
                                    pTeam = gc.getTeam(pActivePlayer.getTeam())
                                    if (not pTeam.isHasTech(
                                            pMission.getTechPrereq())):
                                        szText = u"<color=255,0,0,0>%s</color>" % (
                                            szText)

                                iRow = screen.appendTableRow(szEffectsTable)
                                screen.setTableText(szEffectsTable, 0, iRow,
                                                    szText, "",
                                                    WidgetTypes.WIDGET_GENERAL,
                                                    -1, -1,
                                                    CvUtil.FONT_LEFT_JUSTIFY)
                                screen.setTableText(szEffectsTable, 2, iRow,
                                                    str(iCost), "",
                                                    WidgetTypes.WIDGET_GENERAL,
                                                    -1, -1,
                                                    CvUtil.FONT_RIGHT_JUSTIFY)

                        # Active Mission
                        else:

                            if (self.iSelectedMission == -1):
                                self.iSelectedMission = iMissionLoop

                            pPlot = -1
                            if (self.iActiveCityID != -1):
                                pPlot = pActiveCity.plot()
                            else:
                                pPlot = None

                            iCost = pActivePlayer.getEspionageMissionCost(
                                iMissionLoop, self.iTargetPlayer, pPlot, -1)

                            szTechText = ""
                            if (pMission.getTechPrereq() != -1):
                                szTechText = " (%s)" % (gc.getTechInfo(
                                    pMission.getTechPrereq()).getDescription())

                            szText = pMission.getDescription() + szTechText

                            if (pMission.getTechPrereq() != -1):
                                pTeam = gc.getTeam(pActivePlayer.getTeam())
                                if (not pTeam.isHasTech(
                                        pMission.getTechPrereq())):
                                    szText = u"<color=255,0,0,0>%s</color>" % (
                                        szText)

                            iRow = screen.appendTableRow(szMissionsTable)
                            screen.setTableText(szMissionsTable, 0, iRow,
                                                szText, "",
                                                WidgetTypes.WIDGET_GENERAL, -1,
                                                -1, CvUtil.FONT_LEFT_JUSTIFY)
                            if iCost > 0:
                                screen.setTableText(szMissionsTable, 2, iRow,
                                                    str(iCost), "",
                                                    WidgetTypes.WIDGET_GENERAL,
                                                    -1, -1,
                                                    CvUtil.FONT_RIGHT_JUSTIFY)

        return 0
	def refreshMissionTab(self):
		if (self.iTargetPlayer != -1):
			# Create a new screen, called EspionageAdvisor, using the file EspionageAdvisor.py for input
			screen = self.getScreen()

			pActivePlayer = gc.getPlayer(self.iActivePlayer)
			pActiveTeam = gc.getTeam(pActivePlayer.getTeam())

			for iPlayerID in self.aiKnownPlayers:
				self.refreshMissionTab_LeftLeaderPanel(screen, pActivePlayer, iPlayerID)

			# Is there any other players which have been met?
			if (self.iTargetPlayer != -1):
				pTargetPlayer = gc.getPlayer(self.iTargetPlayer)
				pyTargetPlayer = PyPlayer(self.iTargetPlayer)

				# List of Cities
				screen.addListBoxGFC(self.CityListBoxWidget, "", self.X_CITY_LIST, self.Y_CITY_LIST, self.W_CITY_LIST, self.H_CITY_LIST, TableStyles.TABLE_STYLE_STANDARD)
				screen.enableSelect(self.CityListBoxWidget, True)
				screen.setStyle(self.CityListBoxWidget, "Table_StandardCiv_Style")

				if self.CityMissionToggle == CITYMISSION_CITY:
					# Loop through target's cities, see which are visible and add them to the list
					apCityList = pyTargetPlayer.getCityList()

					iLoop = 0
					for pyCity in apCityList:
						pCity = pyCity.GetCy()
						szCityName = self.getCityNameText(pCity, self.iActivePlayer, self.iTargetPlayer)

						if ((EspionageOpt.isEnabled()
							and pCity.isRevealed(pActivePlayer.getTeam(), false))
						or (not EspionageOpt.isEnabled()
							and pCity.isRevealed(pActivePlayer.getTeam(), false))):
							screen.appendListBoxString(self.CityListBoxWidget, szCityName, WidgetTypes.WIDGET_GENERAL, pCity.getID(), 0, CvUtil.FONT_LEFT_JUSTIFY )

							if (self.iActiveCityID == -1 or pTargetPlayer.getCity(self.iActiveCityID).isNone()):
								self.iActiveCityID = pCity.getID()

							if (self.iActiveCityID == pCity.getID()):
								screen.setSelectedListBoxStringGFC(self.CityListBoxWidget, iLoop)

							iLoop += 1

				elif self.CityMissionToggle == CITYMISSION_MISSION:
					# active missions only
					iLoop = 0
					for iMissionLoop in range(gc.getNumEspionageMissionInfos()):
						pMission = gc.getEspionageMissionInfo(iMissionLoop)
						if (pMission.getCost() != -1):
							if pMission.isTargetsCity():
								screen.appendListBoxString(self.CityListBoxWidget, pMission.getDescription(), WidgetTypes.WIDGET_GENERAL, iMissionLoop, 0, CvUtil.FONT_LEFT_JUSTIFY )

								if (self.iActiveMissionID == -1):
									self.iActiveMissionID = iMissionLoop

								if (self.iActiveMissionID == iMissionLoop):
									screen.setSelectedListBoxStringGFC(self.CityListBoxWidget, iLoop)

								iLoop += 1

				self.W_TABLE_0 = self.W_EFFECTS_LIST
				self.W_TABLE_1 = 0
				self.W_TABLE_2 = self.W_EFFECTS_COSTS_LIST
				self.W_TABLE_3 = 20

				szHelpText = localText.getText("TXT_KEY_ESPIONAGE_PASSIVE_AUTOMATIC", ())
				screen.addTableControlGFCWithHelp(self.EffectsTableWidget, 4, self.X_EFFECTS_LIST, self.Y_EFFECTS_LIST, self.W_EFFECTS_LIST + self.W_EFFECTS_COSTS_LIST + self.W_TABLE_1 + self.W_TABLE_3, self.H_EFFECTS_LIST, False, False, 32,32, TableStyles.TABLE_STYLE_STANDARD, szHelpText)
				screen.setTableColumnHeader(self.EffectsTableWidget, 0, "", self.W_TABLE_0)
				screen.setTableColumnHeader(self.EffectsTableWidget, 1, "", self.W_TABLE_1)
				screen.setTableColumnHeader(self.EffectsTableWidget, 2, "", self.W_TABLE_2)
				screen.setTableColumnHeader(self.EffectsTableWidget, 3, "", self.W_TABLE_3)

				if self.CityMissionToggle == CITYMISSION_CITY:
					szHelpText = localText.getText("TXT_KEY_ESPIONAGE_MISSIONS_SPY", ())
				else:
					szHelpText = ""
				screen.addTableControlGFCWithHelp(self.MissionsTableWidget, 4, self.X_MISSIONS_LIST, self.Y_MISSIONS_LIST, self.W_MISSIONS_LIST + self.W_MISSIONS_COSTS_LIST + self.W_TABLE_1 + self.W_TABLE_3, self.H_MISSIONS_LIST, False, False, 32,32, TableStyles.TABLE_STYLE_STANDARD, szHelpText)
				screen.setTableColumnHeader(self.MissionsTableWidget, 0, "", self.W_TABLE_0)
				screen.setTableColumnHeader(self.MissionsTableWidget, 1, "", self.W_TABLE_1)
				screen.setTableColumnHeader(self.MissionsTableWidget, 2, "", self.W_TABLE_2)
				screen.setTableColumnHeader(self.MissionsTableWidget, 3, "", self.W_TABLE_3)

				# Loop through passive Missions
				for iMissionLoop in range(gc.getNumEspionageMissionInfos()):
					pMission = gc.getEspionageMissionInfo(iMissionLoop)
					if (pMission.getCost() != -1):
						if (pMission.isPassive()):
							if (self.CityMissionToggle == CITYMISSION_CITY
							or (self.CityMissionToggle == CITYMISSION_MISSION
							and not pMission.isTargetsCity())):
								szTable = self.EffectsTableWidget
								szText, szCost = self.getTableTextCost(self.iActivePlayer, self.iTargetPlayer, iMissionLoop, self.iActiveCityID)
								iRow = screen.appendTableRow(szTable)
								screen.setTableText(szTable, 0, iRow, szText, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)
								screen.setTableText(szTable, 2, iRow, szCost, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_RIGHT_JUSTIFY)

				if self.CityMissionToggle == CITYMISSION_CITY:
					# Loop through active Missions
					# Primary list is cities, secondary list is missions
					for iMissionLoop in range(gc.getNumEspionageMissionInfos()):
						pMission = gc.getEspionageMissionInfo(iMissionLoop)
						if (pMission.getCost() != -1):
							if (not pMission.isPassive()):
								szTable = self.MissionsTableWidget
								szText, szCost = self.getTableTextCost(self.iActivePlayer, self.iTargetPlayer, iMissionLoop, self.iActiveCityID)
								iRow = screen.appendTableRow(szTable)
								screen.setTableText(szTable, 0, iRow, szText, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)
								screen.setTableText(szTable, 2, iRow, szCost, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_RIGHT_JUSTIFY)

				elif self.CityMissionToggle == CITYMISSION_MISSION:
					# Loop through target's cities, see which are visible and add them to the list
					# Primary list is missions, secondary list is cities
					apCityList = pyTargetPlayer.getCityList()

					for pyCity in apCityList:
						pCity = pyCity.GetCy()
						if (pCity.isRevealed(pActivePlayer.getTeam(), false)):

							szTable = self.MissionsTableWidget
							szText, szCost = self.getTableTextCost(self.iActivePlayer, self.iTargetPlayer, self.iActiveMissionID, pCity.getID())
							iRow = screen.appendTableRow(szTable)
							screen.setTableText(szTable, 0, iRow, szText, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_LEFT_JUSTIFY)
							if (pCity.isRevealed(pActivePlayer.getTeam(), false)):
								screen.setTableText(szTable, 2, iRow, szCost, "", WidgetTypes.WIDGET_GENERAL, -1, -1, CvUtil.FONT_RIGHT_JUSTIFY)

		return 0
    def refreshScreen(self):

        self.deleteAllWidgets()

        if (self.iTargetPlayer != -1):

            # Create a new screen, called EspionageAdvisor, using the file EspionageAdvisor.py for input
            screen = self.getScreen()

            pActivePlayer = gc.getPlayer(self.iActivePlayer)
            pActiveTeam = gc.getTeam(pActivePlayer.getTeam())

            self.drawEspionageSlider()  # advc.120c

            iPlayerLoop = 0

            for iPlayerID in self.aiKnownPlayers:

                iX = 0
                iY = 15  #+ (148 * iPlayerLoop)#(110 * iPlayerLoop)

                pTargetPlayer = gc.getPlayer(iPlayerID)
                iTargetTeam = pTargetPlayer.getTeam()

                attach = "LeaderContainer%d" % (iPlayerID)

                szName = "SpendingText%d" % (iPlayerID)
                self.aszSpendingTexts.append(szName)
                szText = u"<font=2>" + localText.getText(
                    "TXT_KEY_ESPIONAGE_SCREEN_SPENDING_WEIGHT",
                    ()) + ": %d</font>" % (
                        pActivePlayer.getEspionageSpendingWeightAgainstTeam(
                            iTargetTeam))
                screen.deleteWidget(szName)
                screen.setLabelAt(szName, attach, szText, 0, 85, iY,
                                  self.Z_CONTROLS, FontTypes.TITLE_FONT,
                                  WidgetTypes.WIDGET_GENERAL, -1, -1)

                szName = "AmountText%d" % (iPlayerID)

                if (pActivePlayer.getEspionageSpending(iTargetTeam) > 0):
                    szText = u"<font=2><color=0,255,0,0>%s</color></font>" % (
                        localText.getText("TXT_KEY_ESPIONAGE_NUM_EPS_PER_TURN",
                                          (pActivePlayer.getEspionageSpending(
                                              iTargetTeam), )))
                else:
                    szText = u"<font=2><color=192,0,0,0>%s</color></font>" % (
                        localText.getText("TXT_KEY_ESPIONAGE_NUM_EPS_PER_TURN",
                                          (pActivePlayer.getEspionageSpending(
                                              iTargetTeam), )))

                screen.deleteWidget(szName)
                screen.setLabelAt(szName, attach, szText, 0, 247, iY - 1,
                                  self.Z_CONTROLS, FontTypes.TITLE_FONT,
                                  WidgetTypes.WIDGET_GENERAL, -1, -1)

                szName = "SpendingIcon%d" % (iPlayerID)
                if (pActivePlayer.getEspionageSpendingWeightAgainstTeam(
                        iTargetTeam) > 0):
                    szText = u"<font=2>%c</font>" % (gc.getCommerceInfo(
                        CommerceTypes.COMMERCE_ESPIONAGE).getChar())
                else:
                    szText = u""

                screen.deleteWidget(szName)
                screen.setLabelAt(szName, attach, szText, 0, 3, iY - 9,
                                  self.Z_CONTROLS, FontTypes.TITLE_FONT,
                                  WidgetTypes.WIDGET_GENERAL, -1, -1)

                iPlayerLoop += 1

            # Is there any other players which have been met?
            if (self.iTargetPlayer != -1):

                pTargetPlayer = gc.getPlayer(self.iTargetPlayer)
                pyTargetPlayer = PyPlayer(self.iTargetPlayer)
                iTargetTeam = pTargetPlayer.getTeam()  # advc.120d
                # List of Cities
                self.szCityListBox = self.getNextWidgetName()
                screen.addListBoxGFC(self.szCityListBox, "", self.X_CITY_LIST,
                                     self.Y_CITY_LIST, self.W_CITY_LIST,
                                     self.H_CITY_LIST,
                                     TableStyles.TABLE_STYLE_STANDARD)
                screen.enableSelect(self.szCityListBox, True)
                screen.setStyle(self.szCityListBox, "Table_StandardCiv_Style")

                # Loop through target's cities, see which are visible and add them to the list
                apCityList = pyTargetPlayer.getCityList()

                iLoop = 0

                for pyCity in apCityList:

                    pCity = pyCity.GetCy()

                    if (pCity.isRevealed(pActivePlayer.getTeam(), false)):
                        screen.appendListBoxString(self.szCityListBox,
                                                   pCity.getName(),
                                                   WidgetTypes.WIDGET_GENERAL,
                                                   pCity.getID(), 0,
                                                   CvUtil.FONT_LEFT_JUSTIFY)

                        if (self.iActiveCityID == -1 or pTargetPlayer.getCity(
                                self.iActiveCityID).isNone()):
                            self.iActiveCityID = pCity.getID()

                        if (self.iActiveCityID == pCity.getID()):
                            screen.setSelectedListBoxStringGFC(
                                self.szCityListBox, iLoop)

                        iLoop += 1

                #screen.updateListBox(self.szCityListBox)

                self.W_TABLE_0 = self.W_EFFECTS_LIST
                self.W_TABLE_1 = 0
                self.W_TABLE_2 = self.W_EFFECTS_COSTS_LIST
                self.W_TABLE_3 = 20

                szEffectsTable = self.getNextWidgetName()
                szHelpText = localText.getText(
                    "TXT_KEY_ESPIONAGE_PASSIVE_AUTOMATIC", ())
                screen.addTableControlGFCWithHelp(
                    szEffectsTable, 4, self.X_EFFECTS_LIST,
                    self.Y_EFFECTS_LIST,
                    self.W_EFFECTS_LIST + self.W_EFFECTS_COSTS_LIST +
                    self.W_TABLE_1 + self.W_TABLE_3, self.H_EFFECTS_LIST,
                    False, False, 32, 32, TableStyles.TABLE_STYLE_STANDARD,
                    szHelpText)
                screen.setTableColumnHeader(szEffectsTable, 0, "",
                                            self.W_TABLE_0)
                screen.setTableColumnHeader(szEffectsTable, 1, "",
                                            self.W_TABLE_1)
                screen.setTableColumnHeader(szEffectsTable, 2, "",
                                            self.W_TABLE_2)
                screen.setTableColumnHeader(szEffectsTable, 3, "",
                                            self.W_TABLE_3)

                szMissionsTable = self.getNextWidgetName()
                szHelpText = localText.getText(
                    "TXT_KEY_ESPIONAGE_MISSIONS_SPY", ())
                # <advc.120d>
                if not pActivePlayer.canSpy():
                    szHelpText = localText.getText("TXT_KEY_ESPIONAGE_NO_SPY",
                                                   ())  # </advc.120d>
                screen.addTableControlGFCWithHelp(
                    szMissionsTable, 4, self.X_MISSIONS_LIST,
                    self.Y_MISSIONS_LIST,
                    self.W_MISSIONS_LIST + self.W_MISSIONS_COSTS_LIST +
                    self.W_TABLE_1 + self.W_TABLE_3, self.H_MISSIONS_LIST,
                    False, False, 32, 32, TableStyles.TABLE_STYLE_STANDARD,
                    szHelpText)
                screen.setTableColumnHeader(szMissionsTable, 0, "",
                                            self.W_TABLE_0)
                screen.setTableColumnHeader(szMissionsTable, 1, "",
                                            self.W_TABLE_1)
                screen.setTableColumnHeader(szMissionsTable, 2, "",
                                            self.W_TABLE_2)
                screen.setTableColumnHeader(szMissionsTable, 3, "",
                                            self.W_TABLE_3)

                # Loop through all Missions
                for iPass in range(3):  # advc.120d
                    for iMissionLoop in range(
                            gc.getNumEspionageMissionInfos()):

                        pMission = gc.getEspionageMissionInfo(iMissionLoop)
                        if (pMission.getCost() == -1):
                            continue  # advc
                        # <advc.120d>
                        isSabotage = False
                        if pMission.getDestroyProjectCostFactor(
                        ) + pMission.getDestroyBuildingCostFactor(
                        ) + pMission.getDestroyProductionCostFactor(
                        ) > 0 or pMission.isDestroyImprovement():
                            isSabotage = True
                        isSteal = False
                        if pMission.getBuyTechCostFactor(
                        ) + pMission.getStealTreasuryTypes() > 0:
                            isSteal = True
                        if (iPass < 2) == isSabotage or (iPass > 0) == isSteal:
                            continue
                        # Moved up:
                        pActiveCity = gc.getPlayer(self.iTargetPlayer).getCity(
                            self.iActiveCityID)
                        # </advc.120d>
                        # Only passive effects
                        if (pMission.isPassive()):

                            pPlot = None

                            if (self.iActiveCityID != -1
                                    and pMission.isTargetsCity()):
                                pPlot = pActiveCity.plot()

                            if (self.iActiveCityID != -1
                                    or not pMission.isTargetsCity()):

                                iCost = pActivePlayer.getEspionageMissionCost(
                                    iMissionLoop, self.iTargetPlayer, pPlot,
                                    -1)

                                szTechText = ""
                                if (pMission.getTechPrereq() != -1):
                                    szTechText = " (%s)" % (gc.getTechInfo(
                                        pMission.getTechPrereq()).
                                                            getDescription())

                                szText = pMission.getDescription() + szTechText

                                if (pMission.getTechPrereq() != -1):
                                    pTeam = gc.getTeam(pActivePlayer.getTeam())
                                    if (not pTeam.isHasTech(
                                            pMission.getTechPrereq())):
                                        szText = u"<color=255,0,0,0>%s</color>" % (
                                            szText)
                                # <advc.120d>
                                costStr = str(iCost)
                                if pActivePlayer.canDoEspionageMission(
                                        iMissionLoop, self.iTargetPlayer,
                                        pPlot, 0):
                                    costStr = localText.changeTextColor(
                                        costStr,
                                        gc.getInfoTypeForString("COLOR_GREEN"))
                                # </advc.120d>
                                iRow = screen.appendTableRow(szEffectsTable)
                                screen.setTableText(szEffectsTable, 0, iRow,
                                                    szText, "",
                                                    WidgetTypes.WIDGET_GENERAL,
                                                    -1, -1,
                                                    CvUtil.FONT_LEFT_JUSTIFY)
                                screen.setTableText(szEffectsTable, 2, iRow,
                                                    costStr, "",
                                                    WidgetTypes.WIDGET_GENERAL,
                                                    -1, -1,
                                                    CvUtil.FONT_RIGHT_JUSTIFY)

                        # Active Mission
                        else:
                            # <advc.120d>
                            if not pActivePlayer.canSpy():
                                continue  # </advc.120d>
                            if (self.iSelectedMission == -1):
                                self.iSelectedMission = iMissionLoop

                            pPlot = -1
                            if (self.iActiveCityID != -1):
                                pPlot = pActiveCity.plot()
                            else:
                                pPlot = None

                            iCost = pActivePlayer.getEspionageMissionCost(
                                iMissionLoop, self.iTargetPlayer, pPlot, -1)

                            szTechText = ""
                            if (pMission.getTechPrereq() != -1):
                                szTechText = " (%s)" % (gc.getTechInfo(
                                    pMission.getTechPrereq()).getDescription())
                            # <advc.120d>
                            elif pMission.getBuyTechCostFactor(
                            ) > 0 and iCost > 0 and pActivePlayer.canSeeTech(
                                    self.iTargetPlayer):
                                stealTech = pActivePlayer.getStealCostTech(
                                    self.iTargetPlayer)
                                if stealTech >= 0:
                                    szTechText = " (%s)" % (gc.getTechInfo(
                                        stealTech).getDescription())
                            missingPrereq = False
                            # </advc.120d>
                            szText = pMission.getDescription() + szTechText

                            if (pMission.getTechPrereq() != -1):
                                pTeam = gc.getTeam(pActivePlayer.getTeam())
                                if (not pTeam.isHasTech(
                                        pMission.getTechPrereq())):
                                    szText = u"<color=255,0,0,0>%s</color>" % (
                                        szText)
                                    missingPrereq = True
                            # <advc.120d>
                            costStr = "(n/a)"
                            if iCost > 0:
                                costStr = str(iCost)
                                if pActiveTeam.getEspionagePointsAgainstTeam(
                                        iTargetTeam) >= iCost:
                                    costStr = localText.changeTextColor(
                                        costStr,
                                        gc.getInfoTypeForString("COLOR_GREEN"))
                            # Secret costs
                            if pMission.getBuyTechCostFactor(
                            ) > 0 and not pActivePlayer.canSeeTech(
                                    self.iTargetPlayer):
                                # This can't happen so long as Alphabet enables both Spies and tech trading
                                costStr = "?"
                            # Display the Destroy missions as a single item
                            elif isSabotage:
                                if pMission.getDestroyProductionCostFactor(
                                ) > 0:
                                    costStr = "?"
                                    szText = localText.getText(
                                        "TXT_KEY_ESPIONAGE_SABOTAGE", ())
                                elif pMission.getDestroyProjectCostFactor(
                                ) <= 0 or iCost <= 0:
                                    continue
                            if pMission.getStealTreasuryTypes(
                            ) > 0 and iCost > 0:
                                if not missingPrereq:
                                    iAmount = pActivePlayer.getEspionageGoldQuantity(
                                        iMissionLoop, self.iTargetPlayer,
                                        pActiveCity)
                                    if iAmount > 0:
                                        szText += " (%s)" % (localText.getText(
                                            "TXT_KEY_ESPIONAGE_STEAL_AMOUNT",
                                            (iAmount, )))
                                else:  # Don't give away AI gold if the player can't actually steal gold
                                    costStr = "?"
                            iRow = screen.appendTableRow(szMissionsTable)
                            screen.setTableText(szMissionsTable, 2, iRow,
                                                costStr, "",
                                                WidgetTypes.WIDGET_GENERAL, -1,
                                                -1, CvUtil.FONT_RIGHT_JUSTIFY)
                            # The line below: Moved down </advc.120d>
                            screen.setTableText(szMissionsTable, 0, iRow,
                                                szText, "",
                                                WidgetTypes.WIDGET_GENERAL, -1,
                                                -1, CvUtil.FONT_LEFT_JUSTIFY)
        return 0