def onBeginActivePlayerTurn(self, argsList):
     if (not Civ4lertsOpt.isShowGoldPerTurnTradeAlert()):
         return
     if len(self.maxGoldPerTurnTrade) == 0:
         return
     playerID = PlayerUtil.getActivePlayerID()
     for rival in TradeUtil.getGoldTradePartners(playerID):
         rivalID = rival.getID()
         oldMaxGoldPerTurnTrade = self._getMaxGoldPerTurnTrade(
             playerID, rivalID)
         newMaxGoldPerTurnTrade = rival.AI_maxGoldPerTurnTrade(playerID)
         deltaMaxGoldPerTurnTrade = newMaxGoldPerTurnTrade - oldMaxGoldPerTurnTrade
         if (deltaMaxGoldPerTurnTrade >=
                 Civ4lertsOpt.getGoldPerTurnTradeThreshold()):
             message = localText.getText(
                 "TXT_KEY_CIV4LERTS_ON_GOLD_PER_TURN_TRADE",
                 (rival.getCivilizationShortDescription(0),
                  newMaxGoldPerTurnTrade))
             addMessageNoIcon(playerID, message)
             self._setMaxGoldPerTurnTrade(playerID, rivalID,
                                          newMaxGoldPerTurnTrade)
         else:
             maxGoldPerTurnTrade = min(oldMaxGoldPerTurnTrade,
                                       newMaxGoldPerTurnTrade)
             self._setMaxGoldPerTurnTrade(playerID, rivalID,
                                          maxGoldPerTurnTrade)
Example #2
0
def printStatus(ePlayer, eAskingPlayer=None):
    player = PlayerUtil.getPlayer(ePlayer)
    if eAskingPlayer is None:
        eAskingPlayer = PlayerUtil.getActivePlayerID()
    print "Trade Status -- %s" % player.getCivilizationShortDescription(0)
    for eItem, name in STATUS_TRADE_ITEMS:
        tradeData = TradeData()
        tradeData.ItemType = eItem
        can = player.canTradeItem(eAskingPlayer, tradeData, False)
        denial = player.getTradeDenial(eAskingPlayer, tradeData)
        will = denial == DenialTypes.NO_DENIAL
        if denial in DENIALS:
            denial = DENIALS[denial]
        else:
            denial = str(denial)
        if not can:
            if will:
                print "%s: can't but will" % (name)
            else:
                print "%s: can't and won't because %s" % (name, denial)
        else:
            if will:
                print "%s: will" % (name)
            else:
                print "%s: won't because %s" % (name, denial)
Example #3
0
	def onGoodyReceived(self, argsList):
		"""
		Name free units from goody huts.
		"""
		iPlayer, pPlot, pUnit, iGoodyType = argsList
		goody = gc.getGoodyInfo(iGoodyType)
		if goody.getUnitClassType() != -1:
			if iPlayer == PlayerUtil.getActivePlayerID() and UnitNamingOpt.isEnabled():
				pPlayer = gc.getPlayer(iPlayer)
				pCity = pPlayer.getCapitalCity()
				if pCity is None or pCity.isNone():
					class EmpireAsCity:
						def __init__(self, name):
							self.name = name
						def getName(self):
							return self.name
					pCity = EmpireAsCity(pPlayer.getCivilizationAdjective(0))
				lUnitReName = UnitReName()
				zsEra = gc.getEraInfo(pPlayer.getCurrentEra()).getType()
				for i in range(pPlot.getNumUnits()):
					pUnit = pPlot.getUnit(i)
					if pUnit and not pUnit.isNone() and pUnit.getOwner() == iPlayer:
						if pUnit.getNameNoDesc() == "":
							zsUnitCombat = lUnitReName.getUnitCombat(pUnit)
							zsUnitClass = gc.getUnitClassInfo(pUnit.getUnitClassType()).getType()
							zsUnitNameConv = lUnitReName.getUnitNameConvFromIniFile(zsEra, zsUnitClass, zsUnitCombat)
							zsUnitName = lUnitReName.getUnitName(zsUnitNameConv, pUnit, pCity, True)
							if zsUnitName:
								pUnit.setName(zsUnitName)
Example #4
0
    def onMouseOverPlot(self, argsList=None):
        """
        Called from CvOverlayScreenUtils when mousing over a plot when the screen is active.
        Updates the current plot and its x/y location.
        """

        # remove the current city
        g_DotMap.unhighlightCity()

        # get the current plot
        plot = CyInterface().getMouseOverPlot()
        x = plot.getX()
        y = plot.getY()

        # get the current player
        pPlayer = gc.getPlayer(PlayerUtil.getActivePlayerID())
        if not pPlayer or pPlayer.isNone():
            BugUtil.warn(
                "CvDotMapOverlayScreen.onMouseOverPlot() was passed an invalid player id: %s"
                % (str(ePlayer)))
            return False
        eTeam = pPlayer.getTeam()

        # update city location if plot is visible
        if plot.isRevealed(eTeam, False):
            self.currentPoint = (x, y)
            g_DotMap.highlightCity(self.currentPoint, self.currentColor)
            self.resetInterfaceMode()
