Esempio n. 1
0
    def createHighScoreFrame(self):
        highScoreFrame=DirectScrolledFrame(frameColor=(0.5,0.5,1,0),
                                        canvasSize = (-0.3,0.2,-2,1), 
                            frameSize = (-0.3,1.1,-0.8,0.3),pos=(0.2,0,0.2))

        highScoreFrame['verticalScroll_thumb_frameColor']=(1,1,1,0.3)
        highScoreFrame['verticalScroll_incButton_frameColor']=(1,1,1,0)
        highScoreFrame['verticalScroll_decButton_frameColor']=(1,1,1,0)
        highScoreFrame['verticalScroll_frameColor']=(0.5,0.5,1,0)

        highScoreTitle1=DirectLabel(frameSize=(-0.6,0.6,-0.2,.2),pos=(0,0,0.9),
            text='Music',frameColor=(0,0,0,0),
            text_align=TextNode.ALeft,text_scale=0.08,text_fg=(1,1,1,1))
        highScoreTitle2=DirectLabel(frameSize=(-0.6,0.6,-0.6,.6),pos=(0.4,0,0.9),
            text='Highest Score',text_fg=(1,1,1,1),frameColor=(0,0,0,0),
            text_align=TextNode.ALeft,text_scale=0.08)

        highScoreTitle1.reparentTo(highScoreFrame.getCanvas())
        highScoreTitle2.reparentTo(highScoreFrame.getCanvas())

        for i in range(len(self.musicNames)):
            scoreLabel=DirectButton(frameSize=(-0.3,0.3,-0.2,.2),pos=(0,0,0.7-i*0.2),
            text='%s:  %d'%(self.musicNames[i],self.highestScores[self.musicNames[i]]),
            text_align=TextNode.ALeft,text_scale=0.08,frameColor=(0,0,0,0),
            text_fg=(1,1,1,1))
            scoreLabel.reparentTo(highScoreFrame.getCanvas())
        return highScoreFrame
Esempio n. 2
0
 def _construir_hud(self):
     # boton crear mesh
     btn_crear_mesh = DirectButton(text="crear mesh",
                                   scale=0.075,
                                   pos=Vec3(0.95, 0.9),
                                   command=self._crear_mesh)
     btn_crear_mesh.reparentTo(self.aspect2d)
     # check smooth
     chk_smooth = DirectCheckButton(text="smooth",
                                    scale=0.075,
                                    pos=Vec3(0.95, 0.8),
                                    command=self._establecer_smooth)
     chk_smooth.reparentTo(self.aspect2d)
     # boton eliminar mesh
     btn_eliminar_mesh = DirectButton(text="eliminar mesh",
                                      scale=0.075,
                                      pos=Vec3(0.95, 0.7),
                                      command=self._eliminar_mesh)
     btn_eliminar_mesh.reparentTo(self.aspect2d)
