def enterSysMsgSection(self):
     geom = CIGlobals.getDefaultBtnGeom()
     self.infoLbl = OnscreenText(
         text="Inform all online players about something.", pos=(0, 0.45))
     self.msgEntry = DirectEntry(
         initialText="System Message...",
         scale=0.055,
         width=15,
         numLines=4,
         command=self.sendSystemMessageCommand,
         focusInCommand=base.localAvatar.chatInput.disableKeyboardShortcuts,
         focusOutCommand=base.localAvatar.chatInput.enableKeyboardShortcuts,
         pos=(-0.4, 0, 0))
     self.sendBtn = DirectButton(
         geom=geom,
         text_scale=0.04,
         relief=None,
         scale=1.0,
         text="Send",
         pos=(0, 0, -0.35),
         text_pos=(0, -0.01),
         command=self.sendSystemMessageCommand,
     )
     self.cancelBtn = DirectButton(geom=geom,
                                   text_scale=0.04,
                                   relief=None,
                                   scale=1.0,
                                   text="Cancel",
                                   pos=(-0.45, 0.15, -0.55),
                                   text_pos=(0, -0.01),
                                   command=self.fsm.request,
                                   extraArgs=['basePage'])
 def enterKickSection(self):
     geom = CIGlobals.getDefaultBtnGeom()
     self.infoLbl = OnscreenText(text="Kick or Ban?", pos=(0, 0.45))
     self.kickBtn = DirectButton(geom=geom,
                                 text_scale=0.04,
                                 relief=None,
                                 scale=1.0,
                                 text="Kick",
                                 pos=(0, 0, 0.1),
                                 text_pos=(0, -0.01),
                                 command=self.book.finishedResume,
                                 extraArgs=[KickBanDialog, [0]])
     self.banBtn = DirectButton(geom=geom,
                                text_scale=0.04,
                                relief=None,
                                scale=1.0,
                                text="Ban",
                                pos=(0, 0, 0.0),
                                text_pos=(0, -0.01),
                                command=self.book.finishedResume,
                                extraArgs=[KickBanDialog, [1]])
     self.cancelBtn = DirectButton(geom=geom,
                                   text_scale=0.04,
                                   relief=None,
                                   scale=1.0,
                                   text="Cancel",
                                   pos=(-0.45, 0.15, -0.45),
                                   text_pos=(0, -0.01),
                                   command=self.fsm.request,
                                   extraArgs=['basePage'])
Ejemplo n.º 3
0
 def makeSelectionGUI(self):
     font = CIGlobals.getMickeyFont()
     box = loader.loadModel('phase_3/models/gui/dialog_box_gui.bam')
     imp = CIGlobals.getToonFont()
     geom = CIGlobals.getDefaultBtnGeom()
     self.container = DirectFrame()
     self.bg = OnscreenImage(image=box,
                             color=(1, 1, 0.75, 1),
                             scale=(1.9, 1.4, 1.4),
                             parent=self.container)
     self.title = OnscreenText(text="Join  a  Team",
                               pos=(0, 0.5, 0),
                               font=font,
                               scale=(0.12),
                               parent=self.container,
                               fg=(1, 0.9, 0.3, 1))
     self.btnFrame = DirectFrame(parent=self.container, pos=(0.14, 0, 0))
     self.team1BtnFrame = DirectFrame(parent=self.btnFrame,
                                      pos=(-0.5, 0, 0))
     self.team2BtnFrame = DirectFrame(parent=self.btnFrame,
                                      pos=(0.22, 0, 0))
     self.team1Btn = DirectButton(parent=self.team1BtnFrame,
                                  relief=None,
                                  pressEffect=0,
                                  image=self.team1BtnImg,
                                  image_scale=(0.9, 1, 1),
                                  scale=0.4,
                                  command=self.choseTeam,
                                  extraArgs=[TEAM1])
     self.team1Plyrs_Lbl = OnscreenText(parent=self.team1BtnFrame,
                                        text=str(self.playersByTeam[TEAM1]),
                                        pos=(0, -0.46, 0),
                                        font=imp)
     self.team2Btn = DirectButton(parent=self.team2BtnFrame,
                                  relief=None,
                                  pressEffect=0,
                                  image=self.team2BtnImg,
                                  image_scale=(0.9, 1, 1),
                                  scale=0.4,
                                  command=self.choseTeam,
                                  extraArgs=[TEAM2])
     self.team2Plyrs_Lbl = OnscreenText(parent=self.team2BtnFrame,
                                        text=str(self.playersByTeam[TEAM2]),
                                        pos=(0, -0.46, 0),
                                        font=imp)
     self.teamFull_Lbl = OnscreenText(parent=self.container,
                                      text="",
                                      pos=(0, -0.6, 0),
                                      font=imp)
 def enterEditGags(self):
     self.initialLoadout = []
     for instance in base.localAvatar.backpack.loadout:
         self.initialLoadout.append(instance.getID())
     self.newLoadout = list(self.initialLoadout)
     self.editButton['text'] = 'Stop Editing'
     self.editButton['command'] = self.fsm.request
     self.editButton['extraArgs'] = ['idle']
     self.switchButton = DirectButton(relief=None,
                                      image=CIGlobals.getDefaultBtnGeom(),
                                      text='Add Gags',
                                      text_scale=0.045,
                                      text_pos=(0, -0.01),
                                      pos=(0.5, 0, -0.4))
     self.editFSM.request('add')