def printStatus(ePlayer, eAskingPlayer=None):
	player = PlayerUtil.getPlayer(ePlayer)
	if eAskingPlayer is None:
		eAskingPlayer = PlayerUtil.getActivePlayerID()
	print "Trade Status -- %s" % player.getCivilizationShortDescription(0)
	for eItem, name in STATUS_TRADE_ITEMS:
		tradeData = TradeData()
		tradeData.ItemType = eItem
		can = player.canTradeItem(eAskingPlayer, tradeData, False)
		denial = player.getTradeDenial(eAskingPlayer, tradeData)
		will = denial == DenialTypes.NO_DENIAL
		if denial in DENIALS:
			denial = DENIALS[denial]
		else:
			denial = str(denial)
		if not can:
			if will:
				print "%s: can't but will" % (name)
			else:
				print "%s: can't and won't because %s" % (name, denial)
		else:
			if will:
				print "%s: will" % (name)
			else:
				print "%s: won't because %s" % (name, denial)
Example #6
0
    def drawDots(self, skip=None):
        """
		Draws the dot for every city.
		"""
        dotAlpha = self.DOT_ALPHA
        for city in self.iterCities(PlayerUtil.getActivePlayerID()):
            if not city.isAt(skip):
                self.drawDot(city, dotAlpha)
def handleUserResponse(argsList):
    eComment = argsList[0]
    commentArgsSize = argsList[1]
    if commentArgsSize:
        args = argsList[2:]
    else:
        args = []
    dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), diplo.getWhoTradingWith(), args)
Example #8
0
def getProposedTrade():
	trade = TradeUtil.Trade(PlayerUtil.getActivePlayerID(), diplo.getWhoTradingWith())
	if not diplo.ourOfferEmpty():
		getProposedTradeData(diplo.getPlayerTradeOffer, trade.addTrade)
	if not diplo.theirOfferEmpty():
		getProposedTradeData(diplo.getTheirTradeOffer, trade.addOtherTrade)
	BugUtil.debug("DiplomacyUtil.getProposedTrade - %r", trade)
	return trade
	def drawDots(self, skip=None):
		"""
		Draws the dot for every city.
		"""
		dotAlpha = self.DOT_ALPHA
		for city in self.iterCities(PlayerUtil.getActivePlayerID()):
			if not city.isAt(skip):
				self.drawDot(city, dotAlpha)
Example #10
0
 def showReminders(self, endOfTurn):
     global g_turnReminderTexts
     # <advc.127> Don't show reminder during Auto Play
     if gc.getPlayer(PlayerUtil.getActivePlayerID()).isHumanDisabled():
         return  # </advc.127>
     thisTurn = gc.getGame().getGameTurn()
     if (endOfTurn):
         prompt = BugUtil.getPlainText("TXT_KEY_REMIND_NEXT_TURN_PROMPT")
         eventId = RECALL_AGAIN_EVENT_ID
     else:
         g_turnReminderTexts = ""
         prompt = BugUtil.getPlainText("TXT_KEY_REMIND_END_TURN_PROMPT")
         eventId = RECALL_EVENT_ID
     yes = BugUtil.getPlainText("TXT_KEY_POPUP_YES")
     no = BugUtil.getPlainText("TXT_KEY_POPUP_NO")
     queue = self.reminders.get(PlayerUtil.getActivePlayerID())
     while (not queue.isEmpty()):
         nextTurn = queue.nextTurn()
         if (nextTurn > thisTurn):
             break
         elif (nextTurn < thisTurn):
             # invalid (lost) reminder
             reminder = queue.pop()
             BugUtil.warn("Reminder - skipped turn %d: %s", reminder.turn,
                          reminder.message)
         else:
             self.reminder = queue.pop()
             if (g_autolog.isLogging() and ReminderOpt.isAutolog()):
                 g_autolog.writeLog("Reminder: %s" % self.reminder.message)
             if (not endOfTurn):
                 if (g_turnReminderTexts):
                     g_turnReminderTexts += ", "
                 g_turnReminderTexts += self.reminder.message
             if (ReminderOpt.isShowMessage()):
                 CyInterface().addMessage(PlayerUtil.getActivePlayerID(),
                                          True, 10, self.reminder.message,
                                          None, 0, None, ColorTypes(8), 0,
                                          0, False, False)
             if (ReminderOpt.isShowPopup()):
                 popup = PyPopup.PyPopup(
                     eventId, EventContextTypes.EVENTCONTEXT_SELF)
                 popup.setHeaderString(self.reminder.message)
                 popup.setBodyString(prompt)
                 popup.addButton(yes)
                 popup.addButton(no)
                 popup.launch(False)
