def __init__(self, cogMenu, dept):
        NodePath.__init__(self, 'CogMenuBar-%s' % dept)

        self.dept = dept
        self.deptIndex = CogDisguiseGlobals.dept2deptIndex(self.dept)

        icons = loader.loadModel('phase_3/models/gui/cog_icons')
        self.icon = icons.find(ICON_NODES[self.deptIndex]).copyTo(self)
        self.icon.setColor(ICON_COLORS[self.deptIndex])
        self.icon.setScale(0.07)
        self.icon.setX(-0.25)
        icons.removeNode()

        self.progressBar = DirectWaitBar(
            parent=self,
            relief=DirectGuiGlobals.SUNKEN,
            frameSize=(-1, 1, -0.15, 0.15),
            borderWidth=(0.02, 0.02),
            scale=0.20,
            frameColor=(DisguisePage.DeptColors[self.deptIndex][0] * 0.7,
                        DisguisePage.DeptColors[self.deptIndex][1] * 0.7,
                        DisguisePage.DeptColors[self.deptIndex][2] * 0.7, 1),
            barColor=(DisguisePage.DeptColors[self.deptIndex][0],
                      DisguisePage.DeptColors[self.deptIndex][1],
                      DisguisePage.DeptColors[self.deptIndex][2], 1),
            text='0/0 ' +
            TTLocalizer.RewardPanelMeritBarLabels[self.deptIndex],
            text_scale=TTLocalizer.RPmeritBarLabels,
            text_fg=(0, 0, 0, 1),
            text_align=TextNode.ALeft,
            text_pos=(-0.96, -0.05))

        self.reparentTo(cogMenu)
Beispiel #2
0
    def __init__(self, rootParent=None):

        self.frmMain = DirectFrame(
            frameColor=(1, 1, 1, 1),
            frameSize=(-1, 1, -1, 1),
            hpr=LVecBase3f(0, 0, 0),
            pos=LPoint3f(0, 0, 0),
            parent=rootParent,
        )
        self.frmMain.setTransparency(0)

        self.waitbar = DirectWaitBar(
            barColor=(0.0, 0.0, 1.0, 1.0),
            hpr=LVecBase3f(0, 0, 0),
            pos=LPoint3f(0, 0, 0),
            state='normal',
            text='0%',
            value=50.0,
            text_align=TextNode.A_center,
            text_scale=(0.1, 0.1),
            text_pos=(0, -0.025),
            text_fg=LVecBase4f(0, 0, 0, 1),
            text_bg=LVecBase4f(0, 0, 0, 0),
            parent=self.frmMain,
        )
        self.waitbar.setTransparency(0)
 def __init__(self, phaseNames):
     self.phaseNames = phaseNames
     self.model = loader.loadModel('models/gui/pir_m_gui_gen_loadingBar')
     bar = self.model.findTexture('pir_t_gui_gen_loadingBar')
     self.model.find('**/loading_bar').hide()
     self.topFrame = DirectFrame(parent = base.a2dTopRight, pos = (-0.80000000000000004, 0, -0.10000000000000001), sortOrder = NO_FADE_SORT_INDEX + 1)
     self.text = DirectLabel(relief = None, parent = self.topFrame, guiId = 'DownloadWatcherText', pos = (0, 0, 0), text = '                     ', text_fg = (1, 1, 1, 1), text_shadow = (0, 0, 0, 1), text_scale = 0.040000000000000001, textMayChange = 1, text_align = TextNode.ARight, text_pos = (0.17000000000000001, 0), sortOrder = 2)
     self.bar = DirectWaitBar(relief = None, parent = self.topFrame, guiId = 'DownloadWatcherBar', pos = (0, 0, 0), frameSize = (-0.40000000000000002, 0.38, -0.044999999999999998, 0.065000000000000002), borderWidth = (0.02, 0.02), range = 100, frameColor = (1, 1, 1, 1), barColor = (0, 0.29999999999999999, 0, 1), barTexture = bar, geom = self.model, geom_scale = 0.089999999999999997, geom_pos = (-0.014, 0, 0.01), text = '0%', text_scale = 0.040000000000000001, text_fg = (1, 1, 1, 1), text_align = TextNode.ALeft, text_pos = (0.19, 0), sortOrder = 1)
     self.bgFrame = DirectFrame(relief = DGG.FLAT, parent = self.topFrame, pos = (0, 0, 0), frameColor = (0.5, 0.27000000000000002, 0.35999999999999999, 0.20000000000000001), frameSize = (-0.44, 0.39000000000000001, -0.035999999999999997, 0.056000000000000001), borderWidth = (0.02, 0.02), scale = 0.90000000000000002, sortOrder = 0)
     self.accept('launcherPercentPhaseComplete', self.update)