Ejemplo n.º 5
0
 def createTurretButton(self):
     self.makeTurretBtn = DirectButton(
         relief = None,
         geom = CIGlobals.getDefaultBtnGeom(),
         text = 'Turret',
         text_scale = 0.055,
         command = self.handleMakeTurretBtn,
         pos = (-0.47, 0, 0.1),
         geom_scale = (0.5, 1.0, 1.0),
         text_pos = (0, -0.01),
         parent = base.a2dBottomRight
     )
     
     if base.localAvatar.getPUInventory()[0]:
         self.setGag(base.localAvatar.getPUInventory()[1])
 def createGUI(self):
     for i in xrange(len(GagGlobals.TrackNameById)):
         trackName = GagGlobals.TrackNameById[i]
         self.__makeTrack(trackName)
         for j in xrange(len(
                 GagGlobals.TrackGagNamesByTrackName[trackName])):
             gagName = GagGlobals.TrackGagNamesByTrackName[trackName][j]
             gagId = GagGlobals.gagIdByName[gagName]
             if base.localAvatar.getBackpack().hasGag(gagId):
                 self.__makeGagButton(gagName, trackName)
     self.editButton = DirectButton(relief=None,
                                    image=CIGlobals.getDefaultBtnGeom(),
                                    text='Edit Loadout',
                                    text_scale=0.045,
                                    text_pos=(0, -0.01),
                                    pos=(-0.5, 0, -0.4))
     self.fsm.request('idle')
Ejemplo n.º 7
0
 def enterChooseGun(self):
     font = CIGlobals.getToonFont()
     box = DGG.getDefaultDialogGeom()
     geom = CIGlobals.getDefaultBtnGeom()
     self.container = DirectFrame()
     self.bg = OnscreenImage(image=box,
                             color=(1, 1, 0.75, 1),
                             scale=(1.9, 1.4, 1.4),
                             parent=self.container)
     self.title = OnscreenText(text="Choose a Gun",
                               pos=(0, 0.5, 0),
                               font=font,
                               scale=(0.12),
                               parent=self.container)
     self.pistolBtn = DirectButton(geom=geom,
                                   text="Pistol",
                                   relief=None,
                                   text_scale=0.055,
                                   text_pos=(0, -0.01),
                                   command=self.__gunChoice,
                                   extraArgs=["pistol"],
                                   pos=(0, 0, 0.35),
                                   parent=self.container)
     self.shotgunBtn = DirectButton(geom=geom,
                                    text="Shotgun",
                                    relief=None,
                                    text_scale=0.055,
                                    text_pos=(0, -0.01),
                                    command=self.__gunChoice,
                                    extraArgs=["shotgun"],
                                    pos=(0, 0, 0.25),
                                    parent=self.container)
     self.sniperBtn = DirectButton(geom=geom,
                                   text="Sniper",
                                   relief=None,
                                   text_scale=0.055,
                                   text_pos=(0, -0.01),
                                   command=self.__gunChoice,
                                   extraArgs=["sniper"],
                                   pos=(0, 0, 0.15),
                                   parent=self.container)
