mirror of
https://github.com/Sneed-Group/Poodletooth-iLand
synced 2024-12-26 13:12:30 -06:00
191 lines
10 KiB
Python
191 lines
10 KiB
Python
from direct.directnotify import DirectNotifyGlobal
|
|
from direct.fsm import StateData
|
|
import CogHQLoader
|
|
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 MegaCorpInterior
|
|
import FactoryExterior
|
|
import FactoryInterior
|
|
import SellbotHQExterior
|
|
import SellbotHQBossBattle
|
|
from pandac.PandaModules import DecalEffect, NodePath
|
|
aspectSF = 0.7227
|
|
|
|
class SellbotCogHQLoader(CogHQLoader.CogHQLoader):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('SellbotCogHQLoader')
|
|
|
|
def __init__(self, hood, parentFSMState, doneEvent):
|
|
CogHQLoader.CogHQLoader.__init__(self, hood, parentFSMState, doneEvent)
|
|
self.fsm.addState(State.State('factoryExterior', self.enterFactoryExterior, self.exitFactoryExterior, ['quietZone', 'factoryInterior', 'cogHQExterior']))
|
|
for stateName in ['start', 'cogHQExterior', 'quietZone']:
|
|
state = self.fsm.getStateNamed(stateName)
|
|
state.addTransition('factoryExterior')
|
|
|
|
self.fsm.addState(State.State('factoryInterior', self.enterFactoryInterior, self.exitFactoryInterior, ['quietZone', 'factoryExterior']))
|
|
self.fsm.addState(State.State('megaCorpInterior', self.enterMegaCorpInterior, self.exitMegaCorpInterior, ['quietZone', 'factoryExterior']))
|
|
for stateName in ['quietZone']:
|
|
state = self.fsm.getStateNamed(stateName)
|
|
state.addTransition('factoryInterior')
|
|
|
|
self.musicFile = 'phase_9/audio/bgm/encntr_suit_HQ_nbrhood.ogg'
|
|
self.cogHQExteriorModelPath = 'phase_9/models/cogHQ/SellbotHQExterior'
|
|
self.cogHQLobbyModelPath = 'phase_9/models/cogHQ/SellbotHQLobby'
|
|
self.factoryExteriorModelPath = 'phase_9/models/cogHQ/SellbotFactoryExterior'
|
|
self.geom = None
|
|
|
|
def load(self, zoneId):
|
|
CogHQLoader.CogHQLoader.load(self, zoneId)
|
|
Toon.loadSellbotHQAnims()
|
|
|
|
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.SellbotHQ:
|
|
self.geom = loader.loadModel(self.cogHQExteriorModelPath)
|
|
dgLinkTunnel = self.geom.find('**/Tunnel1')
|
|
dgLinkTunnel.setName('linktunnel_dg_5316_DNARoot')
|
|
factoryLinkTunnel = self.geom.find('**/Tunnel2')
|
|
factoryLinkTunnel.setName('linktunnel_sellhq_11200_DNARoot')
|
|
cogSignModel = loader.loadModel('phase_4/models/props/sign_sellBotHeadHQ')
|
|
cogSign = cogSignModel.find('**/sign_sellBotHeadHQ').copyTo(NodePath())
|
|
cogSign.flattenStrong()
|
|
cogSignModel.removeNode()
|
|
cogSignSF = 23
|
|
dgSign = cogSign.copyTo(dgLinkTunnel)
|
|
dgSign.setPosHprScale(0.0, -291.5, 29, 180.0, 0.0, 0.0, cogSignSF, cogSignSF, cogSignSF * aspectSF)
|
|
dgSign.node().setEffect(DecalEffect.make())
|
|
dgText = DirectGui.OnscreenText(text=TTLocalizer.DaisyGardens[-1], font=ToontownGlobals.getSuitFont(), pos=(0, -0.3), scale=TTLocalizer.SCHQLdgText, mayChange=False, parent=dgSign)
|
|
dgText.setDepthWrite(0)
|
|
dgText.flattenStrong()
|
|
factorySign = cogSign.copyTo(factoryLinkTunnel)
|
|
factorySign.setPosHprScale(148.625, -155, 27, -90.0, 0.0, 0.0, cogSignSF, cogSignSF, cogSignSF * aspectSF)
|
|
factorySign.node().setEffect(DecalEffect.make())
|
|
factoryTypeText = DirectGui.OnscreenText(text=TTLocalizer.Sellbot, font=ToontownGlobals.getSuitFont(), pos=TTLocalizer.SellbotFactoryPosPart1, scale=TTLocalizer.SellbotFactoryScalePart1, mayChange=False, parent=factorySign)
|
|
factoryTypeText.setDepthWrite(0)
|
|
factoryTypeText.flattenStrong()
|
|
factoryText = DirectGui.OnscreenText(text=TTLocalizer.Factory, font=ToontownGlobals.getSuitFont(), pos=TTLocalizer.SellbotFactoryPosPart2, scale=TTLocalizer.SellbotFactoryScalePart2, mayChange=False, parent=factorySign)
|
|
factoryText.setDepthWrite(0)
|
|
factoryText.flattenStrong()
|
|
doors = self.geom.find('**/doors')
|
|
door0 = doors.find('**/door_0')
|
|
door1 = doors.find('**/door_1')
|
|
door2 = doors.find('**/door_2')
|
|
door3 = doors.find('**/door_3')
|
|
for door in [door0, door1, door2, door3]:
|
|
doorFrame = door.find('**/doorDoubleFlat/+GeomNode')
|
|
door.find('**/doorFrameHoleLeft').wrtReparentTo(doorFrame)
|
|
door.find('**/doorFrameHoleRight').wrtReparentTo(doorFrame)
|
|
doorTrigger = door.find('**/door_trigger*')
|
|
doorTrigger.setY(doorTrigger.getY() - 1.5)
|
|
doorFrame.node().setEffect(DecalEffect.make())
|
|
doorFrame.flattenStrong()
|
|
door.flattenMedium()
|
|
cogSign.removeNode()
|
|
self.geom.flattenMedium()
|
|
elif zoneId == ToontownGlobals.SellbotFactoryExt:
|
|
self.geom = loader.loadModel(self.factoryExteriorModelPath)
|
|
factoryLinkTunnel = self.geom.find('**/tunnel_group2')
|
|
factoryLinkTunnel.setName('linktunnel_sellhq_11000_DNARoot')
|
|
factoryLinkTunnel.find('**/tunnel_sphere').setName('tunnel_trigger')
|
|
cogSignModel = loader.loadModel('phase_4/models/props/sign_sellBotHeadHQ')
|
|
cogSign = cogSignModel.find('**/sign_sellBotHeadHQ').copyTo(NodePath())
|
|
cogSign.flattenStrong()
|
|
cogSignModel.removeNode()
|
|
cogSignSF = 23
|
|
elevatorSignSF = 15
|
|
hqSign = cogSign.copyTo(factoryLinkTunnel)
|
|
hqSign.setPosHprScale(0.0, -353, 27.5, -180.0, 0.0, 0.0, cogSignSF, cogSignSF, cogSignSF * aspectSF)
|
|
hqSign.node().setEffect(DecalEffect.make())
|
|
hqTypeText = DirectGui.OnscreenText(text=TTLocalizer.Sellbot, font=ToontownGlobals.getSuitFont(), pos=(0, -0.25), scale=0.075, mayChange=False, parent=hqSign)
|
|
hqTypeText.setDepthWrite(0)
|
|
hqTypeText.flattenStrong()
|
|
hqText = DirectGui.OnscreenText(text=TTLocalizer.Headquarters, font=ToontownGlobals.getSuitFont(), pos=(0, -0.34), scale=0.1, mayChange=False, parent=hqSign)
|
|
hqText.setDepthWrite(0)
|
|
hqText.flattenStrong()
|
|
frontDoor = self.geom.find('**/doorway1')
|
|
fdSign = cogSign.copyTo(frontDoor)
|
|
fdSign.setPosHprScale(62.74, -87.99, 17.26, 2.72, 0.0, 0.0, elevatorSignSF, elevatorSignSF, elevatorSignSF * aspectSF)
|
|
fdSign.node().setEffect(DecalEffect.make())
|
|
fdTypeText = DirectGui.OnscreenText(text=TTLocalizer.Factory, font=ToontownGlobals.getSuitFont(), pos=(0, -0.25), scale=TTLocalizer.SCHQLfdTypeText, mayChange=False, parent=fdSign)
|
|
fdTypeText.setDepthWrite(0)
|
|
fdTypeText.flattenStrong()
|
|
fdText = DirectGui.OnscreenText(text=TTLocalizer.SellbotFrontEntrance, font=ToontownGlobals.getSuitFont(), pos=(0, -0.34), scale=TTLocalizer.SCHQLdgText, mayChange=False, parent=fdSign)
|
|
fdText.setDepthWrite(0)
|
|
fdText.flattenStrong()
|
|
sideDoor = self.geom.find('**/doorway2')
|
|
sdSign = cogSign.copyTo(sideDoor)
|
|
sdSign.setPosHprScale(-164.78, 26.28, 17.25, -89.89, 0.0, 0.0, elevatorSignSF, elevatorSignSF, elevatorSignSF * aspectSF)
|
|
sdSign.node().setEffect(DecalEffect.make())
|
|
sdTypeText = DirectGui.OnscreenText(text=TTLocalizer.Factory, font=ToontownGlobals.getSuitFont(), pos=(0, -0.25), scale=0.075, mayChange=False, parent=sdSign)
|
|
sdTypeText.setDepthWrite(0)
|
|
sdTypeText.flattenStrong()
|
|
sdText = DirectGui.OnscreenText(text=TTLocalizer.SellbotSideEntrance, font=ToontownGlobals.getSuitFont(), pos=(0, -0.34), scale=0.1, mayChange=False, parent=sdSign)
|
|
sdText.setDepthWrite(0)
|
|
sdText.flattenStrong()
|
|
cogSign.removeNode()
|
|
self.geom.flattenMedium()
|
|
elif zoneId == ToontownGlobals.SellbotLobby:
|
|
if base.config.GetBool('want-qa-regression', 0):
|
|
self.notify.info('QA-REGRESSION: COGHQ: Visit SellbotLobby')
|
|
self.geom = loader.loadModel(self.cogHQLobbyModelPath)
|
|
front = self.geom.find('**/frontWall')
|
|
front.node().setEffect(DecalEffect.make())
|
|
door = self.geom.find('**/door_0')
|
|
parent = door.getParent()
|
|
door.wrtReparentTo(front)
|
|
doorFrame = door.find('**/doorDoubleFlat/+GeomNode')
|
|
door.find('**/doorFrameHoleLeft').wrtReparentTo(doorFrame)
|
|
door.find('**/doorFrameHoleRight').wrtReparentTo(doorFrame)
|
|
doorFrame.node().setEffect(DecalEffect.make())
|
|
door.find('**/leftDoor').wrtReparentTo(parent)
|
|
door.find('**/rightDoor').wrtReparentTo(parent)
|
|
self.geom.flattenStrong()
|
|
else:
|
|
self.notify.warning('loadPlaceGeom: unclassified zone %s' % zoneId)
|
|
CogHQLoader.CogHQLoader.loadPlaceGeom(self, zoneId)
|
|
|
|
def unload(self):
|
|
CogHQLoader.CogHQLoader.unload(self)
|
|
Toon.unloadSellbotHQAnims()
|
|
|
|
def enterFactoryExterior(self, requestStatus):
|
|
self.placeClass = FactoryExterior.FactoryExterior
|
|
self.enterPlace(requestStatus)
|
|
self.hood.spawnTitleText(requestStatus['zoneId'])
|
|
|
|
def exitFactoryExterior(self):
|
|
taskMgr.remove('titleText')
|
|
self.hood.hideTitleText()
|
|
self.exitPlace()
|
|
self.placeClass = None
|
|
|
|
def enterMegaCorpInterior(self, requestStatus):
|
|
self.placeClass = MegaCorpInterior.MegaCorpInterior
|
|
self.enterPlace(requestStatus)
|
|
|
|
def exitMegaCorpInterior(self):
|
|
self.exitPlace()
|
|
self.placeClass = None
|
|
|
|
def enterFactoryInterior(self, requestStatus):
|
|
self.placeClass = FactoryInterior.FactoryInterior
|
|
self.enterPlace(requestStatus)
|
|
|
|
def exitFactoryInterior(self):
|
|
self.exitPlace()
|
|
self.placeClass = None
|
|
|
|
def getExteriorPlaceClass(self):
|
|
return SellbotHQExterior.SellbotHQExterior
|
|
|
|
def getBossPlaceClass(self):
|
|
return SellbotHQBossBattle.SellbotHQBossBattle
|