Beispiel #4
0
 def loadUI(self):
     self.lifeBar = DirectWaitBar(text="", value=self.player.life,
                                  barColor=(0, 1, 0.25, 1),
                                  barBorderWidth=(0.03, 0.03),
                                  borderWidth=(0.01, 0.01),
                                  frameColor=(0.5, 0.55, 0.70, 1),
                                  range=self.player.life,
                                  frameSize=(-1.2, 0, 0, -0.1),
                                  pos=(0.6, self.a2dLeft, self.a2dBottom + 0.15))
     self.lifeBar.setTransparency(1)
     self.lifeBar.reparentTo(self.render2d)
Beispiel #5
0
 def createDirectWaitBar(self, parent=None):
     parent = self.getEditorRootCanvas() if parent is None else parent
     pos = self.editorCenter if parent == self.getEditorRootCanvas() else (0,0,0)
     if self.visEditorInAspect2D:
         element = DirectWaitBar(
             text="0%",
             text_scale=0.1,
             state = DGG.NORMAL,
             parent=parent)
     else:
         element = DirectWaitBar(
             text="0%",
             text_scale=0.1,
             scale=150,
             pos=pos,
             borderWidth=(2, 2),
             state = DGG.NORMAL,
             parent=parent)
     elementInfo = ElementInfo(element, "DirectWaitBar")
     self.setupBind(elementInfo)
     return elementInfo
Beispiel #6
0
 def drawEXPBar(self):
     self.throwExp = DirectWaitBar(
         relief=DGG.SUNKEN,
         frameSize=(-1, 1, -0.15, 0.15),
         borderWidth=(0.02, 0.02),
         scale=0.25,
         frameColor=(Globals.THROW_COLOR[0] * 0.7,
                     Globals.THROW_COLOR[1] * 0.7,
                     Globals.THROW_COLOR[2] * 0.7, 1),
         barColor=(Globals.THROW_COLOR[0], Globals.THROW_COLOR[1],
                   Globals.THROW_COLOR[2], 1),
         pos=(0, 0, -0.8))
     self.throwExpLbl = OnscreenText(parent=self.throwExp,
                                     pos=(0, -0.05),
                                     scale=0.18,
                                     fg=(0, 0, 0, 1),
                                     mayChange=1,
                                     align=TextNode.ACenter)