Ejemplo n.º 8
0
    def makePickableQuests(self, questList):
        self.doCameraNPCInteraction(True)

        quests = []

        for questId in questList:
            quest = Quest(questId, base.localAvatar.questManager)
            quest.setupCurrentObjectiveFromData(-1, 0, None)
            quests.append(quest)

        positions = [(0, 0, 0.65), (0, 0, 0.1), (0, 0, -0.45)]

        self.questFrame = DirectFrame(relief=None,
                                      pos=(-0.8, 0, 0),
                                      geom=DGG.getDefaultDialogGeom(),
                                      geom_color=Vec4(0.8, 0.6, 0.4, 1),
                                      geom_scale=(1.85, 1, 0.9),
                                      geom_hpr=(0, 0, -90))

        self.cancelBtn = DirectButton(text="Cancel",
                                      geom=CIGlobals.getDefaultBtnGeom(),
                                      geom_scale=(0.6, 0.75, 0.75),
                                      relief=None,
                                      parent=self.questFrame,
                                      pos=(0.2, 0, -0.8),
                                      text_scale=0.045,
                                      text_pos=(0, -0.015),
                                      scale=1.1,
                                      command=self.__cancelQuestPicker,
                                      extraArgs=[False])

        self.timer = Timer()
        self.timer.load()
        self.timer.setScale(0.3)
        self.timer.reparentTo(self.questFrame)
        self.timer.setPos(-0.1, 0, -0.8)
        self.timer.setInitialTime(20)
        self.timer.setZeroCommand(self.__cancelQuestPicker)
        self.timer.startTiming()

        self.questPosters = []
        self.questBtns = []

        for i in xrange(len(quests)):
            poster = None
            quest = quests[i]
            poster = QuestGlobals.generatePoster(quest, parent=aspect2d)
            poster.setScale(0.85)
            poster.setPos(0, 0, 0)
            poster.progressBar.hide()
            self.questPosters.append(poster)

            # Let's setup the choose button.
            btn = DirectButton(geom=CIGlobals.getDefaultBtnGeom(),
                               parent=poster,
                               pos=(0.35, 0, 0.215),
                               text='Choose',
                               text_scale=0.08,
                               text_pos=(0, -0.025),
                               relief=None,
                               command=self.d_pickedQuest,
                               extraArgs=[quests[i]])
            btn.setScale(0.4)
            btn.setBin('gui-popup', 60)
            btn.initialiseoptions(DirectButton)

            poster.reparentTo(self.questFrame.stateNodePath[0], 20)
            poster.setPos(positions[i])
            poster.show()

            self.questBtns.append(btn)