Esempio n. 3
0
    def configureMainMenu(self):
        self.mainMenuBackground = OnscreenImage(parent=render2dp, 
                            image='../textures/BGM_ORG_text.jpg') 
        self.songList = DirectScrolledFrame(canvasSize = (-0.3,0.2,-1,1), 
                            frameSize = (-0.45,0.55,-0.2,0.2)) 
        self.songList['frameColor']=(0.5,0.5,1,0)
        self.songList.setPos(0, 0, -0.3)
        self.songList['verticalScroll_thumb_frameColor']=(1,1,1,0.3)
        self.songList['verticalScroll_incButton_frameColor']=(1,1,1,0)
        self.songList['verticalScroll_decButton_frameColor']=(1,1,1,0)
        self.songList['verticalScroll_frameColor']=(0.5,0.5,1,0)
        for i in range(len(self.musicNames)):
            defaultSong=DirectButton(pos=(0, 0, 0.9-i*0.15), text=(
                                    self.musicNames[i],'clicked',
                                    self.musicNames[i],self.musicNames[i]),
                                   scale=.1, pad=(.2, .2),
                                    frameColor=(0.058,0.294,0.545,0.7),
                                    text_pos=(1.3,-0.3),text_scale=(0.8,0.8),
                                    text_fg=(0.88,0.98,1,1),
                                   rolloverSound=None, clickSound=None,
                                   command=self.preInitDance,extraArgs=(i,))
            defaultSong['frameSize']=(-4,6,-0.7,0.7)
            defaultSong.reparentTo(self.songList.getCanvas())
        importButton=DirectButton(pos=(0,0,-0.6),text='+ IMPORT NEW MUSIC ',
                                    scale=0.1,pad=(.2,.2),frameColor=(0.058,.294,0.545,0.7),
                                    text_fg=(0.88,0.98,1,1),frameSize=(-6.5,6.5,-0.8,0.8),
                                    text_scale=(0.85,0.85),
                                    text_pos=(0.5,-0.4),rolloverSound=None, clickSound=None,
                                   command= lambda: self.switchPanel('mainMenu','import'))
        backToOptionButton=DirectButton(text='<<BACK TO MENU',
                                    pos=(-1,0,0.8),scale=.1,pad=(.2, .2),
                                    frameColor=(1,1,1,0),
                                    text_pos=(1.3,-0.3),text_scale=(0.8,0.8),
                                    text_fg=(0.88,0.98,1,1),
                                   rolloverSound=None, clickSound=None,
                                   command=lambda: self.switchPanel('mainMenu','options'))

        self.setPanel('mainMenu', Panel(self.mainMenuBackground,
                                        {'songs': self.songList,
                                        'import': importButton,
                                        'back': backToOptionButton}))
        self.disableMouse()
Esempio n. 4
0
def load(args):
    """Sets up the GUI for the main menu.
    Arguments:
        This takes no arguments.
    """

    global backFrame
    global menuFrame
    global pauseText
    global backButton

    font_digital = loader.loadFont('digital.egg')

    backFrame = DirectFrame()
    backFrame['frameColor'] = (0, 0, 0, .5)
    backFrame['frameSize'] = (2, -2, 2, -2)
    backFrame.setPos(0, 0, 0)

    menuFrame = DirectFrame()
    menuFrame.reparentTo(backFrame)
    menuFrame['frameColor'] = (1, 1, 1, .5)
    menuFrame['frameSize'] = (.5, -.5, .5, -.5)
    menuFrame.setPos(0, 0, 0)

    pauseText = OnscreenText()
    pauseText['text'] = ('PAUSED')
    pauseText['scale'] = (.1)
    pauseText['font'] = (font_digital)
    pauseText['fg'] = (1, 1, 1, 1)
    pauseText.setPos(0, .9)

    backButton = DirectButton()
    backButton.reparentTo(menuFrame)
    backButton['text'] = ('Back')
    backButton['text_scale'] = (.1)
    backButton['text_pos'] = (0, -0.03)
    backButton['frameVisibleScale'] = (2, 0.5, 0)
    backButton['frameColor'] = (1, 1, 1, 0)
    backButton['command'] = (messenger.send)
    backButton['extraArgs'] = ("switch_gui", [gui.menu.pause_options, gui.menu.pause])
    backButton.setPos(0, 0, 0)
