from direct.directnotify import DirectNotifyGlobal from direct.fsm import StateData import CogHQLoader, MintInterior from toontown.toonbase import ToontownGlobals from direct.gui import DirectGui from toontown.toonbase import TTLocalizer from toontown.toon import Toon from direct.fsm import State import CashbotHQExterior import CashbotHQBossBattle from pandac.PandaModules import DecalEffect class CashbotCogHQLoader(CogHQLoader.CogHQLoader): notify = DirectNotifyGlobal.directNotify.newCategory('CashbotCogHQLoader') def __init__(self, hood, parentFSMState, doneEvent): CogHQLoader.CogHQLoader.__init__(self, hood, parentFSMState, doneEvent) self.fsm.addState(State.State('mintInterior', self.enterMintInterior, self.exitMintInterior, ['quietZone', 'cogHQExterior'])) for stateName in ['start', 'cogHQExterior', 'quietZone']: state = self.fsm.getStateNamed(stateName) state.addTransition('mintInterior') self.musicFile = 'phase_9/audio/bgm/encntr_suit_CBHQ_nbrhood.ogg' self.cogHQExteriorModelPath = 'phase_10/models/cogHQ/CashBotShippingStation' self.cogHQLobbyModelPath = 'phase_10/models/cogHQ/VaultLobby' self.geom = None def load(self, zoneId): CogHQLoader.CogHQLoader.load(self, zoneId) Toon.loadCashbotHQAnims() def unloadPlaceGeom(self): if self.geom: self.geom.removeNode() self.geom = None CogHQLoader.CogHQLoader.unloadPlaceGeom(self) def loadPlaceGeom(self, zoneId): self.notify.info('loadPlaceGeom: %s' % zoneId) zoneId = zoneId - zoneId % 100 if zoneId == ToontownGlobals.CashbotHQ: self.geom = loader.loadModel(self.cogHQExteriorModelPath) ddLinkTunnel = self.geom.find('**/LinkTunnel1') ddLinkTunnel.setName('linktunnel_dl_9252_DNARoot') locator = self.geom.find('**/sign_origin') backgroundGeom = self.geom.find('**/EntranceFrameFront') backgroundGeom.node().setEffect(DecalEffect.make()) signText = DirectGui.OnscreenText(text=TTLocalizer.DonaldsDreamland[-1], font=ToontownGlobals.getSuitFont(), scale=3, fg=(0.87, 0.87, 0.87, 1), mayChange=False, parent=backgroundGeom) signText.setPosHpr(locator, 0, 0, 0, 0, 0, 0) signText.setDepthWrite(0) self.geom.flattenMedium() elif zoneId == ToontownGlobals.CashbotLobby: if base.config.GetBool('want-qa-regression', 0): self.notify.info('QA-REGRESSION: COGHQ: Visit CashbotLobby') self.geom = loader.loadModel(self.cogHQLobbyModelPath) self.geom.flattenMedium() else: self.notify.warning('loadPlaceGeom: unclassified zone %s' % zoneId) CogHQLoader.CogHQLoader.loadPlaceGeom(self, zoneId) def unload(self): CogHQLoader.CogHQLoader.unload(self) Toon.unloadCashbotHQAnims() def enterMintInterior(self, requestStatus): self.placeClass = MintInterior.MintInterior self.mintId = requestStatus['mintId'] self.enterPlace(requestStatus) def exitMintInterior(self): self.exitPlace() self.placeClass = None del self.mintId return def getExteriorPlaceClass(self): return CashbotHQExterior.CashbotHQExterior def getBossPlaceClass(self): return CashbotHQBossBattle.CashbotHQBossBattle