コード例 #1
0
 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)
コード例 #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)
コード例 #3
0
ファイル: UnitNameEventManager.py プロジェクト: markourm/fall
	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)
コード例 #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()
コード例 #5
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)
コード例 #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)
コード例 #7
0
def handleUserResponse(argsList):
    eComment = argsList[0]
    commentArgsSize = argsList[1]
    if commentArgsSize:
        args = argsList[2:]
    else:
        args = []
    dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), diplo.getWhoTradingWith(), args)
コード例 #8
0
ファイル: DiplomacyUtil.py プロジェクト: tarjintor/Civ4-K-Mod
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
コード例 #9
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)
コード例 #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)
コード例 #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)
コード例 #12
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()
コード例 #13
0
ファイル: DiplomacyUtil.py プロジェクト: tarjintor/Civ4-K-Mod
def handleUserResponse(argsList):
	eComment = argsList[0]
	commentArgsSize = argsList[1]
	if commentArgsSize:
		args = argsList[2:]
	else:
		args=[]
	dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), 
			diplo.getWhoTradingWith(), args)
コード例 #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)
コード例 #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)
コード例 #16
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)
コード例 #17
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)
コード例 #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()
コード例 #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)
コード例 #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)
コード例 #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")
コード例 #22
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")
コード例 #23
0
	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)
コード例 #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)
コード例 #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)
コード例 #26
0
ファイル: Civ4lerts.py プロジェクト: Alrik2002/Civ4-MMod
	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)
コード例 #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)
コード例 #28
0
ファイル: Civ4lerts.py プロジェクト: dharkness/civ4bullai
	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)
コード例 #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
コード例 #30
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
コード例 #31
0
ファイル: TriggerEvent.py プロジェクト: dharkness/civ4bullai
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)
コード例 #32
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)
コード例 #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)
コード例 #34
0
	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)
コード例 #35
0
ファイル: UnitNameEventManager.py プロジェクト: markourm/fall
	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)
コード例 #36
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)
コード例 #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)
コード例 #40
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)
コード例 #41
0
ファイル: SpyUtil.py プロジェクト: NikNaks/Civ4-K-Mod
def onBeginPlayerTurn(argsList):
    iGameTurn, iPlayer = argsList
    if iPlayer != PlayerUtil.getActivePlayerID():
        return
    store()
コード例 #42
0
ファイル: DiplomacyUtil.py プロジェクト: hardtimes1966/modxml
def handleAIComment(eComment, args):
	dispatchEvent(eComment, diplo.getWhoTradingWith(), 
			PlayerUtil.getActivePlayerID(), args)
コード例 #43
0
ファイル: DiplomacyUtil.py プロジェクト: hardtimes1966/modxml
def handleUserResponse(eComment, args):
	dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), 
			diplo.getWhoTradingWith(), args)
コード例 #44
0
ファイル: SpyUtil.py プロジェクト: civ4-mp/CloseToHome
def onBeginPlayerTurn(argsList):
    iGameTurn, iPlayer = argsList
    if iPlayer != PlayerUtil.getActivePlayerID():
        return
    store()
コード例 #45
0
 def __init__(self, queue=None):
     self.clear()
     if queue:
         self.queues[PlayerUtil.getActivePlayerID()] = queue
コード例 #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))
コード例 #47
0
	def __init__(self, queue=None):
		self.clear()
		if queue:
			self.queues[PlayerUtil.getActivePlayerID()] = queue
コード例 #48
0
 def check(self, silent=False):
     if self.isEnabled():
         gc.getPlayer(PlayerUtil.getActivePlayerID()).checkAlert(
             self.getID(), silent)