Ejemplo n.º 9
0
    def load(self, newToonSlot=None):
        self.isNewToon = newToonSlot is not None
        self.newToonSlot = newToonSlot

        base.transitions.noTransitions()

        base.cr.renderFrame()
        base.camLens.setMinFov(CIGlobals.DefaultCameraFov / (4. / 3.))

        self.__setupStageToon()

        self.title = DirectLabel(text=self.TITLE,
                                 text_font=CIGlobals.getMickeyFont(),
                                 text_fg=(1, 0.9, 0.1, 1),
                                 relief=None,
                                 text_scale=0.13,
                                 pos=(0, 0, 0.82))
        self.charNameLabel = OnscreenText(text="",
                                          font=CIGlobals.getMickeyFont(),
                                          pos=(-0.25, 0.5, 0),
                                          fg=(1, 0.9, 0.1, 1.0))
        self.charNameLabel.hide()
        self.frame = DirectFrame()
        self.frame['image'] = DGG.getDefaultDialogGeom()
        self.frame['image_color'] = CIGlobals.DialogColor
        self.frame['image_scale'] = (-0.9, -0.9, 0.8)
        self.frame['image_pos'] = (0.82, 0, -0.125)
        self.playOrCreateButton = DirectButton(
            text="",
            pos=(0.8125, 0, -0.35),
            command=self.__action,
            geom=CIGlobals.getDefaultBtnGeom(),
            text_scale=0.06,
            relief=None,
            text_pos=(0, -0.01))
        self.playOrCreateButton.hide()
        self.deleteButton = DirectButton(text="Delete",
                                         pos=(0.8125, 0, -0.45),
                                         command=self.__action,
                                         extraArgs=['delete'],
                                         geom=CIGlobals.getDefaultBtnGeom(),
                                         text_scale=0.06,
                                         relief=None,
                                         text_pos=(0, -0.01))
        self.deleteButton.hide()
        self.quitButton = DirectButton(text="Quit",
                                       pos=(-1.10, 0, -0.925),
                                       command=self.__action,
                                       extraArgs=['quit'],
                                       text_scale=0.06,
                                       geom=CIGlobals.getDefaultBtnGeom(),
                                       relief=None,
                                       text_pos=(0, -0.01))

        for slot in range(6):
            if self.avChooser.hasToonInSlot(slot):
                choice = self.avChooser.getAvChoiceBySlot(slot)
                text = choice.name
            else:
                text = self.NO_TOON
            btn = CIGlobals.makeDefaultScrolledListBtn(
                text=text,
                text_scale=0.06,
                command=self.__handleCharButton,
                extraArgs=[slot])
            btn.setPythonTag('slot', slot)
            self.charButtons.append(btn)
            btn['state'] = DGG.NORMAL

        self.charList = CIGlobals.makeDefaultScrolledList(
            pos=(0.75, 0, -0.225),
            listZorigin=-0.43,
            listFrameSizeZ=0.51,
            arrowButtonScale=0.0,
            items=self.charButtons,
            parent=self.frame)

        if self.isNewToon:
            self.__handleCharButton(self.newToonSlot)
            self.disableAllCharButtons()
    def enterPanel(self):
        accessLevel = self.avatarInfo[8]
        text_color = AdminCommands.Roles.get(
            accessLevel
        ).token.color if accessLevel > AdminCommands.NoAccess else (0, 0, 0, 1)
        self.nameText = OnscreenText(text=self.avatarInfo[1],
                                     parent=self,
                                     pos=(0, 0.2),
                                     scale=0.035,
                                     wordwrap=8,
                                     fg=text_color)
        self.nameText.setBin('gui-popup', 60)

        dna = ToonDNA.ToonDNA()
        dna.setDNAStrand(self.avatarInfo[2])

        self.head = ToonGlobals.generateGuiHead(dna)
        self.head.reparentTo(self)
        self.head.setScale(self.animal2HeadData[dna.animal][0])
        self.head.setZ(self.animal2HeadData[dna.animal][1])

        self.laffMeter = LaffOMeter()
        r, g, b, _ = dna.headcolor
        self.laffMeter.generate(r, g, b, dna.animal, self.avatarInfo[3],
                                self.avatarInfo[4])
        self.laffMeter.reparentTo(self)
        self.laffMeter.setBin('gui-popup', 60)
        self.laffMeter.setScale(0.045)
        self.laffMeter.setPos(0, 0, -0.1)

        self.friendButton = DirectButton(
            geom=CIGlobals.getDefaultBtnGeom(),
            text="Add Friend",
            scale=0.58,
            relief=None,
            text_scale=0.058,
            geom_scale=(1.25, 0, 0.9),
            text_pos=(0, -0.0125),
            parent=self,
            pos=(0, 0, -0.12),
            command=self.doAction,
            extraArgs=['waitOnAvatarFriendListResponse'])
        self.friendButton.setPos(0, 0.0, -0.225)
        self.maybeUpdateFriendButton()

        self.teleportButton = DirectButton(
            geom=CIGlobals.getDefaultBtnGeom(),
            text="Teleport",
            scale=0.58,
            relief=None,
            text_scale=0.058,
            geom_scale=(1.25, 0, 0.9),
            text_pos=(0, -0.0125),
            parent=self,
            pos=(0, 0, -0.12),
            command=self.doAction,
            extraArgs=['waitOnAvatarTeleportResponse'])
        self.teleportButton.setPos(0, 0, -0.275)

        self.whisperButton = DirectButton(
            geom=CIGlobals.getDefaultBtnGeom(),
            text="Whisper",
            scale=0.58,
            relief=None,
            text_scale=0.058,
            geom_scale=(1.25, 0, 0.9),
            text_pos=(0, -0.0125),
            parent=self,
            pos=(0, 0, -0.12),
            command=base.localAvatar.handleClickedWhisper,
            extraArgs=[self.avatarInfo[1], self.avatarInfo[0], 1])
        self.whisperButton.setPos(0, 0, -0.325)

        self.exitButton = DirectButton(geom=CIGlobals.getCancelBtnGeom(),
                                       parent=self,
                                       relief=None,
                                       scale=0.6,
                                       pos=(0, 0.0, -0.39),
                                       command=self.exitClicked)
        gui = loader.loadModel("phase_3.5/models/gui/friendslist_gui.bam")
        self.moreDetailsBtn = DirectButton(
            geom=(gui.find('**/Horiz_Arrow_UP'), gui.find('**/Horiz_Arrow_DN'),
                  gui.find('**/Horiz_Arrow_Rllvr'),
                  gui.find('**/Horiz_Arrow_UP')),
            relief=None,
            parent=self,
            pos=(-0.127, 0.0, -0.39),
            geom_hpr=(180, 0, 0),
            command=self.makeMoreDetailsPanel,
            scale=0.77,
            text=('', 'More Details', 'More Details', ''),
            text_scale=0.045,
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 1),
            text_pos=(-0.08, -0.01),
            text_align=TextNode.ARight)
