Beispiel #1
0
    def __init__(self, doneEvent, hidePageNum=0, pageChangeCallback=None):
        dialogClass = getGlobalDialogClass()
        dialogClass.__init__(
            self,
            parent=aspect2d,
            dialogName='secretFriendsInfoDialog',
            doneEvent=doneEvent,
            okButtonText=OTPLocalizer.SecretFriendsInfoPanelClose,
            style=OTPDialog.Acknowledge,
            text='',
            topPad=1.5,
            sidePad=1.2,
            pos=(0, 0, .1),
            scale=.9,
        )

        self.textPanel = MultiPageTextFrame(
            parent=self,
            textList=OTPLocalizer.SecretFriendsInfoPanelText,
            hidePageNum=hidePageNum,
            pageChangeCallback=pageChangeCallback,
        )

        # futz with the DirectGui parameters to make the frame
        # image show up
        self['image'] = self['image']
        self['image_pos'] = (0, 0, -.1)
        self['image_scale'] = (2, 1, 1.3)
        closeButton = self.getChild(0)
        closeButton.setZ(-.56)
Beispiel #2
0
 def __init__(self,
              doneEvent,
              hidePageNum=0,
              pageChangeCallback=None,
              textList=[]):
     dialogClass = getGlobalDialogClass()
     dialogClass.__init__(self,
                          parent=aspect2d,
                          dialogName='privacyPolicyTextDialog',
                          doneEvent=doneEvent,
                          okButtonText=OTPLocalizer.PrivacyPolicyClose,
                          style=OTPDialog.Acknowledge,
                          text='',
                          topPad=1.5,
                          sidePad=1.2,
                          pos=(0, 0, -0.55),
                          scale=0.9)
     self.privacyPolicyText = MultiPageTextFrame(
         parent=self,
         textList=textList,
         hidePageNum=hidePageNum,
         pageChangeCallback=pageChangeCallback,
         pos=(0, 0, 0.7),
         width=2.4,
         height=1.5)
     self['image'] = self['image']
     self['image_pos'] = (0, 0, 0.65)
     self['image_scale'] = (2.7, 1, 1.9)
     closeButton = self.getChild(0)
     closeButton.setZ(-0.13)
 def __init__(self, doneEvent, hidePageNum=0, pageChangeCallback=None):
     ToontownDialog.GlobalDialog.__init__(
         self,
         parent=aspect2d,
         dialogName='privacyPolicyDialog',
         doneEvent=doneEvent,
         okButtonText=Localizer.BillingScreenPrivacyPolicyClose,
         style=ToontownDialog.Acknowledge,
         text='',
         topPad=1.5,
         sidePad=1.2,
         pos=(0, 0, -0.55000000000000004),
         scale=0.90000000000000002)
     self.privacyPolicyText = MultiPageTextFrame(
         parent=self,
         textList=Localizer.BillingScreenPrivacyPolicyText,
         hidePageNum=hidePageNum,
         pageChangeCallback=pageChangeCallback,
         pos=(0, 0, 0.69999999999999996),
         width=2.3999999999999999,
         height=1.5)
     self['image'] = self['image']
     self['image_pos'] = (0, 0, 0.65000000000000002)
     self['image_scale'] = (2.7000000000000002, 1, 1.8999999999999999)
     closeButton = self.getChild(0)
     closeButton.setZ(-0.13)