Beispiel #7
0
 def aiBattle(self, advanced=False):
     if not advanced:
         self.ai = AI("models/panda-model", 0.05, (700, 700, 0), self.render,
                      {"walk": "models/panda-walk4"}, self, self.path, 200)
     else:
         self.ai = AdvancedAI("models/panda-model", 0.05, (700, 700, 0),
                              self.render, {"walk": "models/panda-walk4"}, self,
                              self.path, 200)
     self.others["ai"] = self.ai
     self.aiLifebar = DirectWaitBar(text="", value=self.ai.life,
                                    barColor=(0, 1, 0.25, 1),
                                    barBorderWidth=(0.003, 0.003),
                                    borderWidth=(0.001, 0.001),
                                    frameColor=(0.5, 0.55, 0.70, 1),
                                    range=self.ai.life,
                                    frameSize=(-0.45, 0, 0, -0.1),
                                    pos=(1, 0, self.a2dTop - 0.11)
                                    )
     self.aiLifebar.setTransparency(1)
     self.aiLifebar.reparentTo(self.render2d)
    def __init__(self, quest, parent=aspect2d, **kw):
        # The quest this poster is representing.
        self.quest = quest
        self.accessibleObjectives = quest.accessibleObjectives if quest else []
        self.viewObjective = quest.accessibleObjectives.seek(
        ) if quest else None

        isObjComplete = False if not quest else (
            self.accessibleObjectives.isComplete() or quest.isComplete())

        # Let's define our options for the DirectFrame.
        bookModel = loader.loadModel(
            'phase_3.5/models/gui/stickerbook_gui.bam')
        optiondefs = (('relief', None,
                       None), ('image', bookModel.find('**/questCard'),
                               None), ('image_scale', (0.8, 1.0, 0.58), None),
                      ('image_color', (1.0, 1.0, 1.0,
                                       1.0) if not isObjComplete else Vec4(
                                           *QuestGlobals.LIGHT_GREEN),
                       None), ('state', DGG.NORMAL, None))
        self.defineoptions(kw, optiondefs)

        # Finally, initialize the DirectFrame.
        DirectFrame.__init__(self, parent, relief=None)
        self.initialiseoptions(QuestPoster)

        # Let's declare and initialize our barebone GUI element variables.
        questTitle = '' if not self.quest else self.quest.name
        self.titleLabel = DirectLabel(parent=self,
                                      relief=None,
                                      text=questTitle,
                                      text_font=CIGlobals.getMinnieFont(),
                                      text_fg=QuestGlobals.TEXT_COLOR,
                                      text_scale=0.05,
                                      text_align=TextNode.ACenter,
                                      text_wordwrap=25.0,
                                      textMayChange=1,
                                      pos=(0, 0, 0.23))

        ##########################################################################
        #           THE FOLLOWING ELEMENTS BELOW ARE GROUPED TOGETHER            #
        ##########################################################################

        # The background frame where the objective image is displayed.
        # This is the colored background frame.

        circleGui = loader.loadModel(
            'phase_4/models/gui/CircleIconBackgroundGui.bam')
        self.auxFrame = DirectFrame(
            parent=self,
            relief=None,
            image=circleGui.find('**/circle_display_interior'),
            image_scale=0.18,
            text='',
            text_pos=(0, -0.11),
            text_fg=QuestGlobals.TEXT_COLOR,
            text_scale=QuestGlobals.QPtextScale,
            text_align=TextNode.ACenter,
            text_wordwrap=11.0,
            pos=QuestGlobals.DEFAULT_LEFT_PICTURE_POS)

        if self.quest and len(
                self.quest.accessibleObjectives) > 1 and not isObjComplete:
            # We can only use arrows when we have more than one objective available.
            arrowGui = loader.loadModel('phase_4/models/gui/QuestArrowGui.bam')
            self.prevObjArrow = DirectButton(
                parent=self.auxFrame,
                relief=None,
                geom=((arrowGui.find('**/quest_arrow_enabled'),
                       arrowGui.find('**/quest_arrow_click'),
                       arrowGui.find('**/quest_arrow_mouseover'),
                       arrowGui.find('**/quest_arrow_disabled'))),
                scale=0.08,
                command=self.switchObjective,
                extraArgs=[0],
                hpr=(180, 0, 0),
                pos=QuestGlobals.DEFAULT_LEFT_ARROW_POS)

            self.nextObjArrow = DirectButton(
                parent=self.auxFrame,
                relief=None,
                geom=((arrowGui.find('**/quest_arrow_enabled'),
                       arrowGui.find('**/quest_arrow_click'),
                       arrowGui.find('**/quest_arrow_mouseover'),
                       arrowGui.find('**/quest_arrow_disabled'))),
                scale=0.08,
                command=self.switchObjective,
                pos=QuestGlobals.DEFAULT_RIGHT_ARROW_POS)

        # The icon that goes on top of the aux frame.
        self.auxIcon = DirectFrame(parent=self.auxFrame,
                                   relief=None,
                                   text=' ',
                                   text_font=CIGlobals.getSuitFont(),
                                   text_pos=(0, -0.03),
                                   text_fg=QuestGlobals.TEXT_COLOR,
                                   text_scale=0.13,
                                   text_align=TextNode.ACenter,
                                   text_wordwrap=13.0,
                                   textMayChange=1)
        self.auxIcon.setColorOff(-1)

        self.auxOutline = DirectLabel(
            parent=self.auxFrame,
            relief=None,
            image=circleGui.find('**/circle_display_outline'),
            image_scale=0.18)

        # The aux text saying: DEFEAT, RECOVER, etc.
        self.auxText = DirectLabel(parent=self,
                                   relief=None,
                                   text=QuestGlobals.RECOVER,
                                   text_font=CIGlobals.getToonFont(),
                                   text_scale=QuestGlobals.QPauxText,
                                   text_fg=QuestGlobals.TEXT_COLOR,
                                   text_align=TextNode.ACenter,
                                   textMayChange=1,
                                   pos=QuestGlobals.DEFAULT_AUX_POS)
        self.auxText.hide()

        ##########################################################################

        # Information displayed about the objective.
        self.objectiveInfo = DirectLabel(
            parent=self,
            relief=None,
            text='',
            text_font=CIGlobals.getToonFont(),
            text_fg=QuestGlobals.TEXT_COLOR,
            text_scale=0.04,
            text_align=TextNode.ACenter,
            text_wordwrap=QuestGlobals.QPtextWordwrap,
            textMayChange=1,
            pos=(QuestGlobals.DEFAULT_INFO_POS))
        self.objectiveInfo.hide()

        # Information displayed showing the location.
        self.locationInfo = DirectLabel(
            parent=self,
            relief=None,
            text='N/A',
            text_font=CIGlobals.getToonFont(),
            text_fg=QuestGlobals.TEXT_COLOR,
            text_scale=QuestGlobals.QPtextScale,
            text_align=TextNode.ACenter,
            text_wordwrap=QuestGlobals.QPtextWordwrap,
            textMayChange=1,
            pos=(0, 0, -0.115))
        self.locationInfo.hide()

        # The progress bar showing the objective's progress
        self.progressBar = DirectWaitBar(parent=self,
                                         relief=DGG.SUNKEN,
                                         frameSize=(-0.95, 0.95, -0.1, 0.12),
                                         borderWidth=(0.025, 0.025),
                                         scale=0.2,
                                         frameColor=(0.945, 0.875, 0.706, 1.0),
                                         barColor=(0.5, 0.7, 0.5, 1),
                                         text='0/0',
                                         text_font=CIGlobals.getToonFont(),
                                         text_scale=0.19,
                                         text_fg=(0.05, 0.14, 0.4, 1),
                                         text_align=TextNode.ACenter,
                                         text_pos=(0, -0.05),
                                         pos=(0, 0, -0.2425))
        self.progressBar.hide()

        # The wood panel at the bottom where rewards are displayed.
        rewardFrameGeom = loader.loadModel(
            'phase_4/models/gui/gag_shop_purchase_gui.bam')
        self.rewardFrame = DirectFrame(
            parent=self,
            relief=None,
            geom=rewardFrameGeom.find('**/Goofys_Sign'),
            geom_scale=(0.62, 0, 0.4),
            pos=(-0.015, 0, -0.25))

        # Let's setup our reward frames.
        reward = None

        if self.quest and len(self.quest.rewards) > 0:
            reward = self.quest.rewards[0]
        self.lReward = QuestRewardFrame(self, reward)

        # The text displayed on the right side of the frame with additional information, if necessary.
        self.sideInfo = DirectLabel(parent=self,
                                    relief=None,
                                    text=QuestGlobals.JUST_FOR_FUN,
                                    text_fg=(0.0, 0.439, 1.0, 1.0),
                                    text_shadow=(0, 0, 0, 1),
                                    pos=(-0.2825, 0, 0.2),
                                    scale=0.03)
        self.sideInfo.setR(-30)

        # This side information is usually not needed, let's hide it.
        self.sideInfo.hide()

        # Remove the nodes of the loaded models we no longer need.
        circleGui.removeNode()
        bookModel.removeNode()
        rewardFrameGeom.removeNode()

        # We are only removing this node if we generated arrows.
        if hasattr(self, 'arrowGui'):
            arrowGui.removeNode()

        # Let's hide this until it is needed.
        self.hide()
        return
 def __init__(self, baseGui, index, pos, parent):
     DirectFrame.__init__(
         self,
         pos=pos,
         parent=parent,
         image=loader.loadTexture('phase_3.5/maps/slot_%s_%s.png' %
                                  (str(index), 'idle')),
         scale=0.15,
         frameSize=(-1, 1, -1, 1),
         frameColor=(0, 0, 0, 0),
         sortOrder=0)
     self.initialiseoptions(Slot)
     self.gui = baseGui
     self.index = index
     self.hoverObj = None
     self.gagImage = None
     self.gag = None
     self.mouseRlvrSfx = base.loadSfx('phase_3/audio/sfx/GUI_rollover.ogg')
     self.soundRecharged = base.loadSfx(
         'phase_3.5/audio/sfx/tt_s_gui_sbk_cdrSuccess.ogg')
     self.infoText = OnscreenText(text='No\nAmmo',
                                  fg=(1, 0, 0, 1),
                                  parent=self,
                                  scale=0.5,
                                  shadow=(0, 0, 0, 1),
                                  align=TextNode.ACenter,
                                  pos=(0, 0.1))
     self.infoText.setBin('unsorted', 100)
     self.infoText.hide()
     self.rechargeBar = DirectWaitBar(value=0,
                                      range=100,
                                      frameColor=(1, 1, 1, 1),
                                      barColor=(0.286, 0.901, 1, 1),
                                      relief=DGG.RAISED,
                                      borderWidth=(0.04, 0.04),
                                      pos=(-1.25, 0, 0),
                                      hpr=(0, 0, -90),
                                      parent=self,
                                      frameSize=(-0.85, 0.85, -0.12, 0.12))
     self.rechargeBar.setBin('fixed', 60)
     self.rechargeBar.hide()
     self.gagLabel = OnscreenText(text='Birthday Cake',
                                  fg=(1, 1, 1, 1),
                                  parent=self,
                                  scale=0.25,
                                  shadow=(0, 0, 0, 1),
                                  align=TextNode.ACenter,
                                  pos=(0, -0.9),
                                  mayChange=1)
     self.gagLabel.setBin('fixed', 50)
     self.gagLabel.hide()
     battleGui = loader.loadModel('phase_3.5/models/gui/battle_gui.bam')
     arrow = battleGui.find('**/PckMn_BackBtn')
     arrowRlvr = battleGui.find('**/PckMn_BackBtn_Rlvr')
     arrowDn = battleGui.find('**/PckMn_BackBtn_Dn')
     self.leftArrow = DirectButton(geom=(arrow, arrowDn, arrowRlvr, arrow),
                                   parent=self,
                                   pos=(-0.925, -2.0, -1.02),
                                   relief=None,
                                   scale=2,
                                   command=self.updateLoadout,
                                   extraArgs=[0],
                                   geom3_color=(0.5, 0.5, 0.5, 1.0))
     self.leftArrow.setBin('fixed', 60)
     self.rightArrow = DirectButton(geom=(arrow, arrowDn, arrowRlvr, arrow),
                                    parent=self,
                                    pos=(0.925, -2.0, -1.02),
                                    hpr=(180, 0, 0),
                                    relief=None,
                                    scale=2,
                                    command=self.updateLoadout,
                                    extraArgs=[1],
                                    geom3_color=(0.5, 0.5, 0.5, 1.0))
     self.rightArrow.setBin('fixed', 60)
     self.hoverObj = DirectButton(relief=None,
                                  parent=self,
                                  frameSize=self['frameSize'])
     self.setBin('transparent', 30)
     self.setOutlineImage('idle')
     self.hoverObj.guiItem.setActive(True)
     self.hoverObj.bind(DGG.WITHIN, self.mouseEntered)
     self.hoverObj.bind(DGG.WITHOUT, self.mouseExited)
     self.hoverObj.bind(DGG.B1CLICK, self.gui.click_setWeapon, [self])
     return