Example #11
0
    def addCityAt(self, point, color, layer):
        """
		Sends a message to add a city for the active player at the given point.
		"""
        CyMessageControl().sendModNetMessage(MSG_ADD_CITY,
                                             PlayerUtil.getActivePlayerID(),
                                             point[X] * 1000 + point[Y], color,
                                             layer)
	def removeCityAt(self, point):
		"""
		Sends a message to remove the active player's city at the given point.
		"""
		ePlayer = PlayerUtil.getActivePlayerID()
		if self.hasCity(ePlayer, point):
			CyMessageControl().sendModNetMessage(MSG_REMOVE_CITY, ePlayer, point[X] * 1000 + point[Y], -1, -1)
		else:
			self.freeze()
Example #13
0
def handleUserResponse(argsList):
	eComment = argsList[0]
	commentArgsSize = argsList[1]
	if commentArgsSize:
		args = argsList[2:]
	else:
		args=[]
	dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), 
			diplo.getWhoTradingWith(), args)
Example #14
0
    def drawCities(self, skip=None):
        """
		Draws all of the cities except skip, if given.
		"""
        crossAlpha = self.CROSS_ALPHA
        dotAlpha = self.DOT_ALPHA
        for city in self.iterCities(PlayerUtil.getActivePlayerID()):
            if not city.isAt(skip):
                self.drawCity(city, crossAlpha, dotAlpha)
Example #15
0
    def addCityAt(self, point, color, layer):
        """
        Sends a message to add a city for the active player at the given point.
        """

        # check if the plot has been revealed
        pPlayer = gc.getPlayer(PlayerUtil.getActivePlayerID())
        if not pPlayer or pPlayer.isNone():
            BugUtil.warn(
                "CvStrategyOverlay.addCityAt() was passed an invalid player id: %s"
                % (str(ePlayer)))
            return False
        eTeam = pPlayer.getTeam()
        pPlot = gc.getMap().plot(point[X], point[Y])
        if pPlot.isRevealed(eTeam, False):
            CyMessageControl().sendModNetMessage(
                MSG_ADD_CITY, PlayerUtil.getActivePlayerID(),
                point[X] * 1000 + point[Y], color, layer)
	def drawCities(self, skip=None):
		"""
		Draws all of the cities except skip, if given.
		"""
		crossAlpha = self.CROSS_ALPHA
		dotAlpha = self.DOT_ALPHA
		for city in self.iterCities(PlayerUtil.getActivePlayerID()):
			if not city.isAt(skip):
				self.drawCity(city, crossAlpha, dotAlpha)
	def drawCrosses(self, layer=None, skip=None):
		"""
		Draws the cross for every city in the given layer.
		"""
		crossAlpha = self.CROSS_ALPHA
		for city in self.iterCities(PlayerUtil.getActivePlayerID()):
			if not city.isAt(skip):
				if layer is None or layer == city.layer:
					self.drawCross(city, crossAlpha)
Example #18
0
	def removeCityAt(self, point):
		"""
		Sends a message to remove the active player's city at the given point.
		"""
		ePlayer = PlayerUtil.getActivePlayerID()
		if self.hasCity(ePlayer, point):
			CyMessageControl().sendModNetMessage(MSG_REMOVE_CITY, ePlayer, point[X] * 1000 + point[Y], -1, -1)
		else:
			self.freeze()
Example #19
0
    def drawCrosses(self, layer=None, skip=None):
        """
		Draws the cross for every city in the given layer.
		"""
        crossAlpha = self.CROSS_ALPHA
        for city in self.iterCities(PlayerUtil.getActivePlayerID()):
            if not city.isAt(skip):
                if layer is None or layer == city.layer:
                    self.drawCross(city, crossAlpha)
