toontown-just-works/toontown/quest/TrackChoiceGui.py
2024-07-07 18:08:39 -05:00

69 lines
4 KiB
Python

from direct.gui.DirectGui import *
from panda3d.core import *
from toontown.toonbase import ToontownTimer
from toontown.toonbase import ToontownGlobals
from toontown.toonbase import ToontownBattleGlobals
from toontown.toonbase import TTLocalizer
class TrackPoster(DirectFrame):
normalTextColor = (0.3, 0.25, 0.2, 1)
def __init__(self, trackId, callback):
DirectFrame.__init__(self, relief=None)
self.initialiseoptions(TrackPoster)
bookModel = loader.loadModel('phase_3.5/models/gui/stickerbook_gui')
trackName = ToontownBattleGlobals.Tracks[trackId].capitalize()
self.poster = DirectFrame(parent=self, relief=None, image=bookModel.find('**/questCard'), image_scale=(0.8, 0.58, 0.58))
invModel = loader.loadModel('phase_3.5/models/gui/inventory_icons')
iconGeom = invModel.find('**/' + ToontownBattleGlobals.AvPropsNew[trackId][1])
invModel.removeNode()
self.pictureFrame = DirectFrame(parent=self.poster, relief=None, image=bookModel.find('**/questPictureFrame'), image_scale=0.25, image_color=(0.45, 0.8, 0.45, 1), text=trackName, text_font=ToontownGlobals.getInterfaceFont(), text_pos=(0, -0.16), text_fg=self.normalTextColor, text_scale=0.05, text_align=TextNode.ACenter, text_wordwrap=8.0, textMayChange=0, geom=iconGeom, pos=(-0.2, 0, 0.06))
bookModel.removeNode()
if trackId == ToontownBattleGlobals.HEAL_TRACK:
help = TTLocalizer.TrackChoiceGuiHEAL
elif trackId == ToontownBattleGlobals.TRAP_TRACK:
help = TTLocalizer.TrackChoiceGuiTRAP
elif trackId == ToontownBattleGlobals.LURE_TRACK:
help = TTLocalizer.TrackChoiceGuiLURE
elif trackId == ToontownBattleGlobals.SOUND_TRACK:
help = TTLocalizer.TrackChoiceGuiSOUND
elif trackId == ToontownBattleGlobals.DROP_TRACK:
help = TTLocalizer.TrackChoiceGuiDROP
else:
help = ''
self.helpText = DirectFrame(parent=self.poster, relief=None, text=help, text_font=ToontownGlobals.getInterfaceFont(), text_fg=self.normalTextColor, text_scale=0.05, text_align=TextNode.ALeft, text_wordwrap=8.0, textMayChange=0, pos=(-0.05, 0, 0.14))
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
self.chooseButton = DirectButton(parent=self.poster, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(0.7, 1, 1), text=TTLocalizer.TrackChoiceGuiChoose, text_scale=0.06, text_pos=(0, -0.02), command=callback, extraArgs=[trackId], pos=(0, 0, -0.16), scale=0.8)
guiButton.removeNode()
return
class TrackChoiceGui(DirectFrame):
def __init__(self, tracks, timeout):
DirectFrame.__init__(self, relief=None, geom=DGG.getDefaultDialogGeom(), geom_color=Vec4(0.8, 0.6, 0.4, 1), geom_scale=(1.5, 1, 0.9), geom_hpr=(0, 0, -90), pos=(-0.85, 0, 0))
self.initialiseoptions(TrackChoiceGui)
guiButton = loader.loadModel('phase_3/models/gui/quit_button')
self.cancelButton = DirectButton(parent=self, relief=None, image=(guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale=(0.7, 1, 1), text=TTLocalizer.TrackChoiceGuiCancel, pos=(0.15, 0, -0.625), text_scale=0.06, text_pos=(0, -0.02), command=self.chooseTrack, extraArgs=[-1])
guiButton.removeNode()
self.timer = ToontownTimer.ToontownTimer()
self.timer.reparentTo(self)
self.timer.setScale(0.35)
self.timer.setPos(-0.2, 0, -0.6)
self.timer.countdown(timeout, self.timeout)
self.trackChoicePosters = []
for trackId in tracks:
tp = TrackPoster(trackId, self.chooseTrack)
tp.reparentTo(self)
self.trackChoicePosters.append(tp)
self.trackChoicePosters[0].setPos(0, 0, -0.2)
self.trackChoicePosters[1].setPos(0, 0, 0.4)
return
def chooseTrack(self, trackId):
self.timer.stop()
messenger.send('chooseTrack', [trackId])
def timeout(self):
messenger.send('chooseTrack', [-1])