toontown-just-works/toontown/hood/ZoneUtil.py
2024-07-07 18:08:39 -05:00

224 lines
6.1 KiB
Python

from toontown.toonbase.ToontownGlobals import *
zoneUtilNotify = directNotify.newCategory('ZoneUtil')
tutorialDict = None
def isGoofySpeedwayZone(zoneId):
return zoneId == 8000
def isCogHQZone(zoneId):
return zoneId >= 10000 and zoneId < 15000
def isMintInteriorZone(zoneId):
return zoneId in (CashbotMintIntA, CashbotMintIntB, CashbotMintIntC)
def isDynamicZone(zoneId):
return zoneId >= DynamicZonesBegin and zoneId < DynamicZonesEnd
def getStreetName(branchId):
global tutorialDict
if tutorialDict:
return StreetNames[20000][-1]
else:
return StreetNames[branchId][-1]
def getLoaderName(zoneId):
if tutorialDict:
if zoneId == ToontownCentral:
loaderName = 'safeZoneLoader'
else:
loaderName = 'townLoader'
else:
suffix = zoneId % 1000
if suffix >= 500:
suffix -= 500
if isCogHQZone(zoneId):
loaderName = 'cogHQLoader'
elif suffix < 100:
loaderName = 'safeZoneLoader'
else:
loaderName = 'townLoader'
return loaderName
def getBranchLoaderName(zoneId):
return getLoaderName(getBranchZone(zoneId))
def getSuitWhereName(zoneId):
where = getWhereName(zoneId, 0)
return where
def getToonWhereName(zoneId):
where = getWhereName(zoneId, 1)
return where
def isPlayground(zoneId):
whereName = getWhereName(zoneId, False)
if whereName == 'cogHQExterior':
return True
else:
return zoneId % 1000 == 0 and zoneId < DynamicZonesBegin
def isHQ(zoneId):
if zoneId == 2520 or zoneId == 1507 or zoneId == 3508 or zoneId == 4504 or zoneId == 5502 or zoneId == 7503 or zoneId == 9505:
return True
return False
def isPetshop(zoneId):
if zoneId == 2522 or zoneId == 1510 or zoneId == 3511 or zoneId == 4508 or zoneId == 5505 or zoneId == 7504 or zoneId == 9508:
return True
return False
def getWhereName(zoneId, isToon):
if tutorialDict:
if zoneId in tutorialDict['interiors']:
where = 'toonInterior'
elif zoneId in tutorialDict['exteriors']:
where = 'street'
elif zoneId == ToontownCentral or zoneId == WelcomeValleyToken:
where = 'playground'
else:
zoneUtilNotify.error('No known zone: ' + str(zoneId))
else:
suffix = zoneId % 1000
suffix = suffix - suffix % 100
if isCogHQZone(zoneId):
if suffix == 0:
where = 'cogHQExterior'
elif suffix == 100:
where = 'cogHQLobby'
elif suffix == 200:
where = 'factoryExterior'
elif getHoodId(zoneId) == LawbotHQ and suffix in (300, 400, 500, 600):
where = 'stageInterior'
elif getHoodId(zoneId) == BossbotHQ and suffix in (500, 600, 700):
where = 'countryClubInterior'
elif suffix >= 500:
if getHoodId(zoneId) == SellbotHQ:
if suffix == 600:
where = 'megaCorpInterior'
else:
where = 'factoryInterior'
elif getHoodId(zoneId) == CashbotHQ:
where = 'mintInterior'
else:
zoneUtilNotify.error('unknown cogHQ interior for hood: ' + str(getHoodId(zoneId)))
else:
zoneUtilNotify.error('unknown cogHQ where: ' + str(zoneId))
elif suffix == 0:
where = 'playground'
elif suffix >= 500:
if isToon:
where = 'toonInterior'
else:
where = 'suitInterior'
else:
where = 'street'
return where
def getBranchZone(zoneId):
if tutorialDict:
branchId = tutorialDict['branch']
else:
branchId = zoneId - zoneId % 100
if not isCogHQZone(zoneId):
if zoneId % 1000 >= 500:
branchId -= 500
return branchId
def getCanonicalBranchZone(zoneId):
return getBranchZone(getCanonicalZoneId(zoneId))
def getCanonicalZoneId(zoneId):
return zoneId
def getHoodId(zoneId):
if tutorialDict:
hoodId = Tutorial
else:
hoodId = zoneId - zoneId % 1000
return hoodId
def getSafeZoneId(zoneId):
hoodId = getHoodId(zoneId)
if hoodId in HQToSafezone:
hoodId = HQToSafezone[hoodId]
return hoodId
def getCanonicalHoodId(zoneId):
return getHoodId(getCanonicalZoneId(zoneId))
def getCanonicalSafeZoneId(zoneId):
return getSafeZoneId(getCanonicalZoneId(zoneId))
def isInterior(zoneId):
if tutorialDict:
if zoneId in tutorialDict['interiors']:
r = 1
else:
r = 0
else:
r = zoneId % 1000 >= 500
return r
def overrideOn(branch, exteriorList, interiorList):
global tutorialDict
if tutorialDict:
zoneUtilNotify.warning('setTutorialDict: tutorialDict is already set!')
tutorialDict = {'branch': branch,
'exteriors': exteriorList,
'interiors': interiorList}
def overrideOff():
global tutorialDict
tutorialDict = None
return
def getWakeInfo(hoodId = None, zoneId = None):
wakeWaterHeight = 0
showWake = 0
try:
if hoodId is None:
hoodId = base.cr.playGame.getPlaceId()
if zoneId is None:
zoneId = base.cr.playGame.getPlace().getZoneId()
canonicalZoneId = getCanonicalZoneId(zoneId)
if canonicalZoneId == DonaldsDock:
wakeWaterHeight = DDWakeWaterHeight
showWake = 1
elif canonicalZoneId == ToontownCentral:
wakeWaterHeight = TTWakeWaterHeight
showWake = 1
elif canonicalZoneId == OutdoorZone:
wakeWaterHeight = OZWakeWaterHeight
showWake = 1
elif hoodId == MyEstate:
wakeWaterHeight = EstateWakeWaterHeight
showWake = 1
except AttributeError:
pass
return (showWake, wakeWaterHeight)
def canWearSuit(zoneId):
zoneId = getCanonicalHoodId(zoneId)
return zoneId >= DynamicZonesBegin or zoneId in [LawbotHQ, CashbotHQ, SellbotHQ, BossbotHQ]