Example #20
0
	def check(self, silent=False):
		if (not Civ4lertsOpt.isShowWorstEnemyAlert()):
			return
		eActivePlayer = PlayerUtil.getActivePlayerID()
		eActiveTeam, activeTeam = PlayerUtil.getActiveTeamAndID()
		try: # advc.009b
			enemies = self.enemies[eActivePlayer]
		# <advc.009b>
		except AttributeError:
			return # </advc.009b>
		newEnemies = AttitudeUtil.getWorstEnemyTeams()
		delayedMessages = {}
		for eTeam, eNewEnemy in newEnemies.iteritems():
			if activeTeam.isHasMet(eTeam):
				eOldEnemy = enemies[eTeam]
				if eOldEnemy != -1 and not gc.getTeam(eOldEnemy).isAlive():
					eOldEnemy = -1
					enemies[eTeam] = -1
				#if eActiveTeam != eNewEnemy and not activeTeam.isHasMet(eNewEnemy):
				if eNewEnemy != -1 and not activeTeam.isHasMet(eNewEnemy): # K-Mod. (isHasMet(-1) could cause a seg-fault.)
					eNewEnemy = -1
				if eOldEnemy != eNewEnemy:
					enemies[eTeam] = eNewEnemy
					if eNewEnemy == -1:
						if eOldEnemy == eActiveTeam:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_YOU_NO_WORST_ENEMY", gc.getTeam(eTeam).getName())
						else:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_NO_WORST_ENEMY", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eOldEnemy).getName()))
					elif eOldEnemy == -1:
						message = None # handled below
						if eNewEnemy not in delayedMessages:
							delayedMessages[eNewEnemy] = gc.getTeam(eTeam).getName()
						else:
							delayedMessages[eNewEnemy] += u", " + gc.getTeam(eTeam).getName()
					else:
						if eOldEnemy == eActiveTeam:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY_FROM_YOU", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eNewEnemy).getName()))
						elif eNewEnemy == eActiveTeam:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY_TO_YOU", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eOldEnemy).getName()))
						else:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eNewEnemy).getName(), gc.getTeam(eOldEnemy).getName()))
					if message and not silent: # advc.106c
						addMessageNoIcon(eActivePlayer, message)
		for eEnemy, haters in delayedMessages.iteritems():
			if eActiveTeam == eEnemy:
				message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_YOU_WORST_ENEMY", haters)
			else:
				message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_WORST_ENEMY", (haters, gc.getTeam(eEnemy).getName()))
			if not silent: # advc.106c
				addMessageNoIcon(eActivePlayer, message)
Example #21
0
    def removeCity(self, ePlayer, city):
        """
		Removes the city from the data set and erases its dot and cross.
		"""
        if city:
            BugUtil.debug("DotMap - removing city %s", city)
            del self.getCities(ePlayer)[city.point]
            self.dirty = True
            if ePlayer == PlayerUtil.getActivePlayerID():
                self.redrawCrosses(city.layer)
                self.eraseDot(city, self.DOT_ALPHA)
        else:
            BugUtil.warn("City doesn't exist")
	def removeCity(self, ePlayer, city):
		"""
		Removes the city from the data set and erases its dot and cross.
		"""
		if city:
			BugUtil.debug("DotMap - removing city %s", city)
			del self.getCities(ePlayer)[city.point]
			self.dirty = True
			if ePlayer == PlayerUtil.getActivePlayerID():
				self.redrawCrosses(city.layer)
				self.eraseDot(city, self.DOT_ALPHA)
		else:
			BugUtil.warn("City doesn't exist")
	def showReminders(self, endOfTurn):
		global g_turnReminderTexts
		thisTurn = gc.getGame().getGameTurn()
		if (endOfTurn):
			prompt = BugUtil.getPlainText("TXT_KEY_REMIND_NEXT_TURN_PROMPT")
			eventId = RECALL_AGAIN_EVENT_ID
		else:
			g_turnReminderTexts = ""
			prompt = BugUtil.getPlainText("TXT_KEY_REMIND_END_TURN_PROMPT")
			eventId = RECALL_EVENT_ID
		yes = BugUtil.getPlainText("TXT_KEY_POPUP_YES")
		no = BugUtil.getPlainText("TXT_KEY_POPUP_NO")
		queue = self.reminders.get(PlayerUtil.getActivePlayerID())
		while (not queue.isEmpty()):
			nextTurn = queue.nextTurn()
			if (nextTurn > thisTurn):
				break
			elif (nextTurn < thisTurn):
				# invalid (lost) reminder
				reminder = queue.pop()
				BugUtil.warn("Reminder - skipped turn %d: %s", reminder.turn, reminder.message)
			else:
				self.reminder = queue.pop()
				if (g_autolog.isLogging() and ReminderOpt.isAutolog()):
					g_autolog.writeLog("Reminder: %s" % self.reminder.message)
				if (not endOfTurn):
					if (g_turnReminderTexts):
						g_turnReminderTexts += ", "
					g_turnReminderTexts += self.reminder.message
				if (ReminderOpt.isShowMessage()):
					CyInterface().addMessage(PlayerUtil.getActivePlayerID(), True, 10, self.reminder.message, 
											 None, 0, None, ColorTypes(8), 0, 0, False, False)
				if (ReminderOpt.isShowPopup()):
					popup = PyPopup.PyPopup(eventId, EventContextTypes.EVENTCONTEXT_SELF)
					popup.setHeaderString(self.reminder.message)
					popup.setBodyString(prompt)
					popup.addButton(yes)
					popup.addButton(no)
					popup.launch(False)