Esempio n. 5
0
    def configureStartMenu(self):
        optionBackground = OnscreenImage(parent=render2dp, image=
        '../textures/MENU_ORG_text.jpg') 

        settingButton = DirectButton(pos=(0.1, 0, 0), text=" Setting",
                                   scale=.08, pad=(.2, .2), frameColor=(0.02,0.3,0.5,0.4),
                                   text_fg=(0,0.4,0.7,1),
                                   text_align=TextNode.ALeft,frameSize=(-4.3,4,-0.6,1),
                                   text_pos=(-1,0,0),
                                   rolloverSound=None, clickSound=None,
                                   command=lambda:self.switchPanel('options','setting'))
        settingButton.resetFrameSize()
        playButton = DirectButton(pos=(0.1, 0, .15), text="Start",
                                   scale=.08, pad=(.2, .2),frameColor=(0.02,0.3,0.5,0.4),
                                   text_fg=(0.1,0.4,0.7,1),
                                   text_align=TextNode.ALeft,
                                   frameSize=(-3,4,-0.6,1),
                                   rolloverSound=None, clickSound=None,
                                   command=lambda: self.switchPanel('options','mainMenu'))
        scoreBoardButton= DirectButton(pos=(0, 0, -.15), text="HighScore",
                                   scale=.08, pad=(.2, .2),frameColor=(0.02,0.3,0.5,0.4),
                                   text_pos=(-1,0,0),
                                   text_fg=(0.1,0.4,0.7,1),text_align=TextNode.ALeft,frameSize=(-5,5.3,-0.6,1),
                                   rolloverSound=None, clickSound=None,
                                   command=lambda: self.switchPanel('options','scoreBoard'))

        optionsList=DirectFrame(frameSize=(-0.3,0.3,-0.2,0.2),pos=(0.8,0,-0.5),frameColor=(0,0,0,0))
        settingButton.reparentTo(optionsList)
        playButton.reparentTo(optionsList)
        scoreBoardButton.reparentTo(optionsList)

        self.setPanel('options', Panel(optionBackground, {'optionList': optionsList}))
Esempio n. 6
0
    def updateSongs(self):
        name = self.musicNames[-1]
        path=self.musicPathes[name]
        idx = len(self.musicNames)-1
        song = DirectButton(text=name,
                                    pos=(0, 0,0.9-0.15*idx),
                                   scale=.1, pad=(.2, .2),
                                    frameColor=(0.058,.294,0.545,0.7),
                                    text_pos=(1.3,-0.3),text_scale=(0.8,0.8),
                                    text_fg=(0.88,0.98,1,1),
                                    frameSize=(-4,6,-0.7,0.7),
                                   rolloverSound=None, clickSound=None,
                                   command=self.preInitDance,extraArgs=
                                    (-1,))
        self.highestScores[name]=0
        song.reparentTo(self.songList.getCanvas())

        scoreLabel=DirectButton(frameSize=(-0.3,0.3,-0.2,.2),pos=(0,0,0-idx*0.2),
            text='%s:  %d'%(name,self.highestScores[name]),
            text_align=TextNode.ALeft,text_scale=0.08,frameColor=(0,0,0,0),
            text_fg=(1,1,1,1))
        scoreLabel.reparentTo(self.getPanel('scoreBoard').getItem('frame').getCanvas())