Ejemplo n.º 11
0
 def enterVoteGameMode(self):
     render.hide()
     font = CIGlobals.getMickeyFont()
     imp = CIGlobals.getToonFont()
     box = DGG.getDefaultDialogGeom()
     geom = CIGlobals.getDefaultBtnGeom()
     self.container = DirectFrame()
     self.bg = OnscreenImage(image=box,
                             color=(1, 1, 0.75, 1),
                             scale=(2.4, 1.4, 1.4),
                             parent=self.container)
     self.title = OnscreenText(text="Vote  on  Game  Mode",
                               pos=(0, 0.5, 0),
                               font=font,
                               scale=(0.12),
                               parent=self.container,
                               fg=(1, 0.9, 0.3, 1))
     self.btnFrame = DirectFrame(parent=self.container, pos=(0.14, 0, 0))
     self.casualFrame = DirectFrame(parent=self.btnFrame, pos=(-0.80, 0, 0))
     self.ctfFrame = DirectFrame(parent=self.btnFrame, pos=(-0.125, 0, 0))
     self.kothFrame = DirectFrame(parent=self.btnFrame, pos=(0.55, 0, 0))
     self.casual = DirectButton(parent=self.casualFrame,
                                relief=None,
                                pressEffect=0,
                                image=('phase_4/maps/casual_neutral.png',
                                       'phase_4/maps/casual_hover.png',
                                       'phase_4/maps/casual_hover.png'),
                                image_scale=(0.9, 1, 1),
                                scale=0.4,
                                command=self.__pickedGameMode,
                                extraArgs=[GGG.GameModes.CASUAL])
     self.casual_votesLbl = OnscreenText(parent=self.casualFrame,
                                         text="0",
                                         pos=(0, -0.46, 0),
                                         font=imp)
     self.ctf = DirectButton(parent=self.ctfFrame,
                             relief=None,
                             pressEffect=0,
                             image=('phase_4/maps/ctf_neutral.png',
                                    'phase_4/maps/ctf_hover.png',
                                    'phase_4/maps/ctf_hover.png'),
                             image_scale=(0.9, 1, 1),
                             scale=0.4,
                             command=self.__pickedGameMode,
                             extraArgs=[GGG.GameModes.CTF])
     self.ctf_votesLbl = OnscreenText(parent=self.ctfFrame,
                                      text="0",
                                      pos=(0, -0.46, 0),
                                      font=imp)
     self.koth = DirectButton(parent=self.kothFrame,
                              relief=None,
                              pressEffect=0,
                              image=('phase_4/maps/koth_neutral.png',
                                     'phase_4/maps/koth_hover.png',
                                     'phase_4/maps/koth_hover.png'),
                              image_scale=(0.9, 1, 1),
                              scale=0.4,
                              command=self.__pickedGameMode,
                              extraArgs=[GGG.GameModes.KOTH])
     self.koth_votesLbl = OnscreenText(parent=self.kothFrame,
                                       text="0",
                                       pos=(0, -0.46, 0),
                                       font=imp)
     self.outcomeLbl = OnscreenText(parent=self.container,
                                    text="",
                                    pos=(0, -0.6, 0),
                                    font=imp,
                                    scale=0.1)
