Poodletooth-iLand/toontown/safezone/GSPlayground.py
2015-03-03 17:10:12 -05:00

115 lines
4.7 KiB
Python

from pandac.PandaModules import *
from toontown.toonbase import ToontownGlobals
import Playground
from toontown.launcher import DownloadForceAcknowledge
from toontown.building import Elevator
from toontown.toontowngui import TTDialog
from toontown.toonbase import TTLocalizer
from toontown.racing import RaceGlobals
from direct.fsm import State
class GSPlayground(Playground.Playground):
def __init__(self, loader, parentFSM, doneEvent):
Playground.Playground.__init__(self, loader, parentFSM, doneEvent)
self.parentFSM = parentFSM
self.startingBlockDoneEvent = 'startingBlockDone'
self.fsm.addState(State.State('startingBlock', self.enterStartingBlock, self.exitStartingBlock, ['walk']))
state = self.fsm.getStateNamed('walk')
state.addTransition('startingBlock')
def load(self):
Playground.Playground.load(self)
def unload(self):
Playground.Playground.unload(self)
def enter(self, requestStatus):
Playground.Playground.enter(self, requestStatus)
blimp = base.cr.playGame.hood.loader.geom.find('**/GS_blimp')
blimp.setPos(-70, 250, -70)
blimpBase = NodePath('blimpBase')
blimpBase.setPos(0, -200, 25)
blimpBase.setH(-40)
blimp.reparentTo(blimpBase)
blimpRoot = NodePath('blimpRoot')
blimpRoot.setPos(0, -70, 40)
blimpRoot.reparentTo(base.cr.playGame.hood.loader.geom)
blimpBase.reparentTo(blimpRoot)
self.rotateBlimp = blimpRoot.hprInterval(360, Vec3(360, 0, 0))
self.rotateBlimp.loop()
def exit(self):
Playground.Playground.exit(self)
self.rotateBlimp.finish()
def doRequestLeave(self, requestStatus):
self.fsm.request('trialerFA', [requestStatus])
def enterDFA(self, requestStatus):
doneEvent = 'dfaDoneEvent'
self.accept(doneEvent, self.enterDFACallback, [requestStatus])
self.dfa = DownloadForceAcknowledge.DownloadForceAcknowledge(doneEvent)
if requestStatus['hoodId'] == ToontownGlobals.MyEstate:
self.dfa.enter(base.cr.hoodMgr.getPhaseFromHood(ToontownGlobals.MyEstate))
else:
self.dfa.enter(5)
def enterTeleportIn(self, requestStatus):
reason = requestStatus.get('reason')
if reason == RaceGlobals.Exit_Barrier:
requestStatus['nextState'] = 'popup'
self.dialog = TTDialog.TTDialog(text=TTLocalizer.KartRace_RaceTimeout, command=self.__cleanupDialog, style=TTDialog.Acknowledge)
elif reason == RaceGlobals.Exit_Slow:
requestStatus['nextState'] = 'popup'
self.dialog = TTDialog.TTDialog(text=TTLocalizer.KartRace_RacerTooSlow, command=self.__cleanupDialog, style=TTDialog.Acknowledge)
elif reason == RaceGlobals.Exit_BarrierNoRefund:
requestStatus['nextState'] = 'popup'
self.dialog = TTDialog.TTDialog(text=TTLocalizer.KartRace_RaceTimeoutNoRefund, command=self.__cleanupDialog, style=TTDialog.Acknowledge)
Playground.Playground.enterTeleportIn(self, requestStatus)
def __cleanupDialog(self, value):
if self.dialog:
self.dialog.cleanup()
self.dialog = None
if hasattr(self, 'fsm'):
self.fsm.request('walk', [1])
return
def enterStartingBlock(self, distStartingBlock):
import pdb
pdb.set_trace()
self.accept(self.startingBlockDoneEvent, self.handleStartingBlockDone)
self.startingBlock = Elevator.Elevator(self.fsm.getStateNamed('startingBlock'), self.startingBlockDoneEvent, distStartingBlock)
distStartingBlock.elevatorFSM = self.startingBlock
self.startingBlock.load()
self.startingBlock.enter()
def exitStartingBlock(self):
self.ignore(self.startingBlockDoneEvent)
self.startingBlock.unload()
self.startingBlock.exit()
del self.startingBlock
def detectedStartingBlockCollision(self, distStartingBlock):
import pdb
pdb.set_trace()
self.fsm.request('startingBlock', [distStartingBlock])
def handleStartingBlockDone(self, doneStatus):
self.notify.debug('handling StartingBlock done event')
where = doneStatus['where']
if where == 'reject':
self.fsm.request('walk')
elif where == 'exit':
self.fsm.request('walk')
elif where == 'racetrack':
self.doneStatus = doneStatus
messenger.send(self.doneEvent)
else:
self.notify.error('Unknown mode: ' + where + ' in handleStartingBlockDone')
def showPaths(self):
from toontown.classicchars import CCharPaths
from toontown.toonbase import TTLocalizer
self.showPathPoints(CCharPaths.getPaths(TTLocalizer.Goofy, 1))