iDefault = -1
dynamicCityNameDict = {
}
class CityNameManager:
def assignName(self, pCity):
"""Names a city depending on its plot"""
iOwner = pCity.getOwner()
if (iOwner < iNumMajorPlayers):
cityName = tCityMap[iOwner][67 - pCity.getY()][pCity.getX()]
if (cityName != "-1"):
self.setCityName(pCity, cityName)
return
self.renameCities(pCity, iDefault)
def renameCities(self, pCity, iNewOwner):
"""Renames a city depending on the map tile"""
tCoords = (pCity.getX(), pCity.getY())
newName = self.getDynamicName(tCoords, pCity, iNewOwner)
if len(newName):
self.setCityName(pCity, newName)
else:
self.checkAdjacentTiles(pCity, tCoords, iNewOwner, newName)
def checkAdjacentTiles(self, pCity, tCoords, iPlayer, newName):
for iX in range(tCoords[0] - 1, tCoords[0] + 2):
for iY in range(tCoords[1] - 1, tCoords[1] + 2):
newName = self.getDynamicName((iX, iY), pCity, iPlayer)
if len(newName):
self.setCityName(pCity, newName)
return
def setCityName(self, pCity, newName):
pCity.setName(newName, False)
def getDynamicName(self, tCoords, pCity, iPlayer):
entry = dynamicCityNameDict.get(tCoords, {})
if len(entry):
defaultName = entry.get(-1, "")
if iPlayer == iDefault:
return defaultName
newName = entry.get(iPlayer, defaultName)
if isinstance(newName, tuple):
if pCity.getOriginalOwner() == newName[0]:
newName = newName[1]
else:
newName = defaultName
return newName
return ""