Beispiel #10
0
    def __init__(self, quest, parent=aspect2d, **kw):
        # The quest this poster is representing.
        self.quest = quest

        # Let's define our options for the DirectFrame.
        bookModel = loader.loadModel(
            'phase_3.5/models/gui/stickerbook_gui.bam')
        optiondefs = (('relief', None,
                       None), ('image', bookModel.find('**/questCard'),
                               None), ('image_scale', (0.8, 1.0, 0.58), None),
                      ('state', DGG.NORMAL, None))
        self.defineoptions(kw, optiondefs)

        # Finally, initialize the DirectFrame.
        DirectFrame.__init__(self, relief=None)
        self.initialiseoptions(QuestPoster)

        # Let's declare and initialize our barebone GUI element variables.
        self.titleLabel = DirectLabel(parent=self,
                                      relief=None,
                                      text=self.quest.getName(),
                                      text_font=CIGlobals.getMinnieFont(),
                                      text_fg=QuestGlobals.TEXT_COLOR,
                                      text_scale=0.05,
                                      text_align=TextNode.ACenter,
                                      text_wordwrap=25.0,
                                      textMayChange=1,
                                      pos=(0, 0, 0.23))

        ##########################################################################
        #           THE FOLLOWING ELEMENTS BELOW ARE GROUPED TOGETHER            #
        ##########################################################################

        # The background frame where the objective image is displayed.
        # This is the colored background frame.
        self.auxFrame = DirectFrame(
            parent=self,
            relief=None,
            image=bookModel.find('**/questPictureFrame'),
            image_scale=QuestGlobals.IMAGE_SCALE_SMALL,
            text='',
            text_pos=(0, -0.11),
            text_fg=QuestGlobals.TEXT_COLOR,
            text_scale=QuestGlobals.QPtextScale,
            text_align=TextNode.ACenter,
            text_wordwrap=11.0,
            pos=QuestGlobals.DEFAULT_LEFT_PICTURE_POS)

        # The icon that goes on top of the aux frame.
        self.auxIcon = DirectFrame(parent=self.auxFrame,
                                   relief=None,
                                   text=' ',
                                   text_font=CIGlobals.getSuitFont(),
                                   text_pos=(0, -0.03),
                                   text_fg=QuestGlobals.TEXT_COLOR,
                                   text_scale=0.13,
                                   text_align=TextNode.ACenter,
                                   text_wordwrap=13.0,
                                   textMayChange=1)
        self.auxIcon.setColorOff(-1)

        # The aux text saying: DEFEAT, RECOVER, etc.
        self.auxText = DirectLabel(parent=self,
                                   relief=None,
                                   text=QuestGlobals.RECOVER,
                                   text_font=CIGlobals.getToonFont(),
                                   text_scale=QuestGlobals.QPauxText,
                                   text_fg=QuestGlobals.TEXT_COLOR,
                                   text_align=TextNode.ACenter,
                                   textMayChange=1,
                                   pos=QuestGlobals.DEFAULT_AUX_POS)
        self.auxText.hide()

        ##########################################################################

        # Information displayed about the objective.
        self.objectiveInfo = DirectLabel(
            parent=self,
            relief=None,
            text='',
            text_font=CIGlobals.getToonFont(),
            text_fg=QuestGlobals.TEXT_COLOR,
            text_scale=0.04,
            text_align=TextNode.ACenter,
            text_wordwrap=QuestGlobals.QPtextWordwrap,
            textMayChange=1,
            pos=(QuestGlobals.DEFAULT_INFO_POS))
        self.objectiveInfo.hide()

        # Information displayed showing the location.
        self.locationInfo = DirectLabel(
            parent=self,
            relief=None,
            text='N/A',
            text_font=CIGlobals.getToonFont(),
            text_fg=QuestGlobals.TEXT_COLOR,
            text_scale=QuestGlobals.QPtextScale,
            text_align=TextNode.ACenter,
            text_wordwrap=QuestGlobals.QPtextWordwrap,
            textMayChange=1,
            pos=(0, 0, -0.115))
        self.locationInfo.hide()

        # The progress bar showing the objective's progress
        self.progressBar = DirectWaitBar(parent=self,
                                         relief=DGG.SUNKEN,
                                         frameSize=(-0.95, 0.95, -0.1, 0.12),
                                         borderWidth=(0.025, 0.025),
                                         scale=0.2,
                                         frameColor=(0.945, 0.875, 0.706, 1.0),
                                         barColor=(0.5, 0.7, 0.5, 1),
                                         text='0/0',
                                         text_font=CIGlobals.getToonFont(),
                                         text_scale=0.19,
                                         text_fg=(0.05, 0.14, 0.4, 1),
                                         text_align=TextNode.ACenter,
                                         text_pos=(0, -0.05),
                                         pos=(0, 0, -0.2425))
        self.progressBar.hide()

        # The wood panel at the bottom where rewards are displayed.
        rewardFrameGeom = loader.loadModel(
            'phase_4/models/gui/gag_shop_purchase_gui.bam')
        self.rewardFrame = DirectFrame(
            parent=self,
            relief=None,
            geom=rewardFrameGeom.find('**/Goofys_Sign'),
            geom_scale=(0.615, 0, 0.4),
            pos=(-0.01, 0, -0.25))

        # The text displayed on the right side of the frame with additional information, if necessary.
        self.sideInfo = DirectLabel(parent=self,
                                    relief=None,
                                    text=QuestGlobals.JUST_FOR_FUN,
                                    text_fg=(0.0, 0.439, 1.0, 1.0),
                                    text_shadow=(0, 0, 0, 1),
                                    pos=(-0.2825, 0, 0.2),
                                    scale=0.03)
        self.sideInfo.setR(-30)

        # This side information is usually not needed, let's hide it.
        self.sideInfo.hide()

        # Remove the nodes of the loaded models we no longer need.
        bookModel.removeNode()
        rewardFrameGeom.removeNode()

        # Let's hide this until it is needed.
        self.hide()
        return