Esempio n. 7
0
def load(args):
    """Sets up the GUI for the in game pause menu.
    Arguments:
        args[0] -- The function for the 'resume' button.
        args[1] -- The function for the 'settings' button.
        args[2] -- The function for the 'exit' button.
    """
    # GUI should do what they are told, they should get data sent to them, not request it.

    global pauseText
    global backFrame
    global menuFrame
    global resumeButton

    font_digital = loader.loadFont("digital.egg")

    backFrame = DirectFrame()
    backFrame["frameSize"] = (2, -2, 2, -2)
    backFrame.setPos(0, 0, 0)

    backFrame["frameColor"] = (0, 0, 0, 0.5)
    menuFrame = DirectFrame()
    menuFrame.reparentTo(backFrame)
    menuFrame["frameColor"] = (1, 1, 1, 0.5)
    menuFrame["frameSize"] = (0.5, -0.5, 0.5, -0.5)
    menuFrame.setPos(0, 0, 0)

    buttonClickSound = loader.loadSfx("sound/buttonClick.wav")
    buttonRollSound = loader.loadSfx("sound/buttonRoll.wav")

    resumeButton = DirectButton()
    resumeButton.reparentTo(menuFrame)
    resumeButton["text"] = "Resume"
    resumeButton["text_scale"] = 0.1
    resumeButton["text_pos"] = (0, -0.03)
    resumeButton["frameVisibleScale"] = (2, 0.5, 0)
    resumeButton["frameColor"] = (1, 1, 1, 0)
    resumeButton["command"] = resume
    resumeButton["rolloverSound"] = buttonRollSound
    resumeButton["clickSound"] = buttonClickSound
    resumeButton.setPos(0, 0, 0.4)

    settingsButton = DirectButton()
    settingsButton.reparentTo(menuFrame)
    settingsButton["text"] = "Settings"
    settingsButton["text_scale"] = 0.1
    settingsButton["text_pos"] = (0, -0.03)
    settingsButton["frameVisibleScale"] = (2, 0.5, 0)
    settingsButton["frameColor"] = (1, 1, 1, 0)
    settingsButton["rolloverSound"] = buttonRollSound
    settingsButton["clickSound"] = buttonClickSound
    settingsButton["command"] = messenger.send  # Command to run
    settingsButton["extraArgs"] = ("switch_gui", [gui.menu.pause, gui.menu.pause_options])  # Args to send
    settingsButton.setPos(0, 0, 0.2)

    exitButton = DirectButton()
    exitButton.reparentTo(menuFrame)
    exitButton["text"] = "Exit"
    exitButton["text_scale"] = 0.1
    exitButton["text_pos"] = (0, -0.03)
    exitButton["frameVisibleScale"] = (2, 0.5, 0)
    exitButton["frameColor"] = (1, 1, 1, 0)
    exitButton["rolloverSound"] = buttonRollSound
    exitButton["clickSound"] = buttonClickSound
    exitButton["command"] = exit
    exitButton.setPos(0, 0, 0)

    pauseText = OnscreenText()
    pauseText["text"] = "PAUSED"
    pauseText["scale"] = 0.1
    pauseText["font"] = font_digital
    pauseText["fg"] = (1, 1, 1, 1)
    pauseText.setPos(0, 0.9)
