166 lines
6.3 KiB
Python
166 lines
6.3 KiB
Python
from panda3d.core import *
|
|
from toontown.toonbase.ToontownGlobals import *
|
|
from direct.showbase import DirectObject
|
|
from direct.directnotify import DirectNotifyGlobal
|
|
from toontown.toontowngui import TTDialog
|
|
from otp.otpbase import OTPLocalizer
|
|
from toontown.toontowngui import ToonHeadDialog
|
|
from direct.gui.DirectGui import DGG
|
|
from otp.otpbase import OTPGlobals
|
|
from toontown.toonbase import TTLocalizer
|
|
|
|
class BoardingGroupInviterPanels:
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('BoardingGroupInviterPanels')
|
|
|
|
def __init__(self):
|
|
self.__invitingPanel = None
|
|
self.__invitationRejectedPanel = None
|
|
return
|
|
|
|
def cleanup(self):
|
|
self.destroyInvitingPanel()
|
|
self.destroyInvitationRejectedPanel()
|
|
|
|
def createInvitingPanel(self, boardingParty, inviteeId, **kw):
|
|
self.destroyInvitingPanel()
|
|
self.destroyInvitationRejectedPanel()
|
|
self.notify.debug('Creating Inviting Panel.')
|
|
self.__invitingPanel = BoardingGroupInvitingPanel(boardingParty, inviteeId, **kw)
|
|
|
|
def createInvitationRejectedPanel(self, boardingParty, inviteeId, **kw):
|
|
self.destroyInvitingPanel()
|
|
self.destroyInvitationRejectedPanel()
|
|
self.notify.debug('Creating Invititation Rejected Panel.')
|
|
self.__invitationRejectedPanel = BoardingGroupInvitationRejectedPanel(boardingParty, inviteeId, **kw)
|
|
|
|
def destroyInvitingPanel(self):
|
|
if self.isInvitingPanelUp():
|
|
self.__invitingPanel.cleanup()
|
|
self.__invitingPanel = None
|
|
return
|
|
|
|
def destroyInvitationRejectedPanel(self):
|
|
if self.isInvitationRejectedPanelUp():
|
|
self.__invitationRejectedPanel.cleanup()
|
|
self.__invitationRejectedPanel = None
|
|
return
|
|
|
|
def isInvitingPanelIdCorrect(self, inviteeId):
|
|
if self.isInvitingPanelUp():
|
|
if inviteeId == self.__invitingPanel.avId:
|
|
return True
|
|
else:
|
|
self.notify.warning('Got a response back from an invitee, but a different invitee panel was open. Maybe lag?')
|
|
return False
|
|
|
|
def isInvitingPanelUp(self):
|
|
if self.__invitingPanel:
|
|
if not self.__invitingPanel.isEmpty():
|
|
return True
|
|
self.__invitingPanel = None
|
|
return False
|
|
|
|
def isInvitationRejectedPanelUp(self):
|
|
if self.__invitationRejectedPanel:
|
|
if not self.__invitationRejectedPanel.isEmpty():
|
|
return True
|
|
self.__invitationRejectedPanel = None
|
|
return False
|
|
|
|
def forceCleanup(self):
|
|
if self.isInvitingPanelUp():
|
|
self.__invitingPanel.forceCleanup()
|
|
self.__invitingPanel = None
|
|
if self.isInvitationRejectedPanelUp():
|
|
self.__invitationRejectedPanel.forceCleanup()
|
|
self.__invitationRejectedPanel = None
|
|
return
|
|
|
|
|
|
class BoardingGroupInviterPanelBase(ToonHeadDialog.ToonHeadDialog):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('BoardingGroupInviterPanelBase')
|
|
|
|
def __init__(self, boardingParty, inviteeId, **kw):
|
|
self.boardingParty = boardingParty
|
|
self.avId = inviteeId
|
|
avatar = base.cr.doId2do.get(self.avId)
|
|
self.avatarName = ''
|
|
if avatar:
|
|
self.avatar = avatar
|
|
self.avatarName = avatar.getName()
|
|
avatarDNA = avatar.getStyle()
|
|
self.defineParams()
|
|
command = self.handleButton
|
|
optiondefs = (('dialogName', self.dialogName, None),
|
|
('text', self.inviterText, None),
|
|
('style', self.panelStyle, None),
|
|
('buttonTextList', self.buttonTextList, None),
|
|
('command', command, None),
|
|
('image_color', (1.0, 0.89, 0.77, 1.0), None),
|
|
('geom_scale', 0.2, None),
|
|
('geom_pos', (-0.1, 0, -0.025), None),
|
|
('pad', (0.075, 0.075), None),
|
|
('topPad', 0, None),
|
|
('midPad', 0, None),
|
|
('pos', (0.45, 0, 0.75), None),
|
|
('scale', 0.75, None))
|
|
self.defineoptions(kw, optiondefs)
|
|
ToonHeadDialog.ToonHeadDialog.__init__(self, avatarDNA)
|
|
self.show()
|
|
return
|
|
|
|
def defineParams(self):
|
|
self.notify.error('setupParams: This method should not be called from the base class. Derived class should override this method')
|
|
|
|
def cleanup(self):
|
|
self.notify.debug('Destroying Panel.')
|
|
ToonHeadDialog.ToonHeadDialog.cleanup(self)
|
|
|
|
def forceCleanup(self):
|
|
self.handleButton(0)
|
|
|
|
def handleButton(self, value):
|
|
self.cleanup()
|
|
|
|
|
|
class BoardingGroupInvitingPanel(BoardingGroupInviterPanelBase):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('BoardingGroupInvitingPanel')
|
|
|
|
def __init__(self, boardingParty, inviteeId, **kw):
|
|
BoardingGroupInviterPanelBase.__init__(self, boardingParty, inviteeId, **kw)
|
|
self.initialiseoptions(BoardingGroupInvitingPanel)
|
|
self.setupUnexpectedExitHooks()
|
|
|
|
def defineParams(self):
|
|
self.dialogName = 'BoardingGroupInvitingPanel'
|
|
self.inviterText = TTLocalizer.BoardingInvitingMessage % self.avatarName
|
|
self.panelStyle = TTDialog.CancelOnly
|
|
self.buttonTextList = [OTPLocalizer.lCancel]
|
|
|
|
def handleButton(self, value):
|
|
self.boardingParty.requestCancelInvite(self.avId)
|
|
BoardingGroupInviterPanelBase.cleanup(self)
|
|
|
|
def setupUnexpectedExitHooks(self):
|
|
if self.avId in base.cr.doId2do:
|
|
toon = base.cr.doId2do[self.avId]
|
|
self.unexpectedExitEventName = toon.uniqueName('disable')
|
|
self.accept(self.unexpectedExitEventName, self.forceCleanup)
|
|
|
|
def forceCleanup(self):
|
|
self.ignore(self.unexpectedExitEventName)
|
|
BoardingGroupInviterPanelBase.forceCleanup(self)
|
|
|
|
|
|
class BoardingGroupInvitationRejectedPanel(BoardingGroupInviterPanelBase):
|
|
notify = DirectNotifyGlobal.directNotify.newCategory('BoardingGroupInvitationRejectedPanel')
|
|
|
|
def __init__(self, boardingParty, inviteeId, **kw):
|
|
BoardingGroupInviterPanelBase.__init__(self, boardingParty, inviteeId, **kw)
|
|
self.initialiseoptions(BoardingGroupInvitationRejectedPanel)
|
|
|
|
def defineParams(self):
|
|
self.dialogName = 'BoardingGroupInvitationRejectedPanel'
|
|
self.inviterText = TTLocalizer.BoardingInvitationRejected % self.avatarName
|
|
self.panelStyle = TTDialog.Acknowledge
|
|
self.buttonTextList = [OTPLocalizer.lOK]
|