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)
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)
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 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 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)
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 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)
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()
def handleUserResponse(argsList): eComment = argsList[0] commentArgsSize = argsList[1] if commentArgsSize: args = argsList[2:] else: args=[] dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), diplo.getWhoTradingWith(), args)
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 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 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)
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)
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)
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)
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)
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)
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)
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 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)
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)
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)
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 onBeginPlayerTurn(argsList): iGameTurn, iPlayer = argsList if iPlayer != PlayerUtil.getActivePlayerID(): return store()
def handleAIComment(eComment, args): dispatchEvent(eComment, diplo.getWhoTradingWith(), PlayerUtil.getActivePlayerID(), args)
def handleUserResponse(eComment, args): dispatchEvent(eComment, PlayerUtil.getActivePlayerID(), diplo.getWhoTradingWith(), args)
def __init__(self, queue=None): self.clear() if queue: self.queues[PlayerUtil.getActivePlayerID()] = queue
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 check(self, silent=False): if self.isEnabled(): gc.getPlayer(PlayerUtil.getActivePlayerID()).checkAlert( self.getID(), silent)