Esempio n. 8
0
class NewsPageButtonManager(FSM.FSM):
    notify = DirectNotifyGlobal.directNotify.newCategory(
        'NewsPageButtonManager')

    def __init__(self):
        FSM.FSM.__init__(self, 'NewsPageButtonManager')
        self.buttonsLoaded = False
        self.clearGoingToNewsInfo()
        self.__blinkIval = None
        self.load()
        return

    def load(self):
        btnGui = loader.loadModel(
            'phase_3.5/models/gui/tt_m_gui_ign_newsBtnGui')
        bookModel = loader.loadModel(
            'phase_3.5/models/gui/tt_m_gui_ign_shtickerBook')
        self.openNewNewsUp = btnGui.find('**/tt_t_gui_ign_new')
        self.openNewNewsUpBlink = btnGui.find('**/tt_t_gui_ign_newBlink')
        self.openNewNewsHover = btnGui.find('**/tt_t_gui_ign_newHover')
        self.openOldNewsUp = btnGui.find('**/tt_t_gui_ign_oldNews')
        self.openOldNewsHover = btnGui.find('**/tt_t_gui_ign_oldHover')
        self.closeNewsUp = bookModel.find('**/tt_t_gui_sbk_newsPage1')
        self.closeNewsHover = bookModel.find('**/tt_t_gui_sbk_newsPage2')
        btnGui.removeNode()
        bookModel.removeNode()
        oldScale = 0.5
        newScale = 0.9
        shtickerBookScale = 0.305
        newPos = VBase3(-0.436, 1.0, -0.14)
        shtickerBookPos = VBase3(-0.158, 0, 0.17)
        textScale = 0.06
        self.newIssueButton = DirectButton(
            relief=None,
            sortOrder=DGG.BACKGROUND_SORT_INDEX - 1,
            image=(self.openNewNewsUp, self.openNewNewsHover,
                   self.openNewNewsHover),
            text=('', TTLocalizer.EventsPageNewsTabName,
                  TTLocalizer.EventsPageNewsTabName),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_scale=textScale,
            text_font=ToontownGlobals.getInterfaceFont(),
            pos=newPos,
            scale=newScale,
            command=self.__handleGotoNewsButton)
        self.newIssueButton.reparentTo(base.a2dTopRight,
                                       DGG.BACKGROUND_SORT_INDEX - 1)
        self.gotoPrevPageButton = DirectButton(
            relief=None,
            image=(self.closeNewsUp, self.closeNewsHover, self.closeNewsHover),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_scale=textScale,
            text_font=ToontownGlobals.getInterfaceFont(),
            parent=base.a2dBottomRight,
            pos=shtickerBookPos,
            scale=shtickerBookScale,
            command=self.__handleGotoPrevPageButton)
        self.goto3dWorldButton = DirectButton(
            relief=None,
            image=(self.closeNewsUp, self.closeNewsHover, self.closeNewsHover),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_scale=textScale,
            text_font=ToontownGlobals.getInterfaceFont(),
            parent=base.a2dBottomRight,
            pos=shtickerBookPos,
            scale=shtickerBookScale,
            command=self.__handleGoto3dWorldButton)
        self.hideNewIssueButton()
        self.gotoPrevPageButton.hide()
        self.goto3dWorldButton.hide()
        self.accept('newIssueOut', self.handleNewIssueOut)
        bounce1Pos = VBase3(newPos.getX(), newPos.getY(),
                            newPos.getZ() + 0.022)
        bounce2Pos = VBase3(newPos.getX(), newPos.getY(),
                            newPos.getZ() + 0.015)
        bounceIval = Sequence(
            LerpPosInterval(self.newIssueButton,
                            0.1,
                            bounce1Pos,
                            blendType='easeOut'),
            LerpPosInterval(self.newIssueButton,
                            0.1,
                            newPos,
                            blendType='easeIn'),
            LerpPosInterval(self.newIssueButton,
                            0.07,
                            bounce2Pos,
                            blendType='easeOut'),
            LerpPosInterval(self.newIssueButton,
                            0.07,
                            newPos,
                            blendType='easeIn'))
        self.__blinkIval = Sequence(Func(self.__showOpenEyes), Wait(2),
                                    bounceIval, Wait(0.5),
                                    Func(self.__showClosedEyes), Wait(0.1),
                                    Func(self.__showOpenEyes), Wait(0.1),
                                    Func(self.__showClosedEyes), Wait(0.1))
        self.__blinkIval.loop()
        self.__blinkIval.pause()
        self.buttonsLoaded = True
        return

    def __showOpenEyes(self):
        self.newIssueButton['image'] = (self.openNewNewsUp,
                                        self.openNewNewsHover,
                                        self.openNewNewsHover)

    def __showClosedEyes(self):
        self.newIssueButton['image'] = (self.openNewNewsUpBlink,
                                        self.openNewNewsHover,
                                        self.openNewNewsHover)

    def clearGoingToNewsInfo(self):
        self.goingToNewsPageFrom3dWorld = False
        self.setGoingToNewsPageFromStickerBook(False)

    def __handleGotoNewsButton(self):
        currentState = base.localAvatar.animFSM.getCurrentState().getName()
        if currentState == 'jumpAirborne':
            return
        from toontown.toon import LocalToon
        if not LocalToon.WantNewsPage:
            return
        if base.cr and base.cr.playGame and base.cr.playGame.getPlace(
        ) and base.cr.playGame.getPlace().fsm:
            fsm = base.cr.playGame.getPlace().fsm
            curState = fsm.getCurrentState().getName()
            if curState == 'walk':
                if hasattr(localAvatar, 'newsPage'):
                    base.cr.centralLogger.writeClientEvent(
                        'news gotoNewsButton clicked')
                    localAvatar.book.setPage(localAvatar.newsPage)
                    fsm.request('stickerBook')
                    self.goingToNewsPageFrom3dWorld = True
            elif curState == 'stickerBook':
                if hasattr(localAvatar, 'newsPage'):
                    base.cr.centralLogger.writeClientEvent(
                        'news gotoNewsButton clicked')
                    fsm.request('stickerBook')
                    if hasattr(localAvatar,
                               'newsPage') and localAvatar.newsPage:
                        localAvatar.book.goToNewsPage(localAvatar.newsPage)

    def __handleGotoPrevPageButton(self):
        self.clearGoingToNewsInfo()
        localAvatar.book.setPageBeforeNews()
        self.showAppropriateButton()
        self.ignoreEscapeKeyPress()

    def __handleGoto3dWorldButton(self):
        localAvatar.book.closeBook()

    def hideNewIssueButton(self):
        if hasattr(self, 'newIssueButton') and self.newIssueButton:
            self.newIssueButton.hide()
            localAvatar.clarabelleNewsPageCollision(False)

    def __showNewIssueButton(self):
        self.newIssueButton.show()
        localAvatar.clarabelleNewsPageCollision(True)

    def hideAllButtons(self):
        if not self.buttonsLoaded:
            return
        self.gotoPrevPageButton.hide()
        self.goto3dWorldButton.hide()
        self.hideNewIssueButton()
        self.__blinkIval.pause()

    def isNewIssueButtonShown(self):
        if not config.GetBool('want-news-tab', 1):
            return False
        if localAvatar.getLastTimeReadNews(
        ) < base.cr.inGameNewsMgr.getLatestIssue():
            return True
        return False

    def enterHidden(self):
        self.hideAllButtons()

    def exitHidden(self):
        pass

    def enterNormalWalk(self):
        if not self.buttonsLoaded:
            return
        if localAvatar.getLastTimeReadNews(
        ) < base.cr.inGameNewsMgr.getLatestIssue():
            self.__showNewIssueButton()
            self.__blinkIval.resume()
        else:
            self.hideNewIssueButton()
        self.gotoPrevPageButton.hide()
        self.goto3dWorldButton.hide()

    def exitNormalWalk(self):
        if not self.buttonsLoaded:
            return
        self.hideAllButtons()

    def enterGotoWorld(self):
        if not self.buttonsLoaded:
            return
        self.hideAllButtons()
        self.goto3dWorldButton.show()

    def exitGotoWorld(self):
        if not self.buttonsLoaded:
            return
        self.hideAllButtons()
        localAvatar.book.setPageBeforeNews(enterPage=False)
        self.clearGoingToNewsInfo()

    def enterPrevPage(self):
        if not self.buttonsLoaded:
            return
        self.hideAllButtons()
        self.gotoPrevPageButton.show()

    def exitPrevPage(self):
        if not self.buttonsLoaded:
            return
        self.hideAllButtons()

    def showAppropriateButton(self):
        self.notify.debugStateCall(self)
        from toontown.toon import LocalToon
        if not LocalToon.WantNewsPage:
            return
        if not self.buttonsLoaded:
            return
        if base.cr and base.cr.playGame and base.cr.playGame.getPlace(
        ) and hasattr(base.cr.playGame.getPlace(),
                      'fsm') and base.cr.playGame.getPlace().fsm:
            fsm = base.cr.playGame.getPlace().fsm
            curState = fsm.getCurrentState().getName()
            book = localAvatar.book
            if curState == 'walk':
                if localAvatar.tutorialAck and not localAvatar.isDisguised and not isinstance(
                        base.cr.playGame.getPlace(),
                        CogHQBossBattle.CogHQBossBattle):
                    self.request('NormalWalk')
                else:
                    self.request('Hidden')
            elif curState == 'stickerBook':
                if self.goingToNewsPageFrom3dWorld:
                    if localAvatar.tutorialAck:
                        self.request('GotoWorld')
                    else:
                        self.request('Hidden')
                elif self.goingToNewsPageFromStickerBook or hasattr(
                        localAvatar, 'newsPage') and localAvatar.book.isOnPage(
                            localAvatar.newsPage):
                    if localAvatar.tutorialAck:
                        self.request('PrevPage')
                    else:
                        self.request('Hidden')
                elif localAvatar.tutorialAck:
                    self.request('NormalWalk')
                else:
                    self.request('Hidden')

    def setGoingToNewsPageFromStickerBook(self, newVal):
        self.goingToNewsPageFromStickerBook = newVal

    def enterOff(self):
        self.ignoreAll()
        if not self.buttonsLoaded:
            return
        if self.__blinkIval:
            self.__blinkIval.finish()
            self.__blinkIval = None
        self.newIssueButton.destroy()
        self.gotoPrevPageButton.destroy()
        self.goto3dWorldButton.destroy()
        del self.openNewNewsUp
        del self.openNewNewsUpBlink
        del self.openNewNewsHover
        del self.openOldNewsUp
        del self.openOldNewsHover
        del self.closeNewsUp
        del self.closeNewsHover
        return

    def exitOff(self):
        self.notify.warning(
            'Should not get here. NewsPageButtonManager.exitOff')

    def simulateEscapeKeyPress(self):
        if self.goingToNewsPageFrom3dWorld:
            self.__handleGoto3dWorldButton()
        if self.goingToNewsPageFromStickerBook:
            self.__handleGotoPrevPageButton()

    def handleNewIssueOut(self):
        if localAvatar.isReadingNews():
            pass
        else:
            self.showAppropriateButton()

    def acceptEscapeKeyPress(self):
        self.accept(ToontownGlobals.StickerBookHotkey,
                    self.simulateEscapeKeyPress)
        self.accept(ToontownGlobals.OptionsPageHotkey,
                    self.simulateEscapeKeyPress)

    def ignoreEscapeKeyPress(self):
        self.ignore(ToontownGlobals.StickerBookHotkey)
        self.ignore(ToontownGlobals.OptionsPageHotkey)