Ejemplo n.º 12
0
    def load(self):
        BookPage.load(self)
        # Let's load up the clouds.
        for pos, scale, hpr in self.cloudPos:
            cloud = loader.loadModel('phase_3.5/models/gui/cloud.bam')
            cloud.reparentTo(self)
            cloud.setPos(pos)
            cloud.setScale(scale)
            cloud.setHpr(hpr)
            self.clouds.append(cloud)

        for pos, scale, hpr, hood in self.hoodClouds:
            if not base.localAvatar.hasDiscoveredHood(
                    ZoneUtil.getZoneId(hood)):
                cloud = loader.loadModel('phase_3.5/models/gui/cloud.bam')
                cloud.reparentTo(self)
                cloud.setPos(pos)
                cloud.setScale(scale)
                cloud.setHpr(hpr)
                self.clouds.append(cloud)

        for pos, name in self.labelData:
            if base.localAvatar.hasDiscoveredHood(ZoneUtil.getZoneId(name)):
                text = name
                if base.localAvatar.hasTeleportAccess(
                        ZoneUtil.getZoneId(name)):
                    text = 'Go To\n' + text
                label = DirectButton(
                    parent=self,
                    relief=None,
                    pos=pos,
                    pad=(0.2, 0.16),
                    text=('', text, text, ''),
                    text_bg=Vec4(1, 1, 1, 0.4),
                    text_scale=0.055,
                    text_wordwrap=8,
                    rolloverSound=CIGlobals.getRolloverSound(),
                    clickSound=None,
                    pressEffect=0,
                    sortOrder=1,
                    text_font=CIGlobals.getToonFont())
                if base.localAvatar.hasTeleportAccess(
                        ZoneUtil.getZoneId(name)):
                    label['command'] = self.book.finished
                    label['extraArgs'] = [ZoneUtil.getZoneId(name)]
                label.resetFrameSize()
                self.labels.append(label)

        currHoodName = base.cr.playGame.hood.id
        currLocation = ''
        if base.localAvatar.zoneId == ZoneUtil.MinigameAreaId or base.localAvatar.getBattleZone(
        ) is not None:
            currLocation = ''
        elif ZoneUtil.getWhereName(base.localAvatar.zoneId) == 'playground':
            currLocation = 'Playground'
        elif ZoneUtil.getWhereName(
                base.localAvatar.zoneId) in ['street', 'interior']:
            currLocation = ZoneUtil.BranchZone2StreetName[
                ZoneUtil.getBranchZone(base.localAvatar.zoneId)]
        self.infoLabel = DirectLabel(relief=None,
                                     text='You are in: {0}\n{1}'.format(
                                         currHoodName, currLocation),
                                     scale=0.06,
                                     pos=(-0.4, 0, -0.74),
                                     parent=self,
                                     text_align=TextNode.ACenter)

        if currHoodName in [ZoneUtil.MinigameArea, ZoneUtil.BattleTTC]:
            currHoodName = base.cr.playGame.lastHood
        btpText = 'Back to Playground'
        btpEA = [ZoneUtil.getZoneId(currHoodName)]
        self.BTPButton = DirectButton(relief=None,
                                      text=btpText,
                                      geom=CIGlobals.getDefaultBtnGeom(),
                                      text_pos=(0, -0.018),
                                      geom_scale=(1.3, 1.11, 1.11),
                                      text_scale=0.06,
                                      parent=self,
                                      text_font=CIGlobals.getToonFont(),
                                      pos=(0.25, 0, -0.75),
                                      command=self.book.finished,
                                      extraArgs=btpEA,
                                      scale=0.7)

        icons = loader.loadModel('phase_3.5/models/gui/sos_textures.bam')
        self.icon = icons.find('**/teleportIcon')
        icons.detachNode()
    def enterBasePage(self):
        geom = CIGlobals.getDefaultBtnGeom()
        self.ghostBtn = DirectButton(geom=geom,
                                     text_scale=0.04,
                                     relief=None,
                                     scale=1.0,
                                     text="Toggle Ghost",
                                     pos=(-0.45, 0.15, 0.5),
                                     text_pos=(0, -0.01),
                                     command=TOGGLE_GHOST)
        self.bgBtn = DirectButton(geom=geom,
                                  text_scale=0.04,
                                  relief=None,
                                  scale=1.0,
                                  text="Toggle Background",
                                  pos=(-0.45, 0.15, 0.40),
                                  text_pos=(0, -0.01),
                                  command=self.toggleBackground)
        self.idBtn = DirectButton(geom=geom,
                                  text_scale=0.04,
                                  relief=None,
                                  scale=1.0,
                                  text="Toggle Player Ids",
                                  pos=(-0.45, 0.15, 0.3),
                                  text_pos=(0, -0.01),
                                  command=TOGGLE_PLAYER_IDS)
        self.kickBtn = DirectButton(geom=geom,
                                    text_scale=0.04,
                                    relief=None,
                                    scale=1.0,
                                    text="Kick/Ban Player",
                                    pos=(0.45, 0.15, 0.5),
                                    text_pos=(0, -0.01),
                                    command=self.openKickPage)
        self.systemMsgBtn = DirectButton(geom=geom,
                                         text_scale=0.04,
                                         relief=None,
                                         scale=1.0,
                                         text="System Message",
                                         pos=(-0.45, 0.15, 0.1),
                                         text_pos=(0, -0.01),
                                         command=self.openSysMsgPage)
        self.oobeBtn = DirectButton(geom=geom,
                                    text_scale=0.04,
                                    relief=None,
                                    scale=1.0,
                                    text="Toggle OOBE",
                                    pos=(-0.45, 0.15, 0.2),
                                    text_pos=(0, -0.01),
                                    command=base.oobe)
        self.directBtn = DirectButton(geom=geom,
                                      text_scale=0.04,
                                      relief=None,
                                      scale=1.0,
                                      text="Start DIRECT",
                                      pos=(-0.45, 0.15, 0.1),
                                      text_pos=(0, -0.01),
                                      command=self.doStartDirect)
        self.pstatsBtn = DirectButton(geom=geom,
                                      text_scale=0.04,
                                      relief=None,
                                      scale=1.0,
                                      text="Toggle PStats",
                                      pos=(-0.45, 0.15, 0.0),
                                      text_pos=(0, -0.01),
                                      command=self.togglePStats)
        self.pingBtn = DirectButton(geom=geom,
                                    text_scale=0.04,
                                    relief=None,
                                    scale=1.0,
                                    text="Toggle Ping",
                                    pos=(-0.45, 0.15, -0.1),
                                    text_pos=(0, -0.01),
                                    command=base.cr.togglePing)
        self.tokenBtn = DirectButton(geom=geom,
                                     text_scale=0.04,
                                     relief=None,
                                     scale=1.0,
                                     text="Modify Access Level",
                                     pos=(0.45, 0.15, 0.4),
                                     text_pos=(0, -0.01),
                                     command=self.book.finishedResume,
                                     extraArgs=[AdminTokenDialog, []])
        self.worldBtn = DirectButton(geom=geom,
                                     text_scale=0.04,
                                     relief=None,
                                     scale=1.0,
                                     text="Give World Access",
                                     pos=(0.45, 0.15, 0.3),
                                     text_pos=(0, -0.01),
                                     command=self.book.finishedResume,
                                     extraArgs=[WorldAccessDialog, []])
        self.allGagsBtn = DirectButton(geom=geom,
                                       text_scale=0.04,
                                       relief=None,
                                       scale=1.0,
                                       text="Restock All Gags",
                                       pos=(0.45, 0.15, 0.2),
                                       text_pos=(0, -0.01),
                                       command=SEND_REQ_UNLOCK_GAGS)

        self.allLaffBtn = DirectButton(geom=geom,
                                       text_scale=0.04,
                                       relief=None,
                                       scale=1.0,
                                       text="Refill Laff",
                                       pos=(0.45, 0.15, 0.1),
                                       text_pos=(0, -0.01),
                                       command=SEND_REQ_REFILL_LAFF)

        self.physDbgBtn = DirectButton(geom=geom,
                                       text_scale=0.039,
                                       relief=None,
                                       scale=1.0,
                                       text="Toggle Physics Debug",
                                       pos=(0.45, 0.15, 0.0),
                                       text_pos=(0, -0.01),
                                       command=self.togglePhysDbg)
        self.analyzeBtn = DirectButton(geom=geom,
                                       text_scale=0.04,
                                       relief=None,
                                       scale=1.0,
                                       text="Analyze Scene",
                                       pos=(0.45, 0.15, -0.1),
                                       text_pos=(0, -0.01),
                                       command=self.doAnalyzeScene)
        self.listBtn = DirectButton(geom=geom,
                                    text_scale=0.04,
                                    relief=None,
                                    scale=1.0,
                                    text="List Scene",
                                    pos=(0.45, 0.15, -0.2),
                                    text_pos=(0, -0.01),
                                    command=render.ls)
        self.noClipBtn = DirectButton(geom=geom,
                                      text_scale=0.04,
                                      relief=None,
                                      scale=1.0,
                                      text="Toggle No Clip",
                                      pos=(0.45, 0.15, -0.3),
                                      text_pos=(0, -0.01),
                                      command=self.toggleNoClip)
        base.cr.playGame.getPlace().maybeUpdateAdminPage()
        del geom