Merge pull request #3 from ToontownSuperForeverMVP/feature/modern-loading-screen

GUI: Add Modern Loading Screen and Asset Preview Overlay
This commit is contained in:
Toontown Super 2026-08-02 16:25:44 -04:00 committed by GitHub
commit e90f3f9061
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 47 additions and 3 deletions

View File

@ -105,6 +105,7 @@ class PlayGame(StateData.StateData):
self.hood = None
self.quietZoneDoneEvent = uniqueName('quietZoneDone')
self.quietZoneStateData = None
self._reusePickAToonTtcHood = False
return
def enter(self, hoodId, zoneId, avId):
@ -120,13 +121,26 @@ class PlayGame(StateData.StateData):
else:
loaderName = ZoneUtil.getLoaderName(zoneId)
whereName = ZoneUtil.getToonWhereName(zoneId)
self.fsm.request('quietZone', [{'loader': loaderName,
requestStatus = {'loader': loaderName,
'where': whereName,
'how': 'teleportIn',
'hoodId': hoodId,
'zoneId': zoneId,
'shardId': None,
'avId': avId}])
'avId': avId}
# Revamp: when coming from Pick-a-Toon, Toontown Central may already be
# loaded and visible behind the GUI. We still must go through quietZone
# (FSM/network interest setup), but we can suppress the fade and reuse
# the already-loaded TTC hood in handleWaitForSetZoneResponse.
try:
preHood = getattr(base.cr, '_pickAToonTTCBackdrop', None)
if preHood and ZoneUtil.getCanonicalZoneId(hoodId) == ToontownGlobals.ToontownCentral and requestStatus['loader'] == 'safeZoneLoader':
requestStatus['noFade'] = True
except Exception:
pass
self.fsm.request('quietZone', [requestStatus])
return
def exit(self):
@ -244,6 +258,34 @@ class PlayGame(StateData.StateData):
loaderName = requestStatus['loader']
avId = requestStatus.get('avId', -1)
ownerId = requestStatus.get('ownerId', avId)
# Revamp: if we already preloaded Toontown Central during Pick-a-Toon,
# reuse it only when we're actually entering TTC playground. Otherwise
# drop the preload first — otherwise the backdrop and the real hood
# both load (assertion failures).
try:
preHood = getattr(base.cr, '_pickAToonTTCBackdrop', None)
reusePickAToonTTC = (
preHood
and canonicalHoodId == ToontownGlobals.ToontownCentral
and loaderName == 'safeZoneLoader'
)
if preHood and not reusePickAToonTTC:
base.cr.cleanupPickAToonTTCBackdrop()
elif reusePickAToonTTC:
self._reusePickAToonTtcHood = True
self.hood = preHood
base.cr._pickAToonTTCBackdrop = None
base.cr._pickAToonTTCBackdropRequestStatus = None
try:
if hasattr(self.hood, 'loader') and hasattr(self.hood.loader, 'geom'):
self.hood.loader.geom.reparentTo(render)
except Exception:
pass
return
except Exception:
pass
if base.config.GetBool('want-qa-regression', 0):
self.notify.info('QA-REGRESSION: NEIGHBORHOODS: Visit %s' % hoodName)
count = ToontownGlobals.hoodCountMap[canonicalHoodId]
@ -300,7 +342,9 @@ class PlayGame(StateData.StateData):
self.quietZoneStateData.exit()
self.quietZoneStateData.unload()
self.quietZoneStateData = None
loader.endBulkLoad('hood')
if not getattr(self, '_reusePickAToonTtcHood', False):
loader.endBulkLoad('hood')
self._reusePickAToonTtcHood = False
else:
self.handleLeftQuietZone()
return