Example #24
0
	def check(self):
		#DLP
		if CyGame().isPitbossHost():
			return
		if (not Civ4lertsOpt.isShowWorstEnemyAlert()):
			return
		eActivePlayer = PlayerUtil.getActivePlayerID()
		eActiveTeam, activeTeam = PlayerUtil.getActiveTeamAndID()
		enemies = self.enemies[eActivePlayer]
		newEnemies = AttitudeUtil.getWorstEnemyTeams()
		delayedMessages = {}
		for eTeam, eNewEnemy in newEnemies.iteritems():
			if activeTeam.isHasMet(eTeam):
				eOldEnemy = enemies[eTeam]
				if eOldEnemy != -1 and not gc.getTeam(eOldEnemy).isAlive():
					eOldEnemy = -1
					enemies[eTeam] = -1
				if eActiveTeam != eNewEnemy and not activeTeam.isHasMet(eNewEnemy):
					eNewEnemy = -1
				if eOldEnemy != eNewEnemy:
					enemies[eTeam] = eNewEnemy
					if eNewEnemy == -1:
						if eOldEnemy == eActiveTeam:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_YOU_NO_WORST_ENEMY", gc.getTeam(eTeam).getName())
						else:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_NO_WORST_ENEMY", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eOldEnemy).getName()))
					elif eOldEnemy == -1:
						message = None # handled below
						if eNewEnemy not in delayedMessages:
							delayedMessages[eNewEnemy] = gc.getTeam(eTeam).getName()
						else:
							delayedMessages[eNewEnemy] += u", " + gc.getTeam(eTeam).getName()
					else:
						if eOldEnemy == eActiveTeam:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY_FROM_YOU", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eNewEnemy).getName()))
						elif eNewEnemy == eActiveTeam:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY_TO_YOU", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eOldEnemy).getName()))
						else:
							message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_SWITCH_WORST_ENEMY", 
									(gc.getTeam(eTeam).getName(), gc.getTeam(eNewEnemy).getName(), gc.getTeam(eOldEnemy).getName()))
					if message:
						addMessageNoIcon(eActivePlayer, message)
		for eEnemy, haters in delayedMessages.iteritems():
			if eActiveTeam == eEnemy:
				message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_YOU_WORST_ENEMY", haters)
			else:
				message = BugUtil.getText("TXT_KEY_CIV4LERTS_ON_WORST_ENEMY", (haters, gc.getTeam(eEnemy).getName()))
			addMessageNoIcon(eActivePlayer, message)
Example #25
0
	def addCity(self, city):
		"""
		Adds the city to the data set and draws its dot and cross.
		"""
		ePlayer = PlayerUtil.getActivePlayerID()
		if self.hasCity(ePlayer, city.point):
			oldCity = self.getCity(ePlayer, city.point)
			if city == oldCity:
				return
			self.removeCity(oldCity)
		BugUtil.debug("DotMap - adding city %s", city)
		self.getCities(ePlayer)[city.point] = city
		self.dirty = True
		self.drawCity(city, self.CROSS_ALPHA, self.DOT_ALPHA)
Example #26
0
	def onBeginActivePlayerTurn(self, argsList):
		if (not Civ4lertsOpt.isShowGoldTradeAlert()):
			return
		playerID = PlayerUtil.getActivePlayerID()
		for rival in TradeUtil.getGoldTradePartners(playerID):
			rivalID = rival.getID()
			oldMaxGoldTrade = self._getMaxGoldTrade(playerID, rivalID)
			newMaxGoldTrade = rival.AI_maxGoldTrade(playerID)
			deltaMaxGoldTrade = newMaxGoldTrade - oldMaxGoldTrade
			if deltaMaxGoldTrade >= Civ4lertsOpt.getGoldTradeThreshold():
				message = localText.getText("TXT_KEY_CIV4LERTS_ON_GOLD_TRADE", (rival.getName(), newMaxGoldTrade))
				addMessageNoIcon(playerID, message)
				self._setMaxGoldTrade(playerID, rivalID, newMaxGoldTrade)
			elif newMaxGoldTrade < oldMaxGoldTrade:
				self._setMaxGoldTrade(playerID, rivalID, newMaxGoldTrade)
Example #27
0
    def addCity(self, ePlayer, city):
        """
		Adds the city to the data set and draws its dot and cross.
		"""
        if self.hasCity(ePlayer, city.point):
            oldCity = self.getCity(ePlayer, city.point)
            if city == oldCity:
                return
            BugUtil.debug("DotMap - replacing city at %s", city.point)
            self.removeCity(ePlayer, oldCity)
        BugUtil.debug("DotMap - adding city %s", city)
        self.getCities(ePlayer)[city.point] = city
        self.dirty = True
        if ePlayer == PlayerUtil.getActivePlayerID():
            self.drawCity(city, self.CROSS_ALPHA, self.DOT_ALPHA)
