def translate(self): self.title = BugUtil.getPlainText(self.xmlKey + "_TEXT", self.title) self.tooltip = BugUtil.getPlainText(self.xmlKey + "_HOVER", self.tooltip) if self.isDll(): if BugDll.isVersion(self.dll): self.tooltip = RE_DLL_ALL_TAGS.sub("", self.tooltip) else: if not BugDll.isPresent(): dllText = BugUtil.getPlainText("TXT_KEY_BULL_REQUIRED") else: dllText = BugUtil.getPlainText("TXT_KEY_BULL_REQUIRED_NEWER") if self.tooltip.find("[DLL") >= 0: self.tooltip = RE_DLL_START_END_TAGS.sub("", self.tooltip) self.tooltip = RE_DLL_MSG_TAG.sub(dllText, self.tooltip) else: self.tooltip += "\n" + dllText elif self.tooltip.find("[DLL") >= 0: if not BugDll.isPresent(): # no DLL, ignore all minimum versions and use standard error message self.tooltip = RE_DLL_START_END_TAGS.sub("", self.tooltip) self.tooltip = RE_DLL_MSG_TAG.sub(BugUtil.getPlainText("TXT_KEY_BULL_REQUIRED"), self.tooltip) else: dllText = BugUtil.getPlainText("TXT_KEY_BULL_REQUIRED_NEWER") def repl(matchobj): try: if BugDll.isVersion(int(matchobj.group(1))): return "" else: return RE_DLL_MSG_TAG.sub(dllText, matchobj.group(2)) except: # invalid version return "" self.tooltip = RE_DLL_CAPTURE_VERSION_MESSAGE.sub(repl, self.tooltip) self.translated = True
def isWillingToTalk(playerOrID, toPlayerOrID): """ Returns True if <player> is willing to talk to <toPlayer>. - Every player is willing to talk to themselves - All human players are willing to talk - Uses BUG DLL if present, otherwise scans attitude hover text for "Refuses to Talk!!!" in the current language Note: This function does not check if the two players can make contact. """ playerID, player = PlayerUtil.getPlayerAndID(playerOrID) toPlayerID = PlayerUtil.getPlayerID(toPlayerOrID) if playerID == toPlayerID or player.isHuman(): # all players talk to themselves, and all humans talk return True if BugDll.isPresent(): return player.AI_isWillingToTalk(toPlayerID) else: hover = AttitudeUtil.getAttitudeString(playerID, toPlayerID) if hover: return (hover.find(BugUtil.getPlainText("TXT_KEY_MISC_REFUSES_TO_TALK")) == -1) else: # haven't met yet return False
def isWillingToTalk(playerOrID, toPlayerOrID): """ Returns True if <player> is willing to talk to <toPlayer>. - Every player is willing to talk to themselves - All human players are willing to talk - Uses BUG DLL if present, otherwise scans attitude hover text for "Refuses to Talk!!!" in the current language Note: This function does not check if the two players can make contact. """ playerID, player = PlayerUtil.getPlayerAndID(playerOrID) toPlayerID = PlayerUtil.getPlayerID(toPlayerOrID) if playerID == toPlayerID or player.isHuman(): # all players talk to themselves, and all humans talk return True if BugDll.isPresent(): return player.AI_isWillingToTalk(toPlayerID) else: hover = AttitudeUtil.getAttitudeString(playerID, toPlayerID) if hover: return (hover.find(BugUtil.getPlainText("TXT_KEY_MISC_REFUSES_TO_TALK")) == -1) else: # haven't met yet return False
def isCancelable(self, eByPlayer, bIgnoreWaitingPeriod=False): if BugDll.isPresent(): return self.deal.isCancelable(eByPlayer, bIgnoreWaitingPeriod) else: if self.isUncancelableVassalDeal(eByPlayer): return False return self.turnsToCancel(eByPlayer) <= 0
def turnsToCancel(self, eByPlayer=-1): if BugDll.isPresent(): return self.deal.turnsToCancel(eByPlayer) else: # this is exactly what CvDeal does return self.getInitialGameTurn() + gc.getDefineINT( "PEACE_TREATY_LENGTH") - gc.getGame().getGameTurn()
def enforceDll(): if not BugDll.isPresent(): raise MapFinderError("TXT_KEY_MAPFINDER_REQUIRES_BULL")
def turnsToCancel(self, eByPlayer=-1): if BugDll.isPresent(): return self.deal.turnsToCancel(eByPlayer) else: # this is exactly what CvDeal does return self.getInitialGameTurn() + gc.getDefineINT("PEACE_TREATY_LENGTH") - gc.getGame().getGameTurn()
def getCannotCancelReason(self, eByPlayer): if BugDll.isPresent(): return self.deal.getCannotCancelReason(eByPlayer) else: return ""
def enforceDll(): if not BugDll.isPresent(): raise MapFinderError("TXT_KEY_MAPFINDER_REQUIRES_BULL")