mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-10-31 16:57:54 +00:00
117 lines
4.5 KiB
Python
117 lines
4.5 KiB
Python
|
from direct.directnotify import DirectNotifyGlobal
|
||
|
from direct.fsm import ClassicFSM, State
|
||
|
from direct.fsm import State
|
||
|
from pandac.PandaModules import *
|
||
|
from toontown.hood import ZoneUtil
|
||
|
from toontown.launcher import DownloadForceAcknowledge
|
||
|
from toontown.safezone.SafeZoneLoader import SafeZoneLoader
|
||
|
from toontown.safezone.GSPlayground import GSPlayground
|
||
|
from toontown.effects.CarSmoke import CarSmoke
|
||
|
from toontown.toonbase import ToontownGlobals
|
||
|
import random
|
||
|
if (__debug__):
|
||
|
import pdb
|
||
|
|
||
|
class GSSafeZoneLoader(SafeZoneLoader):
|
||
|
|
||
|
def __init__(self, hood, parentFSM, doneEvent):
|
||
|
SafeZoneLoader.__init__(self, hood, parentFSM, doneEvent)
|
||
|
self.musicFile = 'phase_6/audio/bgm/GS_SZ.ogg'
|
||
|
self.activityMusicFile = 'phase_6/audio/bgm/GS_KartShop.ogg'
|
||
|
self.dnaFile = 'phase_6/dna/goofy_speedway_sz.pdna'
|
||
|
self.safeZoneStorageDNAFile = 'phase_6/dna/storage_GS_sz.pdna'
|
||
|
del self.fsm
|
||
|
self.fsm = ClassicFSM.ClassicFSM('SafeZoneLoader', [State.State('start', self.enterStart, self.exitStart, ['quietZone', 'playground', 'toonInterior']),
|
||
|
State.State('playground', self.enterPlayground, self.exitPlayground, ['quietZone', 'racetrack']),
|
||
|
State.State('toonInterior', self.enterToonInterior, self.exitToonInterior, ['quietZone']),
|
||
|
State.State('quietZone', self.enterQuietZone, self.exitQuietZone, ['playground', 'toonInterior', 'racetrack']),
|
||
|
State.State('racetrack', self.enterRacetrack, self.exitRacetrack, ['quietZone', 'playground']),
|
||
|
State.State('final', self.enterFinal, self.exitFinal, ['start'])], 'start', 'final')
|
||
|
self.smoke = None
|
||
|
return
|
||
|
|
||
|
def load(self):
|
||
|
SafeZoneLoader.load(self)
|
||
|
if base.cr.newsManager:
|
||
|
holidayIds = base.cr.newsManager.getDecorationHolidayId()
|
||
|
if ToontownGlobals.CRASHED_LEADERBOARD in holidayIds:
|
||
|
self.startSmokeEffect()
|
||
|
self.birdSound = map(base.loadSfx, ['phase_4/audio/sfx/SZ_TC_bird1.ogg', 'phase_4/audio/sfx/SZ_TC_bird2.ogg', 'phase_4/audio/sfx/SZ_TC_bird3.ogg'])
|
||
|
|
||
|
def unload(self):
|
||
|
del self.birdSound
|
||
|
if self.smoke != None:
|
||
|
self.stopSmokeEffect()
|
||
|
SafeZoneLoader.unload(self)
|
||
|
return
|
||
|
|
||
|
def enterPlayground(self, requestStatus):
|
||
|
self.playgroundClass = GSPlayground
|
||
|
SafeZoneLoader.enterPlayground(self, requestStatus)
|
||
|
|
||
|
def exitPlayground(self):
|
||
|
taskMgr.remove('titleText')
|
||
|
self.hood.hideTitleText()
|
||
|
SafeZoneLoader.exitPlayground(self)
|
||
|
self.playgroundClass = None
|
||
|
return
|
||
|
|
||
|
def handlePlaygroundDone(self):
|
||
|
status = self.place.doneStatus
|
||
|
if self.enteringARace(status) and status.get('shardId') == None:
|
||
|
zoneId = status['zoneId']
|
||
|
self.fsm.request('quietZone', [status])
|
||
|
elif ZoneUtil.getBranchZone(status['zoneId']) == self.hood.hoodId and status['shardId'] == None:
|
||
|
self.fsm.request('quietZone', [status])
|
||
|
else:
|
||
|
self.doneStatus = status
|
||
|
messenger.send(self.doneEvent)
|
||
|
return
|
||
|
|
||
|
def enteringARace(self, status):
|
||
|
if not status['where'] == 'racetrack':
|
||
|
return 0
|
||
|
if ZoneUtil.isDynamicZone(status['zoneId']):
|
||
|
return status['hoodId'] == self.hood.hoodId
|
||
|
else:
|
||
|
return ZoneUtil.getHoodId(status['zoneId']) == self.hood.hoodId
|
||
|
|
||
|
def enterRacetrack(self, requestStatus):
|
||
|
self.trackId = requestStatus['trackId']
|
||
|
self.accept('raceOver', self.handleRaceOver)
|
||
|
self.accept('leavingRace', self.handleLeftRace)
|
||
|
base.transitions.fadeOut(t=0)
|
||
|
|
||
|
def exitRacetrack(self):
|
||
|
del self.trackId
|
||
|
|
||
|
def handleRaceOver(self):
|
||
|
print 'you done!!'
|
||
|
|
||
|
def handleLeftRace(self):
|
||
|
req = {'loader': 'safeZoneLoader',
|
||
|
'where': 'playground',
|
||
|
'how': 'teleportIn',
|
||
|
'zoneId': 8000,
|
||
|
'hoodId': 8000,
|
||
|
'shardId': None}
|
||
|
self.fsm.request('quietZone', [req])
|
||
|
return
|
||
|
|
||
|
def startSmokeEffect(self):
|
||
|
if base.config.GetBool('want-crashedLeaderBoard-Smoke', 1):
|
||
|
leaderBoard = self.geom.find('**/*crashed*')
|
||
|
locator = leaderBoard.find('**/*locator_smoke*')
|
||
|
if locator != None:
|
||
|
self.smoke = CarSmoke(locator)
|
||
|
self.smoke.start()
|
||
|
return
|
||
|
|
||
|
def stopSmokeEffect(self):
|
||
|
if base.config.GetBool('want-crashedLeaderBoard-Smoke', 1):
|
||
|
if self.smoke != None:
|
||
|
self.smoke.stop()
|
||
|
self.smoke.destroy()
|
||
|
self.smoke = None
|
||
|
return
|