Esempio n. 9
0
    def __init__(self, base, handler):
        """
		Set up trigger, get movement directions and create event handling.
		"""
        super().__init__()

        # Save handler instance to update debug mode
        self.handler = handler

        # Trigger to tell where the camera is supposed to go
        self.forward_trig = 0
        self.right_trig = 0
        self.up_trig = 0
        self.heading_trig = 0
        self.pitch_trig = 0

        # Store the movement needed to go in each direction (updated in task)
        self.forward = 0
        self.right = 0
        self.up = 0

        # Event handling for key down events
        self.accept('w', self.set_forward_trig, [1])
        self.accept('s', self.set_forward_trig, [-1])
        self.accept('a', self.set_right_trig, [-1])
        self.accept('d', self.set_right_trig, [1])
        self.accept('shift', self.set_up_trig, [1])
        self.accept('control', self.set_up_trig, [-1])
        self.accept('q', self.set_heading_trig, [1])
        self.accept('e', self.set_heading_trig, [-1])
        self.accept('r', self.set_pitch_trig, [1])
        self.accept('f', self.set_pitch_trig, [-1])
        self.accept('f1', self.debug)

        # Event handling for key up events
        self.accept('w-up', self.set_forward_trig, [0])
        self.accept('s-up', self.set_forward_trig, [0])
        self.accept('a-up', self.set_right_trig, [0])
        self.accept('d-up', self.set_right_trig, [0])
        self.accept('shift-up', self.set_up_trig, [0])
        self.accept('control-up', self.set_up_trig, [0])
        self.accept('q-up', self.set_heading_trig, [0])
        self.accept('e-up', self.set_heading_trig, [0])
        self.accept('r-up', self.set_pitch_trig, [0])
        self.accept('f-up', self.set_pitch_trig, [0])

        # Start task to move camera in desired direction
        base.taskMgr.add(self.cam_move_task,
                         "CamMoveTask",
                         extraArgs=[base],
                         appendTask=True)

        # Create button to reset camera position and orientation
        frame = DirectFrame(frameColor=(.1, .1, .1, .7),
                            frameSize=(-.22, .22, -.05, .08),
                            pos=(-1.1, 0, -0.94))
        button = DirectButton(text="Reset Camera",
                              frameSize=(-4, 4, -.5, 1),
                              scale=.05,
                              command=reset_camera,
                              extraArgs=[base])
        button.reparentTo(frame)