Poodletooth-iLand/toontown/coghq/BossLobbyGui.py
2015-05-27 14:47:33 -05:00

144 lines
6.3 KiB
Python

from pandac.PandaModules import *
from direct.gui.DirectGui import *
from toontown.toonbase import ToontownGlobals
from toontown.toonbase import TTLocalizer
class BossLobbyGui(DirectFrame):
class InitialFrame(DirectFrame):
frame = 0
class LobbySelection(DirectButton):
def __init__(self, parent, **kw):
optiondefs = (
('relief', None, None),
('image_scale', 0.55, None),
('text_pos', (0.3, -0.0225), None),
('text_scale', 0.075, None),
)
self.defineoptions(kw, optiondefs)
DirectButton.__init__(self, relief=None)
self.initialiseoptions(BossLobbyGui.InitialFrame.LobbySelection)
def __init__(self, parent, callback, **kw):
optiondefs = (
('relief', None, None),
('state', DGG.NORMAL, None),
('image', DGG.getDefaultDialogGeom(), None),
('image_scale', (1.0, 1.0, 0.75), None),
('image_color', ToontownGlobals.GlobalDialogColor, None),
('pos', (0, 0, 0), None),
)
self.defineoptions(kw, optiondefs)
DirectFrame.__init__(self, relief=None)
self.initialiseoptions(BossLobbyGui.InitialFrame)
self.callback = callback
self.selection = -1
self.load()
def destroy(self):
if hasattr(self, 'title') and self.title:
self.title.destroy()
del self.title
if hasattr(self, 'buttons') and len(self.buttons):
for button in self.buttons:
button.destroy()
del self.buttons
if hasattr(self, 'okButton') and self.okButton:
self.okButton.destroy()
del self.okButton
if hasattr(self, 'cancelButton') and self.cancelButton:
self.cancelButton.destroy()
del self.cancelButton
DirectFrame.destroy(self)
def load(self):
empty = loader.loadModel("phase_3.5/models/gui/matching_game_gui.bam")
check = loader.loadModel("phase_3.5/models/gui/name_star")
buttons = loader.loadModel("phase_3/models/gui/dialog_box_buttons_gui")
self.emptyList = (empty.find("**/minnieCircle"), empty.find("**/minnieCircle"), empty.find("**/minnieCircle"))
self.checkList = (check.find("**/*"), check.find("**/*"), check.find("**/*"))
okImageList = (buttons.find('**/ChtBx_OKBtn_UP'), buttons.find('**/ChtBx_OKBtn_DN'), buttons.find('**/ChtBx_OKBtn_Rllvr'))
cancelImageList = (buttons.find('**/CloseBtn_UP'), buttons.find('**/CloseBtn_DN'), buttons.find('**/CloseBtn_Rllvr'))
empty.removeNode()
check.removeNode()
buttons.removeNode()
self.title = DirectLabel(parent=self, relief=None, text="Select a Lobby", textMayChange=1, text_scale=0.1, pos=(0, 0, 0.25))
self.okButton = DirectButton(parent=self, relief=None, image=okImageList, pos=(-0.1, 0, -0.275), command=self.nextFrame, extraArgs=[True])
self.cancelButton = DirectButton(parent=self, relief=None, image=cancelImageList, pos=(0.1, 0, -0.275), command=self.nextFrame, extraArgs=[False])
self.buttons = []
public = BossLobbyGui.InitialFrame.LobbySelection(self, image=self.emptyList, pos=(-0.35, 0, 0.075), text="Public", command=self.setSelection, extraArgs=[0])
private = BossLobbyGui.InitialFrame.LobbySelection(self, image=self.emptyList, pos=(-0.3475, 0, -0.075), text="Private", command=self.setSelection, extraArgs=[1])
self.buttons.extend([
public,
private
])
def setSelection(self, buttonId):
newSelection = self.buttons[buttonId]
if newSelection:
for button in self.buttons:
button['image'] = self.emptyList
button['image_scale'] = 0.55
button.setColor(1, 1, 1, 1)
newSelection['image'] = self.checkList
newSelection['image_scale'] = 0.11
newSelection.setColor(0, 1, 0, 1)
self.selection = buttonId
def getSelection(self):
return self.selection
def nextFrame(self, status):
if status and self.getSelection() >= 0:
options = {
'lobbyType': self.getSelection()
}
self.callback(self.frame + 1, options)
else:
self.callback(-1)
def __init__(self, callback, av):
DirectFrame.__init__(self)
self.callback = callback
self.avatar = av
self.frame = None
self.loadFrame(0)
def destroy(self):
if hasattr(self, 'frame') and self.frame:
self.frame.destroy()
del self.frame
DirectFrame.destroy(self)
def loadFrame(self, frameNum, args={}):
if hasattr(self, 'frame') and self.frame:
self.frame.destroy()
if frameNum == -1:
self.callback(self.avatar, False)
elif frameNum == 0:
self.frame = BossLobbyGui.InitialFrame(self, self.loadFrame)
elif frameNum == 1 and args.get('lobbyType') is not None:
lobby = args.get('lobbyType')
if lobby == 0:
self.callback(self.avatar, True)
elif lobby == 1:
self.callback(self.avatar, True)
# Use the following to run with the Gui Editor.
"""
from pandac.PandaModules import *
from direct.gui import DirectGuiGlobals
from direct.gui.DirectGui import *
from toontown.coghq.BossLobbyGui import BossLobbyGui
from toontown.toonbase import ToontownGlobals
DirectGuiGlobals.setDefaultFontFunc(ToontownGlobals.getInterfaceFont)
DirectGuiGlobals.setDefaultRolloverSound(base.loadSfx('phase_3/audio/sfx/GUI_rollover.ogg'))
DirectGuiGlobals.setDefaultClickSound(base.loadSfx('phase_3/audio/sfx/GUI_create_toon_fwd.ogg'))
DirectGuiGlobals.setDefaultDialogGeom(loader.loadModel('phase_3/models/gui/dialog_box_gui'))
test = BossLobbyGui(None, None)
"""