Example #28
0
	def onBeginActivePlayerTurn(self, argsList):
		if (not Civ4lertsOpt.isShowGoldTradeAlert()):
			return
		playerID = PlayerUtil.getActivePlayerID()
		for rival in TradeUtil.getGoldTradePartners(playerID):
			rivalID = rival.getID()
			oldMaxGoldTrade = self._getMaxGoldTrade(playerID, rivalID)
			newMaxGoldTrade = rival.AI_maxGoldTrade(playerID)
			deltaMaxGoldTrade = newMaxGoldTrade - oldMaxGoldTrade
			if deltaMaxGoldTrade >= Civ4lertsOpt.getGoldTradeThreshold():
				message = localText.getText("TXT_KEY_CIV4LERTS_ON_GOLD_TRADE", (rival.getName(), newMaxGoldTrade))
				addMessageNoIcon(playerID, message)
				self._setMaxGoldTrade(playerID, rivalID, newMaxGoldTrade)
			elif newMaxGoldTrade < oldMaxGoldTrade:
				self._setMaxGoldTrade(playerID, rivalID, newMaxGoldTrade)
Example #29
0
    def unhighlightCity(self):
        """
		Removes the highlight from the existing city location if there is one.
		
		If there is no city there (N), the current layer is redrawn (L) and the dot is erased (d).
		If the city is on the same layer (S), nothing is done (N). --> LC
		If the city is on a different layer (D), the current layer is redrawn (L) and the city is drawn (C).
		"""
        if self.highlightedCity:
            point = self.highlightedCity.point
            self.clearHighlightCrossLayer()
            ePlayer = PlayerUtil.getActivePlayerID()
            city = self.getCity(ePlayer, point)
            if city is not None:
                self.drawCity(city, self.CROSS_ALPHA, self.DOT_ALPHA)
            self.highlightedCity = None
	def unhighlightCity(self):
		"""
		Removes the highlight from the existing city location if there is one.
		
		If there is no city there (N), the current layer is redrawn (L) and the dot is erased (d).
		If the city is on the same layer (S), nothing is done (N). --> LC
		If the city is on a different layer (D), the current layer is redrawn (L) and the city is drawn (C).
		"""
		if self.highlightedCity:
			point = self.highlightedCity.point
			self.clearHighlightCrossLayer()
			ePlayer = PlayerUtil.getActivePlayerID()
			city = self.getCity(ePlayer, point)
			if city is not None:
				self.drawCity(city, self.CROSS_ALPHA, self.DOT_ALPHA)
			self.highlightedCity = None
Example #31
0
def showChooseEventPopup(argsList):
    if getEventManager().bAllowCheats:
        ePlayer = PlayerUtil.getActivePlayerID()
        popupInfo = CyPopupInfo()
        popupInfo.setButtonPopupType(ButtonPopupTypes.BUTTONPOPUP_PYTHON)
        popupInfo.setText(BugUtil.getPlainText("TXT_KEY_POPUP_SELECT_EVENT"))
        popupInfo.setData1(ePlayer)
        popupInfo.setOnClickedPythonCallback("triggerRandomEvent")
        for i in range(gc.getNumEventTriggerInfos()):
            info = gc.getEventTriggerInfo(i)
            name = info.getType().replace("EVENTTRIGGER_",
                                          "").replace("_", " ").title()
            popupInfo.addPythonButton(name, "")
        popupInfo.addPythonButton(BugUtil.getPlainText("TXT_KEY_POPUP_CANCEL"),
                                  "")
        popupInfo.addPopup(ePlayer)
	def onBeginActivePlayerTurn(self, argsList):
		if not Civ4lertsOpt.isShowSlaveTradeAlert():
			return
		if len(self.maxSlaveTrade) == 0:
			return
		playerID = PlayerUtil.getActivePlayerID()
		for rival in TradeUtil.getSlaveTradePartners(playerID):
			rivalID = rival.getID()
			oldMaxSlaveTrade = self._getMaxSlaveTrade(playerID, rivalID)
			newMaxSlaveTrade = rival.getUnitClassCount(gc.getInfoTypeForString("UNITCLASS_SLAVE"))
			deltaMaxSlaveTrade = newMaxSlaveTrade - oldMaxSlaveTrade
			if deltaMaxSlaveTrade > 0:
				message = localText.getText("TXT_KEY_CIV4LERTS_ON_SLAVE_TRADE", (rival.getCivilizationShortDescription(0), newMaxSlaveTrade))
				addMessageNoIcon(playerID, message)
				self._setMaxSlaveTrade(playerID, rivalID, newMaxSlaveTrade)
			elif newMaxSlaveTrade < oldMaxSlaveTrade:
				self._setMaxSlaveTrade(playerID, rivalID, newMaxSlaveTrade)