Beispiel #4
0
 def __init__(self, doneEvent, hidePageNum = 0, pageChangeCallback = None):
     ToontownDialog.GlobalDialog.__init__(self, parent = aspect2d, dialogName = 'secretFriendsInfoDialog', doneEvent = doneEvent, okButtonText = Localizer.BillingScreenPrivacyPolicyClose, style = ToontownDialog.Acknowledge, text = '', topPad = 1.5, sidePad = 1.2, pos = (0, 0, 0.10000000000000001), scale = 0.90000000000000002)
     self.textPanel = MultiPageTextFrame(parent = self, textList = Localizer.SecretFriendsInfoPanelText, hidePageNum = hidePageNum, pageChangeCallback = pageChangeCallback)
     self['image'] = self['image']
     self['image_pos'] = (0, 0, -0.10000000000000001)
     self['image_scale'] = (2, 1, 1.3)
     closeButton = self.getChild(0)
     closeButton.setZ(-0.56000000000000005)
 def load(self):
     guiButton = loader.loadModelOnce('phase_3/models/gui/quit_button')
     background = loader.loadModel('phase_3/models/gui/login-background')
     cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
     self.frame = DirectFrame(parent = aspect2d, relief = FLAT, image = background.find('**/member_agreement'))
     self.welcomeLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.88), text = Localizer.MemberAgreementScreenWelcome, text_font = getMinnieFont(), text_scale = 0.0935, text_fg = (1, 0.5, 0.10000000000000001, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
     self.onYourWayLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.79000000000000004), text = Localizer.MemberAgreementScreenOnYourWay, text_scale = 0.072499999999999995, text_fg = (1, 1, 0, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
     self.toontownLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.67000000000000004), text = Localizer.MemberAgreementScreenToontown, text_font = getMinnieFont(), text_scale = 0.086999999999999994, text_fg = (1, 0.5, 0.10000000000000001, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
     priceColor = (0, 0.90000000000000002, 0, 1)
     if self.tcr.getCreditCardUpFront():
         priceTextScale = 0.089999999999999997
         self.pricingLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.55800000000000005), text = Localizer.MemberAgreementScreenCCUpFrontPricing, text_scale = priceTextScale, text_fg = (1, 1, 0, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
         self.freeTrialDuration = DirectLabel(parent = self.pricingLabel, relief = None, pos = (-0.35999999999999999, 0, 0), text = self.tcr.accountServerConstants.getString('freeTrialPeriodInDays'), text_scale = priceTextScale, text_fg = priceColor, text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
         priceFirstMonthPos = (0.92000000000000004, 0, -0.17999999999999999)
         pricePerMonthPos = (-0.11, 0, -0.27000000000000002)
     else:
         priceTextScale = 0.10000000000000001
         self.pricingLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.55800000000000005), text = Localizer.MemberAgreementScreenPricing, text_scale = priceTextScale, text_fg = (1, 1, 0, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
         priceFirstMonthPos = (0.52000000000000002, 0, 0)
         pricePerMonthPos = (0.84999999999999998, 0, -0.10000000000000001)
     self.priceFirstMonth = DirectLabel(parent = self.pricingLabel, relief = None, pos = priceFirstMonthPos, text = '$%s' % self.tcr.accountServerConstants.getString('priceFirstMonth'), text_scale = priceTextScale, text_fg = priceColor, text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
     self.pricePerMonth = DirectLabel(parent = self.pricingLabel, relief = None, pos = pricePerMonthPos, text = '$%s' % self.tcr.accountServerConstants.getString('pricePerMonth'), text_scale = priceTextScale, text_fg = priceColor, text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
     self.dobEntry = DateOfBirthEntry(parent = self.frame, pos = (0, 0, 0.26000000000000001), scale = 0.095000000000000001, defaultAge = 0, curYear = self.tcr.dateObject.getYear())
     if not (self.checkAge):
         self.dobEntry.hide()
     
     self.memAgreement = MultiPageTextFrame(parent = self.frame, relief = None, textList = self.legalText, hidePageNum = 1, width = 1.8, height = 0.90000000000000002, wordWrap = 34, pos = (0, 0, -0.29999999999999999))
     self.cogIcon = DirectLabel(parent = self.memAgreement, relief = None, pos = (-0.75, 0, 0.29999999999999999), scale = 0.25, image = cogIcons.find('**/LegalIcon'))
     self.agreementTitle = DirectLabel(parent = self.memAgreement, relief = None, pos = (0.042651300000000003, 0, 0.26879399999999998), scale = 0.089999999999999997, text = Localizer.MemberAgreementScreenAgreementTitle, text_font = getSuitFont(), text_wordwrap = 10)
     self.clickNextLabel = DirectLabel(parent = self.memAgreement, relief = None, pos = (-0.32528299999999999, 0, -0.38825700000000002), scale = 0.050000000000000003, text = Localizer.MemberAgreementScreenClickNext)
     self.memAgreement.setPageChangeCallback(self._MemberAgreementScreen__handlePageChange)
     bottomButtonZ = -0.56999999999999995
     self.cancelButton = DirectButton(parent = self.memAgreement, relief = None, scale = 1.1000000000000001, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = (1, 1, 1), pos = (-0.5, 0, bottomButtonZ), text = Localizer.MemberAgreementScreenCancel, text_scale = 0.059999999999999998, text_pos = (0, -0.017999999999999999), command = self._MemberAgreementScreen__handleCancel)
     self.declineButton = DirectButton(parent = self.memAgreement, relief = None, scale = 1.1000000000000001, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = (1, 1, 1), pos = (0, 0, bottomButtonZ), text = Localizer.MemberAgreementScreenDisagree, text_scale = 0.059999999999999998, text_pos = (0, -0.017999999999999999), command = self._MemberAgreementScreen__handleDisagree)
     self.acceptButton = DirectButton(parent = self.memAgreement, relief = None, scale = 1.1000000000000001, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = (1, 1, 1), pos = (0.5, 0, bottomButtonZ), text = Localizer.MemberAgreementScreenAgree, text_scale = 0.059999999999999998, text_pos = (0, -0.017999999999999999), command = self._MemberAgreementScreen__handleAgree)
     self.dialogDoneEvent = 'memberAgreementDialogAck'
     self.dialog = ToontownDialog.GlobalDialog(doneEvent = self.dialogDoneEvent, message = '', style = ToontownDialog.Acknowledge)
     self.dialog.hide()
     self.mustAgreeDialog = DirectFrame(relief = None, pos = (0, 0.10000000000000001, 0), image = getDefaultDialogGeom(), image_color = GlobalDialogColor, image_scale = (1.3, 1.0, 0.80000000000000004), text = Localizer.MemberAgreementScreenYouMustAgree, text_scale = 0.080000000000000002, text_pos = (0.0, 0.20000000000000001), text_wordwrap = 15, sortOrder = NO_FADE_SORT_INDEX)
     self.mustAgreeDialog.hide()
     linePos = -0.13
     buttonImageScale = 1.1000000000000001
     buttonLineHeight = 0.112
     self.mustAgreeOkButton = DirectButton(parent = self.mustAgreeDialog, relief = None, pos = (0, 0, linePos), scale = 0.90000000000000002, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = buttonImageScale, text = Localizer.MemberAgreementScreenYouMustAgreeOk, text_scale = 0.059999999999999998, text_pos = (0, -0.02), command = self._MemberAgreementScreen__handleMustAgreeOk)
     linePos -= buttonLineHeight
     self.mustAgreeQuitButton = DirectButton(parent = self.mustAgreeDialog, relief = None, pos = (0, 0, linePos), scale = 0.90000000000000002, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = buttonImageScale, image0_color = Vec4(1, 0.10000000000000001, 0.10000000000000001, 1), image1_color = Vec4(1, 0.10000000000000001, 0.10000000000000001, 1), image2_color = Vec4(1, 1, 1, 1), text = Localizer.MemberAgreementScreenYouMustAgreeQuit, text_scale = 0.059999999999999998, text_pos = (0, -0.02), command = self._MemberAgreementScreen__handleMustAgreeQuit)
     linePos -= buttonLineHeight
     self.frame.hide()
     background.removeNode()
     guiButton.removeNode()
     cogIcons.removeNode()
Beispiel #6
0
    def __init__(self, doneEvent,
                 hidePageNum = 0,
                 pageChangeCallback = None,
                 textList = []):
        assert self.notify.debugStateCall(self)
        dialogClass = getGlobalDialogClass()
        dialogClass.__init__(
            self,
            parent = aspect2d,
            dialogName = 'privacyPolicyTextDialog',
            doneEvent = doneEvent,
            okButtonText = OTPLocalizer.PrivacyPolicyClose,
            style = OTPDialog.Acknowledge,
            text = '',
            topPad = 1.5,
            sidePad = 1.2,
            pos = (0,0,-.55),
            scale = .9,
            )

        self.privacyPolicyText = MultiPageTextFrame(
            parent = self,
            textList = textList,
            hidePageNum = hidePageNum,
            pageChangeCallback=pageChangeCallback,
            pos = (0,0,.7),
            width = 2.4,
            height = 1.5,
            )

        # futz with the DirectGui parameters to make the frame
        # image show up
        self['image']=self['image']
        self['image_pos']=(0,0,.65)
        self['image_scale']=(2.7,1,1.9)
        closeButton=self.getChild(0)
        closeButton.setZ(-.13)
class MemberAgreementScreen(DirectObject):
    
    def __init__(self, tcr, doneEvent):
        self.doneEvent = doneEvent
        self.tcr = tcr
        self.loginInterface = self.tcr.loginInterface
        self.legalText = Localizer.MemberAgreementScreenLegalText
        self.numPages = len(self.legalText)
        self.checkAge = config.GetBool('check-member-agreement-age', 0)
        self.fsm = FSM.FSM('MemberAgreementScreen', [
            State.State('off', self.enterOff, self.exitOff, [
                'getParents']),
            State.State('getParents', self.enterGetParents, self.exitGetParents, [
                'viewAgreement']),
            State.State('viewAgreement', self.enterViewAgreement, self.exitViewAgreement, [
                'youMustAgree']),
            State.State('youMustAgree', self.enterYouMustAgree, self.exitYouMustAgree, [
                'viewAgreement'])], 'off', 'off')
        self.fsm.enterInitialState()

    
    def load(self):
        guiButton = loader.loadModelOnce('phase_3/models/gui/quit_button')
        background = loader.loadModel('phase_3/models/gui/login-background')
        cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
        self.frame = DirectFrame(parent = aspect2d, relief = FLAT, image = background.find('**/member_agreement'))
        self.welcomeLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.88), text = Localizer.MemberAgreementScreenWelcome, text_font = getMinnieFont(), text_scale = 0.0935, text_fg = (1, 0.5, 0.10000000000000001, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
        self.onYourWayLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.79000000000000004), text = Localizer.MemberAgreementScreenOnYourWay, text_scale = 0.072499999999999995, text_fg = (1, 1, 0, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
        self.toontownLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.67000000000000004), text = Localizer.MemberAgreementScreenToontown, text_font = getMinnieFont(), text_scale = 0.086999999999999994, text_fg = (1, 0.5, 0.10000000000000001, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
        priceColor = (0, 0.90000000000000002, 0, 1)
        if self.tcr.getCreditCardUpFront():
            priceTextScale = 0.089999999999999997
            self.pricingLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.55800000000000005), text = Localizer.MemberAgreementScreenCCUpFrontPricing, text_scale = priceTextScale, text_fg = (1, 1, 0, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
            self.freeTrialDuration = DirectLabel(parent = self.pricingLabel, relief = None, pos = (-0.35999999999999999, 0, 0), text = self.tcr.accountServerConstants.getString('freeTrialPeriodInDays'), text_scale = priceTextScale, text_fg = priceColor, text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
            priceFirstMonthPos = (0.92000000000000004, 0, -0.17999999999999999)
            pricePerMonthPos = (-0.11, 0, -0.27000000000000002)
        else:
            priceTextScale = 0.10000000000000001
            self.pricingLabel = DirectLabel(parent = self.frame, relief = None, pos = (0, 0, 0.55800000000000005), text = Localizer.MemberAgreementScreenPricing, text_scale = priceTextScale, text_fg = (1, 1, 0, 1), text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
            priceFirstMonthPos = (0.52000000000000002, 0, 0)
            pricePerMonthPos = (0.84999999999999998, 0, -0.10000000000000001)
        self.priceFirstMonth = DirectLabel(parent = self.pricingLabel, relief = None, pos = priceFirstMonthPos, text = '$%s' % self.tcr.accountServerConstants.getString('priceFirstMonth'), text_scale = priceTextScale, text_fg = priceColor, text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
        self.pricePerMonth = DirectLabel(parent = self.pricingLabel, relief = None, pos = pricePerMonthPos, text = '$%s' % self.tcr.accountServerConstants.getString('pricePerMonth'), text_scale = priceTextScale, text_fg = priceColor, text_shadow = (0, 0, 0, 1), text_shadowOffset = (0.080000000000000002, 0.080000000000000002))
        self.dobEntry = DateOfBirthEntry(parent = self.frame, pos = (0, 0, 0.26000000000000001), scale = 0.095000000000000001, defaultAge = 0, curYear = self.tcr.dateObject.getYear())
        if not (self.checkAge):
            self.dobEntry.hide()
        
        self.memAgreement = MultiPageTextFrame(parent = self.frame, relief = None, textList = self.legalText, hidePageNum = 1, width = 1.8, height = 0.90000000000000002, wordWrap = 34, pos = (0, 0, -0.29999999999999999))
        self.cogIcon = DirectLabel(parent = self.memAgreement, relief = None, pos = (-0.75, 0, 0.29999999999999999), scale = 0.25, image = cogIcons.find('**/LegalIcon'))
        self.agreementTitle = DirectLabel(parent = self.memAgreement, relief = None, pos = (0.042651300000000003, 0, 0.26879399999999998), scale = 0.089999999999999997, text = Localizer.MemberAgreementScreenAgreementTitle, text_font = getSuitFont(), text_wordwrap = 10)
        self.clickNextLabel = DirectLabel(parent = self.memAgreement, relief = None, pos = (-0.32528299999999999, 0, -0.38825700000000002), scale = 0.050000000000000003, text = Localizer.MemberAgreementScreenClickNext)
        self.memAgreement.setPageChangeCallback(self._MemberAgreementScreen__handlePageChange)
        bottomButtonZ = -0.56999999999999995
        self.cancelButton = DirectButton(parent = self.memAgreement, relief = None, scale = 1.1000000000000001, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = (1, 1, 1), pos = (-0.5, 0, bottomButtonZ), text = Localizer.MemberAgreementScreenCancel, text_scale = 0.059999999999999998, text_pos = (0, -0.017999999999999999), command = self._MemberAgreementScreen__handleCancel)
        self.declineButton = DirectButton(parent = self.memAgreement, relief = None, scale = 1.1000000000000001, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = (1, 1, 1), pos = (0, 0, bottomButtonZ), text = Localizer.MemberAgreementScreenDisagree, text_scale = 0.059999999999999998, text_pos = (0, -0.017999999999999999), command = self._MemberAgreementScreen__handleDisagree)
        self.acceptButton = DirectButton(parent = self.memAgreement, relief = None, scale = 1.1000000000000001, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = (1, 1, 1), pos = (0.5, 0, bottomButtonZ), text = Localizer.MemberAgreementScreenAgree, text_scale = 0.059999999999999998, text_pos = (0, -0.017999999999999999), command = self._MemberAgreementScreen__handleAgree)
        self.dialogDoneEvent = 'memberAgreementDialogAck'
        self.dialog = ToontownDialog.GlobalDialog(doneEvent = self.dialogDoneEvent, message = '', style = ToontownDialog.Acknowledge)
        self.dialog.hide()
        self.mustAgreeDialog = DirectFrame(relief = None, pos = (0, 0.10000000000000001, 0), image = getDefaultDialogGeom(), image_color = GlobalDialogColor, image_scale = (1.3, 1.0, 0.80000000000000004), text = Localizer.MemberAgreementScreenYouMustAgree, text_scale = 0.080000000000000002, text_pos = (0.0, 0.20000000000000001), text_wordwrap = 15, sortOrder = NO_FADE_SORT_INDEX)
        self.mustAgreeDialog.hide()
        linePos = -0.13
        buttonImageScale = 1.1000000000000001
        buttonLineHeight = 0.112
        self.mustAgreeOkButton = DirectButton(parent = self.mustAgreeDialog, relief = None, pos = (0, 0, linePos), scale = 0.90000000000000002, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = buttonImageScale, text = Localizer.MemberAgreementScreenYouMustAgreeOk, text_scale = 0.059999999999999998, text_pos = (0, -0.02), command = self._MemberAgreementScreen__handleMustAgreeOk)
        linePos -= buttonLineHeight
        self.mustAgreeQuitButton = DirectButton(parent = self.mustAgreeDialog, relief = None, pos = (0, 0, linePos), scale = 0.90000000000000002, image = (guiButton.find('**/QuitBtn_UP'), guiButton.find('**/QuitBtn_DN'), guiButton.find('**/QuitBtn_RLVR')), image_scale = buttonImageScale, image0_color = Vec4(1, 0.10000000000000001, 0.10000000000000001, 1), image1_color = Vec4(1, 0.10000000000000001, 0.10000000000000001, 1), image2_color = Vec4(1, 1, 1, 1), text = Localizer.MemberAgreementScreenYouMustAgreeQuit, text_scale = 0.059999999999999998, text_pos = (0, -0.02), command = self._MemberAgreementScreen__handleMustAgreeQuit)
        linePos -= buttonLineHeight
        self.frame.hide()
        background.removeNode()
        guiButton.removeNode()
        cogIcons.removeNode()

    
    def unload(self):
        self.mustAgreeDialog.destroy()
        self.frame.destroy()
        self.dialog.cleanup()
        del self.frame
        del self.dialog
        del self.fsm

    
    def enter(self):
        self.frame.show()
        
        def getDOBfromEntry(self = self):
            self.dobMonth = self.dobEntry.getMonth()
            self.dobYear = self.dobEntry.getYear()
            self.dobDay = self.dobEntry.getDay()

        if self.tcr.getCreditCardUpFront():
            getDOBfromEntry()
        else:
            
            try:
                error = self.loginInterface.getAccountData(self.tcr.userName, self.tcr.password)
            except TTAccount.TTAccountException:
                error = 'exception raised'

            if not error:
                accountData = self.loginInterface.accountData
                if accountData.hasKey('dobMonth') and accountData.hasKey('dobYear'):
                    pass
                if not accountData.hasKey('dobDay'):
                    error = 1
                
            
            if error:
                getDOBfromEntry()
            else:
                
                try:
                    self.dobMonth = accountData.getInt('dobMonth')
                    self.dobYear = accountData.getInt('dobYear')
                    self.dobDay = accountData.getInt('dobDay')
                except ValueError:
                    getDOBfromEntry()

                if self.checkAge:
                    self.dobEntry.setMonth(self.dobMonth)
                    self.dobEntry.setYear(self.dobYear)
                    self.dobEntry.setDay(self.dobDay)
                
        self.age = toonbase.tcr.dateObject.getAge(self.dobMonth, self.dobYear, self.dobDay)
        self.fsm.request('getParents')

    
    def exit(self):
        self.fsm.requestFinalState()
        self.frame.hide()

    
    def enterOff(self):
        pass

    
    def exitOff(self):
        pass

    
    def enterGetParents(self):
        if self.tcr.getCreditCardUpFront() or self.age < 18:
            if self.tcr.getCreditCardUpFront():
                msg = Localizer.MemberAgreementScreenGetParentsUnconditional
            else:
                msg = Localizer.MemberAgreementScreenGetParents
            self.dialog.setMessage(msg)
            self.dialog.show()
            
            def handleGetParentsAck(self = self):
                self.dialog.hide()
                self.fsm.request('viewAgreement')

            self.acceptOnce(self.dialogDoneEvent, handleGetParentsAck)
        else:
            self.fsm.request('viewAgreement')

    
    def exitGetParents(self):
        pass

    
    def enterViewAgreement(self):
        self.memAgreement.acceptAgreementKeypresses()

    
    def exitViewAgreement(self):
        self.memAgreement.ignoreAgreementKeypresses()

    
    def enterYouMustAgree(self):
        base.transitions.fadeScreen(0.5)
        self.mustAgreeDialog.show()

    
    def _MemberAgreementScreen__handleMustAgreeOk(self):
        self.fsm.request('viewAgreement')

    
    def _MemberAgreementScreen__handleMustAgreeQuit(self):
        messenger.send(self.doneEvent, [
            {
                'mode': 'quit' }])

    
    def exitYouMustAgree(self):
        base.transitions.noTransitions()
        self.mustAgreeDialog.hide()

    
    def _MemberAgreementScreen__handleAgree(self):
        if self.checkAge:
            age = self.dobEntry.getAge()
            if age < 18:
                self.dialog.setMessage(Localizer.MemberAgreementScreenMustBeOlder)
                self.dialog.show()
                
                def handleOlderAck(self = self):
                    self.dialog.hide()
                    self.fsm.request('viewAgreement')

                self.acceptOnce(self.dialogDoneEvent, handleOlderAck)
                self.memAgreement.ignoreAgreementKeypresses()
            else:
                messenger.send(self.doneEvent, [
                    {
                        'mode': 'agree' }])
        else:
            messenger.send(self.doneEvent, [
                {
                    'mode': 'agree' }])

    
    def _MemberAgreementScreen__handleDisagree(self):
        self.fsm.request('youMustAgree')

    
    def _MemberAgreementScreen__handleCancel(self):
        messenger.send(self.doneEvent, [
            {
                'mode': 'cancel' }])

    
    def _MemberAgreementScreen__handlePageChange(self, pageNum):
        if pageNum == 0:
            self.cogIcon.show()
            self.agreementTitle.show()
            self.clickNextLabel.show()
        else:
            self.cogIcon.hide()
            self.agreementTitle.hide()
            self.clickNextLabel.hide()
class MemberAgreementScreen(DirectObject):
    __module__ = __name__

    def __init__(self, tcr, doneEvent):
        self.doneEvent = doneEvent
        self.tcr = tcr
        self.loginInterface = self.tcr.loginInterface
        self.legalText = Localizer.MemberAgreementScreenLegalText
        self.numPages = len(self.legalText)
        self.checkAge = config.GetBool('check-member-agreement-age', 0)
        self.fsm = FSM.FSM('MemberAgreementScreen', [
            State.State('off', self.enterOff, self.exitOff, ['getParents']),
            State.State('getParents', self.enterGetParents,
                        self.exitGetParents, ['viewAgreement']),
            State.State('viewAgreement', self.enterViewAgreement,
                        self.exitViewAgreement, ['youMustAgree']),
            State.State('youMustAgree', self.enterYouMustAgree,
                        self.exitYouMustAgree, ['viewAgreement'])
        ], 'off', 'off')
        self.fsm.enterInitialState()

    def load(self):
        guiButton = loader.loadModelOnce('phase_3/models/gui/quit_button')
        background = loader.loadModel('phase_3/models/gui/login-background')
        cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
        self.frame = DirectFrame(parent=aspect2d,
                                 relief=FLAT,
                                 image=background.find('**/member_agreement'))
        self.welcomeLabel = DirectLabel(
            parent=self.frame,
            relief=None,
            pos=(0, 0, 0.88),
            text=Localizer.MemberAgreementScreenWelcome,
            text_font=getMinnieFont(),
            text_scale=0.0935,
            text_fg=(1, 0.5, 0.1, 1),
            text_shadow=(0, 0, 0, 1),
            text_shadowOffset=(0.08, 0.08))
        self.onYourWayLabel = DirectLabel(
            parent=self.frame,
            relief=None,
            pos=(0, 0, 0.79),
            text=Localizer.MemberAgreementScreenOnYourWay,
            text_scale=0.0725,
            text_fg=(1, 1, 0, 1),
            text_shadow=(0, 0, 0, 1),
            text_shadowOffset=(0.08, 0.08))
        self.toontownLabel = DirectLabel(
            parent=self.frame,
            relief=None,
            pos=(0, 0, 0.67),
            text=Localizer.MemberAgreementScreenToontown,
            text_font=getMinnieFont(),
            text_scale=0.087,
            text_fg=(1, 0.5, 0.1, 1),
            text_shadow=(0, 0, 0, 1),
            text_shadowOffset=(0.08, 0.08))
        priceColor = (0, 0.9, 0, 1)
        if self.tcr.getCreditCardUpFront():
            priceTextScale = 0.09
            self.pricingLabel = DirectLabel(
                parent=self.frame,
                relief=None,
                pos=(0, 0, 0.558),
                text=Localizer.MemberAgreementScreenCCUpFrontPricing,
                text_scale=priceTextScale,
                text_fg=(1, 1, 0, 1),
                text_shadow=(0, 0, 0, 1),
                text_shadowOffset=(0.08, 0.08))
            self.freeTrialDuration = DirectLabel(
                parent=self.pricingLabel,
                relief=None,
                pos=(-0.36, 0, 0),
                text=self.tcr.accountServerConstants.getString(
                    'freeTrialPeriodInDays'),
                text_scale=priceTextScale,
                text_fg=priceColor,
                text_shadow=(0, 0, 0, 1),
                text_shadowOffset=(0.08, 0.08))
            priceFirstMonthPos = (0.92, 0, -0.18)
            pricePerMonthPos = (-0.11, 0, -0.27)
        else:
            priceTextScale = 0.1
            self.pricingLabel = DirectLabel(
                parent=self.frame,
                relief=None,
                pos=(0, 0, 0.558),
                text=Localizer.MemberAgreementScreenPricing,
                text_scale=priceTextScale,
                text_fg=(1, 1, 0, 1),
                text_shadow=(0, 0, 0, 1),
                text_shadowOffset=(0.08, 0.08))
            priceFirstMonthPos = (0.52, 0, 0)
            pricePerMonthPos = (0.85, 0, -0.1)
        self.priceFirstMonth = DirectLabel(
            parent=self.pricingLabel,
            relief=None,
            pos=priceFirstMonthPos,
            text='$%s' %
            self.tcr.accountServerConstants.getString('priceFirstMonth'),
            text_scale=priceTextScale,
            text_fg=priceColor,
            text_shadow=(0, 0, 0, 1),
            text_shadowOffset=(0.08, 0.08))
        self.pricePerMonth = DirectLabel(
            parent=self.pricingLabel,
            relief=None,
            pos=pricePerMonthPos,
            text='$%s' %
            self.tcr.accountServerConstants.getString('pricePerMonth'),
            text_scale=priceTextScale,
            text_fg=priceColor,
            text_shadow=(0, 0, 0, 1),
            text_shadowOffset=(0.08, 0.08))
        self.dobEntry = DateOfBirthEntry(parent=self.frame,
                                         pos=(0, 0, 0.26),
                                         scale=0.095,
                                         defaultAge=0,
                                         curYear=self.tcr.dateObject.getYear())
        if not self.checkAge:
            self.dobEntry.hide()
        self.memAgreement = MultiPageTextFrame(parent=self.frame,
                                               relief=None,
                                               textList=self.legalText,
                                               hidePageNum=1,
                                               width=1.8,
                                               height=0.9,
                                               wordWrap=34,
                                               pos=(0, 0, -0.3))
        self.cogIcon = DirectLabel(parent=self.memAgreement,
                                   relief=None,
                                   pos=(-0.75, 0, 0.3),
                                   scale=0.25,
                                   image=cogIcons.find('**/LegalIcon'))
        self.agreementTitle = DirectLabel(
            parent=self.memAgreement,
            relief=None,
            pos=(0.0426513, 0, 0.268794),
            scale=0.09,
            text=Localizer.MemberAgreementScreenAgreementTitle,
            text_font=getSuitFont(),
            text_wordwrap=10)
        self.clickNextLabel = DirectLabel(
            parent=self.memAgreement,
            relief=None,
            pos=(-0.325283, 0, -0.388257),
            scale=0.05,
            text=Localizer.MemberAgreementScreenClickNext)
        self.memAgreement.setPageChangeCallback(self.__handlePageChange)
        bottomButtonZ = -0.57
        self.cancelButton = DirectButton(
            parent=self.memAgreement,
            relief=None,
            scale=1.1,
            image=(guiButton.find('**/QuitBtn_UP'),
                   guiButton.find('**/QuitBtn_DN'),
                   guiButton.find('**/QuitBtn_RLVR')),
            image_scale=(1, 1, 1),
            pos=(-0.5, 0, bottomButtonZ),
            text=Localizer.MemberAgreementScreenCancel,
            text_scale=0.06,
            text_pos=(0, -0.018),
            command=self.__handleCancel)
        self.declineButton = DirectButton(
            parent=self.memAgreement,
            relief=None,
            scale=1.1,
            image=(guiButton.find('**/QuitBtn_UP'),
                   guiButton.find('**/QuitBtn_DN'),
                   guiButton.find('**/QuitBtn_RLVR')),
            image_scale=(1, 1, 1),
            pos=(0, 0, bottomButtonZ),
            text=Localizer.MemberAgreementScreenDisagree,
            text_scale=0.06,
            text_pos=(0, -0.018),
            command=self.__handleDisagree)
        self.acceptButton = DirectButton(
            parent=self.memAgreement,
            relief=None,
            scale=1.1,
            image=(guiButton.find('**/QuitBtn_UP'),
                   guiButton.find('**/QuitBtn_DN'),
                   guiButton.find('**/QuitBtn_RLVR')),
            image_scale=(1, 1, 1),
            pos=(0.5, 0, bottomButtonZ),
            text=Localizer.MemberAgreementScreenAgree,
            text_scale=0.06,
            text_pos=(0, -0.018),
            command=self.__handleAgree)
        self.dialogDoneEvent = 'memberAgreementDialogAck'
        self.dialog = ToontownDialog.GlobalDialog(
            doneEvent=self.dialogDoneEvent,
            message='',
            style=ToontownDialog.Acknowledge)
        self.dialog.hide()
        self.mustAgreeDialog = DirectFrame(
            relief=None,
            pos=(0, 0.1, 0),
            image=getDefaultDialogGeom(),
            image_color=GlobalDialogColor,
            image_scale=(1.3, 1.0, 0.8),
            text=Localizer.MemberAgreementScreenYouMustAgree,
            text_scale=0.08,
            text_pos=(0.0, 0.2),
            text_wordwrap=15,
            sortOrder=NO_FADE_SORT_INDEX)
        self.mustAgreeDialog.hide()
        linePos = -0.13
        buttonImageScale = 1.1
        buttonLineHeight = 0.112
        self.mustAgreeOkButton = DirectButton(
            parent=self.mustAgreeDialog,
            relief=None,
            pos=(0, 0, linePos),
            scale=0.9,
            image=(guiButton.find('**/QuitBtn_UP'),
                   guiButton.find('**/QuitBtn_DN'),
                   guiButton.find('**/QuitBtn_RLVR')),
            image_scale=buttonImageScale,
            text=Localizer.MemberAgreementScreenYouMustAgreeOk,
            text_scale=0.06,
            text_pos=(0, -0.02),
            command=self.__handleMustAgreeOk)
        linePos -= buttonLineHeight
        self.mustAgreeQuitButton = DirectButton(
            parent=self.mustAgreeDialog,
            relief=None,
            pos=(0, 0, linePos),
            scale=0.9,
            image=(guiButton.find('**/QuitBtn_UP'),
                   guiButton.find('**/QuitBtn_DN'),
                   guiButton.find('**/QuitBtn_RLVR')),
            image_scale=buttonImageScale,
            image0_color=Vec4(1, 0.1, 0.1, 1),
            image1_color=Vec4(1, 0.1, 0.1, 1),
            image2_color=Vec4(1, 1, 1, 1),
            text=Localizer.MemberAgreementScreenYouMustAgreeQuit,
            text_scale=0.06,
            text_pos=(0, -0.02),
            command=self.__handleMustAgreeQuit)
        linePos -= buttonLineHeight
        self.frame.hide()
        background.removeNode()
        guiButton.removeNode()
        cogIcons.removeNode()
        return

    def unload(self):
        self.mustAgreeDialog.destroy()
        self.frame.destroy()
        self.dialog.cleanup()
        del self.frame
        del self.dialog
        del self.fsm

    def enter(self):
        self.frame.show()

        def getDOBfromEntry(self=self):
            self.dobMonth = self.dobEntry.getMonth()
            self.dobYear = self.dobEntry.getYear()
            self.dobDay = self.dobEntry.getDay()

        if self.tcr.getCreditCardUpFront():
            getDOBfromEntry()
        try:
            error = self.loginInterface.getAccountData(self.tcr.userName,
                                                       self.tcr.password)
        except TTAccount.TTAccountException:
            error = 'exception raised'
        else:
            if not error:
                accountData = self.loginInterface.accountData
                if not (accountData.hasKey('dobMonth')
                        and accountData.hasKey('dobYear')
                        and accountData.hasKey('dobDay')):
                    error = 1
            if error:
                getDOBfromEntry()
            try:
                self.dobMonth = accountData.getInt('dobMonth')
                self.dobYear = accountData.getInt('dobYear')
                self.dobDay = accountData.getInt('dobDay')
            except ValueError:
                getDOBfromEntry()
            else:
                if self.checkAge:
                    self.dobEntry.setMonth(self.dobMonth)
                    self.dobEntry.setYear(self.dobYear)
                    self.dobEntry.setDay(self.dobDay)

        self.age = toonbase.tcr.dateObject.getAge(self.dobMonth, self.dobYear,
                                                  self.dobDay)
        self.fsm.request('getParents')

    def exit(self):
        self.fsm.requestFinalState()
        self.frame.hide()

    def enterOff(self):
        pass

    def exitOff(self):
        pass

    def enterGetParents(self):
        if self.tcr.getCreditCardUpFront() or self.age < 18:
            if self.tcr.getCreditCardUpFront():
                msg = Localizer.MemberAgreementScreenGetParentsUnconditional
            else:
                msg = Localizer.MemberAgreementScreenGetParents
            self.dialog.setMessage(msg)
            self.dialog.show()

            def handleGetParentsAck(self=self):
                self.dialog.hide()
                self.fsm.request('viewAgreement')

            self.acceptOnce(self.dialogDoneEvent, handleGetParentsAck)
        else:
            self.fsm.request('viewAgreement')

    def exitGetParents(self):
        pass

    def enterViewAgreement(self):
        self.memAgreement.acceptAgreementKeypresses()

    def exitViewAgreement(self):
        self.memAgreement.ignoreAgreementKeypresses()

    def enterYouMustAgree(self):
        base.transitions.fadeScreen(0.5)
        self.mustAgreeDialog.show()

    def __handleMustAgreeOk(self):
        self.fsm.request('viewAgreement')

    def __handleMustAgreeQuit(self):
        messenger.send(self.doneEvent, [{'mode': 'quit'}])

    def exitYouMustAgree(self):
        base.transitions.noTransitions()
        self.mustAgreeDialog.hide()

    def __handleAgree(self):
        if self.checkAge:
            age = self.dobEntry.getAge()
            if age < 18:
                self.dialog.setMessage(
                    Localizer.MemberAgreementScreenMustBeOlder)
                self.dialog.show()

                def handleOlderAck(self=self):
                    self.dialog.hide()
                    self.fsm.request('viewAgreement')

                self.acceptOnce(self.dialogDoneEvent, handleOlderAck)
                self.memAgreement.ignoreAgreementKeypresses()
            else:
                messenger.send(self.doneEvent, [{'mode': 'agree'}])
        else:
            messenger.send(self.doneEvent, [{'mode': 'agree'}])

    def __handleDisagree(self):
        self.fsm.request('youMustAgree')

    def __handleCancel(self):
        messenger.send(self.doneEvent, [{'mode': 'cancel'}])

    def __handlePageChange(self, pageNum):
        if pageNum == 0:
            self.cogIcon.show()
            self.agreementTitle.show()
            self.clickNextLabel.show()
        else:
            self.cogIcon.hide()
            self.agreementTitle.hide()
            self.clickNextLabel.hide()
 def load(self):
     guiButton = loader.loadModelOnce('phase_3/models/gui/quit_button')
     background = loader.loadModel('phase_3/models/gui/login-background')
     cogIcons = loader.loadModel('phase_3/models/gui/cog_icons')
     self.frame = DirectFrame(parent=aspect2d,
                              relief=FLAT,
                              image=background.find('**/member_agreement'))
     self.welcomeLabel = DirectLabel(
         parent=self.frame,
         relief=None,
         pos=(0, 0, 0.88),
         text=Localizer.MemberAgreementScreenWelcome,
         text_font=getMinnieFont(),
         text_scale=0.0935,
         text_fg=(1, 0.5, 0.1, 1),
         text_shadow=(0, 0, 0, 1),
         text_shadowOffset=(0.08, 0.08))
     self.onYourWayLabel = DirectLabel(
         parent=self.frame,
         relief=None,
         pos=(0, 0, 0.79),
         text=Localizer.MemberAgreementScreenOnYourWay,
         text_scale=0.0725,
         text_fg=(1, 1, 0, 1),
         text_shadow=(0, 0, 0, 1),
         text_shadowOffset=(0.08, 0.08))
     self.toontownLabel = DirectLabel(
         parent=self.frame,
         relief=None,
         pos=(0, 0, 0.67),
         text=Localizer.MemberAgreementScreenToontown,
         text_font=getMinnieFont(),
         text_scale=0.087,
         text_fg=(1, 0.5, 0.1, 1),
         text_shadow=(0, 0, 0, 1),
         text_shadowOffset=(0.08, 0.08))
     priceColor = (0, 0.9, 0, 1)
     if self.tcr.getCreditCardUpFront():
         priceTextScale = 0.09
         self.pricingLabel = DirectLabel(
             parent=self.frame,
             relief=None,
             pos=(0, 0, 0.558),
             text=Localizer.MemberAgreementScreenCCUpFrontPricing,
             text_scale=priceTextScale,
             text_fg=(1, 1, 0, 1),
             text_shadow=(0, 0, 0, 1),
             text_shadowOffset=(0.08, 0.08))
         self.freeTrialDuration = DirectLabel(
             parent=self.pricingLabel,
             relief=None,
             pos=(-0.36, 0, 0),
             text=self.tcr.accountServerConstants.getString(
                 'freeTrialPeriodInDays'),
             text_scale=priceTextScale,
             text_fg=priceColor,
             text_shadow=(0, 0, 0, 1),
             text_shadowOffset=(0.08, 0.08))
         priceFirstMonthPos = (0.92, 0, -0.18)
         pricePerMonthPos = (-0.11, 0, -0.27)
     else:
         priceTextScale = 0.1
         self.pricingLabel = DirectLabel(
             parent=self.frame,
             relief=None,
             pos=(0, 0, 0.558),
             text=Localizer.MemberAgreementScreenPricing,
             text_scale=priceTextScale,
             text_fg=(1, 1, 0, 1),
             text_shadow=(0, 0, 0, 1),
             text_shadowOffset=(0.08, 0.08))
         priceFirstMonthPos = (0.52, 0, 0)
         pricePerMonthPos = (0.85, 0, -0.1)
     self.priceFirstMonth = DirectLabel(
         parent=self.pricingLabel,
         relief=None,
         pos=priceFirstMonthPos,
         text='$%s' %
         self.tcr.accountServerConstants.getString('priceFirstMonth'),
         text_scale=priceTextScale,
         text_fg=priceColor,
         text_shadow=(0, 0, 0, 1),
         text_shadowOffset=(0.08, 0.08))
     self.pricePerMonth = DirectLabel(
         parent=self.pricingLabel,
         relief=None,
         pos=pricePerMonthPos,
         text='$%s' %
         self.tcr.accountServerConstants.getString('pricePerMonth'),
         text_scale=priceTextScale,
         text_fg=priceColor,
         text_shadow=(0, 0, 0, 1),
         text_shadowOffset=(0.08, 0.08))
     self.dobEntry = DateOfBirthEntry(parent=self.frame,
                                      pos=(0, 0, 0.26),
                                      scale=0.095,
                                      defaultAge=0,
                                      curYear=self.tcr.dateObject.getYear())
     if not self.checkAge:
         self.dobEntry.hide()
     self.memAgreement = MultiPageTextFrame(parent=self.frame,
                                            relief=None,
                                            textList=self.legalText,
                                            hidePageNum=1,
                                            width=1.8,
                                            height=0.9,
                                            wordWrap=34,
                                            pos=(0, 0, -0.3))
     self.cogIcon = DirectLabel(parent=self.memAgreement,
                                relief=None,
                                pos=(-0.75, 0, 0.3),
                                scale=0.25,
                                image=cogIcons.find('**/LegalIcon'))
     self.agreementTitle = DirectLabel(
         parent=self.memAgreement,
         relief=None,
         pos=(0.0426513, 0, 0.268794),
         scale=0.09,
         text=Localizer.MemberAgreementScreenAgreementTitle,
         text_font=getSuitFont(),
         text_wordwrap=10)
     self.clickNextLabel = DirectLabel(
         parent=self.memAgreement,
         relief=None,
         pos=(-0.325283, 0, -0.388257),
         scale=0.05,
         text=Localizer.MemberAgreementScreenClickNext)
     self.memAgreement.setPageChangeCallback(self.__handlePageChange)
     bottomButtonZ = -0.57
     self.cancelButton = DirectButton(
         parent=self.memAgreement,
         relief=None,
         scale=1.1,
         image=(guiButton.find('**/QuitBtn_UP'),
                guiButton.find('**/QuitBtn_DN'),
                guiButton.find('**/QuitBtn_RLVR')),
         image_scale=(1, 1, 1),
         pos=(-0.5, 0, bottomButtonZ),
         text=Localizer.MemberAgreementScreenCancel,
         text_scale=0.06,
         text_pos=(0, -0.018),
         command=self.__handleCancel)
     self.declineButton = DirectButton(
         parent=self.memAgreement,
         relief=None,
         scale=1.1,
         image=(guiButton.find('**/QuitBtn_UP'),
                guiButton.find('**/QuitBtn_DN'),
                guiButton.find('**/QuitBtn_RLVR')),
         image_scale=(1, 1, 1),
         pos=(0, 0, bottomButtonZ),
         text=Localizer.MemberAgreementScreenDisagree,
         text_scale=0.06,
         text_pos=(0, -0.018),
         command=self.__handleDisagree)
     self.acceptButton = DirectButton(
         parent=self.memAgreement,
         relief=None,
         scale=1.1,
         image=(guiButton.find('**/QuitBtn_UP'),
                guiButton.find('**/QuitBtn_DN'),
                guiButton.find('**/QuitBtn_RLVR')),
         image_scale=(1, 1, 1),
         pos=(0.5, 0, bottomButtonZ),
         text=Localizer.MemberAgreementScreenAgree,
         text_scale=0.06,
         text_pos=(0, -0.018),
         command=self.__handleAgree)
     self.dialogDoneEvent = 'memberAgreementDialogAck'
     self.dialog = ToontownDialog.GlobalDialog(
         doneEvent=self.dialogDoneEvent,
         message='',
         style=ToontownDialog.Acknowledge)
     self.dialog.hide()
     self.mustAgreeDialog = DirectFrame(
         relief=None,
         pos=(0, 0.1, 0),
         image=getDefaultDialogGeom(),
         image_color=GlobalDialogColor,
         image_scale=(1.3, 1.0, 0.8),
         text=Localizer.MemberAgreementScreenYouMustAgree,
         text_scale=0.08,
         text_pos=(0.0, 0.2),
         text_wordwrap=15,
         sortOrder=NO_FADE_SORT_INDEX)
     self.mustAgreeDialog.hide()
     linePos = -0.13
     buttonImageScale = 1.1
     buttonLineHeight = 0.112
     self.mustAgreeOkButton = DirectButton(
         parent=self.mustAgreeDialog,
         relief=None,
         pos=(0, 0, linePos),
         scale=0.9,
         image=(guiButton.find('**/QuitBtn_UP'),
                guiButton.find('**/QuitBtn_DN'),
                guiButton.find('**/QuitBtn_RLVR')),
         image_scale=buttonImageScale,
         text=Localizer.MemberAgreementScreenYouMustAgreeOk,
         text_scale=0.06,
         text_pos=(0, -0.02),
         command=self.__handleMustAgreeOk)
     linePos -= buttonLineHeight
     self.mustAgreeQuitButton = DirectButton(
         parent=self.mustAgreeDialog,
         relief=None,
         pos=(0, 0, linePos),
         scale=0.9,
         image=(guiButton.find('**/QuitBtn_UP'),
                guiButton.find('**/QuitBtn_DN'),
                guiButton.find('**/QuitBtn_RLVR')),
         image_scale=buttonImageScale,
         image0_color=Vec4(1, 0.1, 0.1, 1),
         image1_color=Vec4(1, 0.1, 0.1, 1),
         image2_color=Vec4(1, 1, 1, 1),
         text=Localizer.MemberAgreementScreenYouMustAgreeQuit,
         text_scale=0.06,
         text_pos=(0, -0.02),
         command=self.__handleMustAgreeQuit)
     linePos -= buttonLineHeight
     self.frame.hide()
     background.removeNode()
     guiButton.removeNode()
     cogIcons.removeNode()
     return