Example #33
0
	def onBeginActivePlayerTurn(self, argsList):
		if not Civ4lertsOpt.isShowSlaveTradeAlert():
			return
		if len(self.maxSlaveTrade) == 0:
			return
		playerID = PlayerUtil.getActivePlayerID()
		for rival in TradeUtil.getSlaveTradePartners(playerID):
			rivalID = rival.getID()
			oldMaxSlaveTrade = self._getMaxSlaveTrade(playerID, rivalID)
			newMaxSlaveTrade = rival.getUnitClassCount(gc.getInfoTypeForString("UNITCLASS_SLAVE"))
			deltaMaxSlaveTrade = newMaxSlaveTrade - oldMaxSlaveTrade
			if deltaMaxSlaveTrade > 0:
				message = localText.getText("TXT_KEY_CIV4LERTS_ON_SLAVE_TRADE", (rival.getCivilizationShortDescription(0), newMaxSlaveTrade))
				addMessageNoIcon(playerID, message)
				self._setMaxSlaveTrade(playerID, rivalID, newMaxSlaveTrade)
			elif newMaxSlaveTrade < oldMaxSlaveTrade:
				self._setMaxSlaveTrade(playerID, rivalID, newMaxSlaveTrade)
	def onBeginActivePlayerTurn(self, argsList):
		if (not Civ4lertsOpt.isShowGoldPerTurnTradeAlert()):
			return
		if len(self.maxGoldPerTurnTrade) == 0:
			return
		playerID = PlayerUtil.getActivePlayerID()
		for rival in TradeUtil.getGoldTradePartners(playerID):
			rivalID = rival.getID()
			oldMaxGoldPerTurnTrade = self._getMaxGoldPerTurnTrade(playerID, rivalID)
			newMaxGoldPerTurnTrade = rival.AI_maxGoldPerTurnTrade(playerID)
			deltaMaxGoldPerTurnTrade = newMaxGoldPerTurnTrade - oldMaxGoldPerTurnTrade
			if (deltaMaxGoldPerTurnTrade >= Civ4lertsOpt.getGoldPerTurnTradeThreshold()):
				message = localText.getText("TXT_KEY_CIV4LERTS_ON_GOLD_PER_TURN_TRADE", (rival.getCivilizationShortDescription(0), newMaxGoldPerTurnTrade))
				addMessageNoIcon(playerID, message)
				self._setMaxGoldPerTurnTrade(playerID, rivalID, newMaxGoldPerTurnTrade)
			else:
				maxGoldPerTurnTrade = min(oldMaxGoldPerTurnTrade, newMaxGoldPerTurnTrade)
				self._setMaxGoldPerTurnTrade(playerID, rivalID, maxGoldPerTurnTrade)
Example #35
0
	def onCityBuilt(self, argsList):
		"""
		If this is the first city founded, apply naming to each unit without a name.
		"""
		pCity = argsList[0]
		pPlayer = gc.getPlayer(pCity.getOwner())
		if not (pCity.isCapital() 
		and pPlayer.getNumCities() == 1
		and pCity.getOwner() == PlayerUtil.getActivePlayerID() 
		and UnitNamingOpt.isEnabled()):
			return
		lUnitReName = UnitReName()
		zsEra = gc.getEraInfo(pPlayer.getCurrentEra()).getType()
		for pUnit in PlayerUtil.playerUnits(pPlayer):
			if pUnit.getNameNoDesc() == "":
				zsUnitCombat = lUnitReName.getUnitCombat(pUnit)
				zsUnitClass = gc.getUnitClassInfo(pUnit.getUnitClassType()).getType()
				zsUnitNameConv = lUnitReName.getUnitNameConvFromIniFile(zsEra, zsUnitClass, zsUnitCombat)
				zsUnitName = lUnitReName.getUnitName(zsUnitNameConv, pUnit, pCity, True)
				if zsUnitName:
					pUnit.setName(zsUnitName)
	def highlightCity(self, point, color):
		"""
		Highlights the given city location by drawing it using the given color on the highlight layer.
		Unhighlights the currently highlighted city if there is one.
		
		If there is no city there (N), the new city is drawn (C).
		If the city is on the same layer (S), nothing is done (N). --> WC
		If the city is on a different layer (D), the city's layer is redrawn without it (W) and the new city is drawn (C).
		"""
		city = City(point, color, self.HIGHLIGHT_CROSS_LAYER)
		if self.highlightedCity:
			if self.highlightedCity == city:
				return
			else:
				self.unhighlightCity()
		self.highlightedCity = city
		ePlayer = PlayerUtil.getActivePlayerID()
		existingCity = self.getCity(ePlayer, point)
		if existingCity is not None:
			self.redrawCrosses(existingCity.layer, point)
			self.eraseDot(existingCity, self.DOT_ALPHA)
		self.drawCross(city, self.HIGHLIGHT_CROSS_ALPHA)
Example #37
0
    def highlightCity(self, point, color):
        """
		Highlights the given city location by drawing it using the given color on the highlight layer.
		Unhighlights the currently highlighted city if there is one.
		
		If there is no city there (N), the new city is drawn (C).
		If the city is on the same layer (S), nothing is done (N). --> WC
		If the city is on a different layer (D), the city's layer is redrawn without it (W) and the new city is drawn (C).
		"""
        city = City(point, color, self.HIGHLIGHT_CROSS_LAYER)
        if self.highlightedCity:
            if self.highlightedCity == city:
                return
            else:
                self.unhighlightCity()
        self.highlightedCity = city
        ePlayer = PlayerUtil.getActivePlayerID()
        existingCity = self.getCity(ePlayer, point)
        if existingCity is not None:
            self.redrawCrosses(existingCity.layer, point)
            self.eraseDot(existingCity, self.DOT_ALPHA)
        self.drawCross(city, self.HIGHLIGHT_CROSS_ALPHA)
    def onCityBuilt(self, argsList):
        """
		If this is the first city founded, apply naming to each unit without a name.
		"""
        pCity = argsList[0]
        pPlayer = gc.getPlayer(pCity.getOwner())
        if not (pCity.isCapital() and pPlayer.getNumCities() == 1
                and pCity.getOwner() == PlayerUtil.getActivePlayerID()
                and UnitNamingOpt.isEnabled()):
            return
        lUnitReName = UnitReName()
        zsEra = gc.getEraInfo(pPlayer.getCurrentEra()).getType()
        for pUnit in PlayerUtil.playerUnits(pPlayer):
            if pUnit.getNameNoDesc() == "":
                zsUnitCombat = lUnitReName.getUnitCombat(pUnit)
                zsUnitClass = gc.getUnitClassInfo(
                    pUnit.getUnitClassType()).getType()
                zsUnitNameConv = lUnitReName.getUnitNameConvFromIniFile(
                    zsEra, zsUnitClass, zsUnitCombat)
                zsUnitName = lUnitReName.getUnitName(zsUnitNameConv, pUnit,
                                                     pCity, True)
                if zsUnitName:
                    pUnit.setName(zsUnitName)
    def onGoodyReceived(self, argsList):
        """
		Name free units from goody huts.
		"""
        iPlayer, pPlot, pUnit, iGoodyType = argsList
        goody = gc.getGoodyInfo(iGoodyType)
        if goody.getUnitClassType() != -1:
            if iPlayer == PlayerUtil.getActivePlayerID(
            ) and UnitNamingOpt.isEnabled():
                pPlayer = gc.getPlayer(iPlayer)
                pCity = pPlayer.getCapitalCity()
                if pCity is None or pCity.isNone():

                    class EmpireAsCity:
                        def __init__(self, name):
                            self.name = name

                        def getName(self):
                            return self.name

                    pCity = EmpireAsCity(pPlayer.getCivilizationAdjective(0))
                lUnitReName = UnitReName()
                zsEra = gc.getEraInfo(pPlayer.getCurrentEra()).getType()
                for i in range(pPlot.getNumUnits()):
                    pUnit = pPlot.getUnit(i)
                    if pUnit and not pUnit.isNone() and pUnit.getOwner(
                    ) == iPlayer:
                        if pUnit.getNameNoDesc() == "":
                            zsUnitCombat = lUnitReName.getUnitCombat(pUnit)
                            zsUnitClass = gc.getUnitClassInfo(
                                pUnit.getUnitClassType()).getType()
                            zsUnitNameConv = lUnitReName.getUnitNameConvFromIniFile(
                                zsEra, zsUnitClass, zsUnitCombat)
                            zsUnitName = lUnitReName.getUnitName(
                                zsUnitNameConv, pUnit, pCity, True)
                            if zsUnitName:
                                pUnit.setName(zsUnitName)
	def addCityAt(self, point, color, layer):
		"""
		Sends a message to add a city for the active player at the given point.
		"""
		CyMessageControl().sendModNetMessage(MSG_ADD_CITY, PlayerUtil.getActivePlayerID(), point[X] * 1000 + point[Y], color, layer)
Example #41
0
def onBeginPlayerTurn(argsList):
    iGameTurn, iPlayer = argsList
    if iPlayer != PlayerUtil.getActivePlayerID():
        return
    store()
Example #42
0
def handleAIComment(eComment, args):
	dispatchEvent(eComment, diplo.getWhoTradingWith(), 
			PlayerUtil.getActivePlayerID(), args)
Example #43
0
def handleUserResponse(eComment, args):
	dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), 
			diplo.getWhoTradingWith(), args)
Example #44
0
def onBeginPlayerTurn(argsList):
    iGameTurn, iPlayer = argsList
    if iPlayer != PlayerUtil.getActivePlayerID():
        return
    store()
Example #45
0
 def __init__(self, queue=None):
     self.clear()
     if queue:
         self.queues[PlayerUtil.getActivePlayerID()] = queue
Example #46
0
	def removeCityAt(self, point):
		"""
		Removes the city from the data set and erases its dot and cross.
		"""
		self.removeCity(self.getCity(PlayerUtil.getActivePlayerID(), point))
	def __init__(self, queue=None):
		self.clear()
		if queue:
			self.queues[PlayerUtil.getActivePlayerID()] = queue
Example #48
0
 def check(self, silent=False):
     if self.isEnabled():
         gc.getPlayer(PlayerUtil.getActivePlayerID()).checkAlert(
             self.getID(), silent)