コード例 #1
0
 def addFriend(self, name, id):
     if self.makeItemsCheckBoxes:
         checkedImage = self.gui.find('**/inviteButtonChecked')
         uncheckedImage = self.gui.find('**/inviteButtonUnchecked')
         widget = DirectCheckButton(relief=None,
                                    scale=0.1,
                                    boxBorder=0.08,
                                    boxImage=(uncheckedImage, checkedImage,
                                              None),
                                    boxImageScale=10.0,
                                    boxRelief=None,
                                    text=name,
                                    text_align=TextNode.ALeft,
                                    text_scale=0.7,
                                    text_pos=(-3.7, -0.25),
                                    command=self.clickCallback,
                                    indicator_pos=(-4.8, 0.0, 0.0))
         widget['extraArgs'] = [widget]
     else:
         widget = DirectLabel(relief=None,
                              text=name,
                              text_align=TextNode.ALeft,
                              text_pos=(-0.6, 0.0, 0.0),
                              scale=0.055)
     widget.setPythonTag('id', id)
     self.addItem(widget)
     return
コード例 #2
0
 def addFriend(self, name, id):
     """ Add a friend to the list and maintain their id with a python tag. """
     if self.makeItemsCheckBoxes:
         checkedImage = self.gui.find("**/inviteButtonChecked")
         uncheckedImage = self.gui.find("**/inviteButtonUnchecked")
         widget = DirectCheckButton(
             relief=None,
             scale=0.1,
             boxBorder=0.08,
             boxImage=(uncheckedImage, checkedImage, None),
             boxImageScale=10.0,
             boxRelief=None,
             text=name,
             text_align=TextNode.ALeft,
             text_scale=0.7,
             text_pos=(-3.7, -0.25),
             command=self.clickCallback,
             indicator_pos=(-4.8, 0.0, 0.0),
         )
         widget["extraArgs"] = [widget]
     else:
         widget = DirectLabel(
             relief=None,
             text=name,
             text_align=TextNode.ALeft,
             text_pos=(-0.6, 0.0, 0.0),
             scale=0.055,
         )
     widget.setPythonTag("id", id)
     self.addItem(widget)
コード例 #3
0
    def __init__(self, scale, position, function, default=0):
        VirtualFileSystem.getGlobalPtr().mount(Filename("mf/checkbox.mf"), ".", VirtualFileSystem.MFReadOnly)

        self.egg = loader.loadModel("checkbox/checkbox.egg")
        box_image = (self.egg.find("**/check-empty"), self.egg.find("**/check-checked"), None)
        self.button = DirectCheckButton(boxImage=box_image, boxRelief=None, relief=None,
                                        command=function, scale=scale, pos=position)
コード例 #4
0
    def create(self):
        # Debug text
        txt_night = OnscreenText(text="it is night",
                                 pos=(0, -0.75),
                                 scale=0.2,
                                 fg=(1, 1, 1, 1))

        # Text displaying number players here
        txt_num_here = OnscreenText(
            text="You share the room\n with {} others".format(
                self.players_here),
            pos=(0, .25),
            scale=0.1,
            fg=(1, 1, 1, 1))

        self.text["txt_night"] = txt_night
        self.text["txt_num_here"] = txt_num_here

        # Kill button
        if self.level_holder.killer:
            btn_kill = DirectCheckButton(text="Kill",
                                         scale=0.1,
                                         command=self.kill)
            self.gui["btn_kill"] = btn_kill

        # timer
        self.timer = Timer(2)
コード例 #5
0
    def __init__(self, page):
        OptionsCategory.__init__(self, page)

        self.reso = ChoiceWidget(page,
                                 None,
                                 pos=(0, 0, 0.47),
                                 widgetName="Resolution",
                                 choiceTextScale=0.05,
                                 settingKeyName='resolution',
                                 mode=RESOLUTION)

        self.masprText = OnscreenText(text="Maintain aspect ratio?",
                                      scale=0.045,
                                      parent=page.book,
                                      align=TextNode.ALeft,
                                      pos=(-0.7, 0.4))
        self.maspr = DirectCheckButton(scale=0.07,
                                       parent=page.book,
                                       pos=(-0.19, 0, 0.41),
                                       command=self.__toggleMaspr)

        self.fs = ChoiceWidget(page,
                               None,
                               pos=(0, 0, 0.24),
                               widgetName="Fullscreen",
                               settingKeyName='fullscreen')

        self.aa = ChoiceWidget(page,
                               None,
                               pos=(0, 0, 0.01),
                               widgetName="Antialiasing",
                               settingKeyName='aa',
                               choiceTextScale=0.05)

        self.af = ChoiceWidget(page,
                               None, (0, 0, -0.22),
                               widgetName="Anisotropic Filtering",
                               settingKeyName='af',
                               mode=DEGREE)

        self.vsync = ChoiceWidget(page,
                                  None,
                                  pos=(0, 0, -0.45),
                                  widgetName="V-Sync",
                                  settingKeyName='vsync')

        self.widgets = [self.aa, self.af, self.vsync]

        self.discardChanges()
コード例 #6
0
    def _checkBox(self, parent, text, y):
        colours = self.app.theme.colours
        label = DirectLabel(
            parent=parent,
            text=text,
            text_scale=0.04,
            text_fg=colours.listboxButtons,
            relief=None,
        )
        align(label, left=0.38, midZ=y)

        result = DirectCheckButton(
            parent=parent,
            scale=0.04,
            pos=(0.35, 0, y),
            command=self.checkBoxChanged,
        )
        return result
コード例 #7
0
 def loadHostingTab(self):
     self.hostedPartyDisplay = self.attachNewNode('Hosting')
     self.hostedPartyDisplay.setPos(0.0, 0.0, 0.04)
     self.hostingBackgroundFlat = DirectFrame(
         parent=self.hostedPartyDisplay,
         relief=None,
         geom=self.hostingGui.find('**/background_flat'))
     self.hostingGuestList, self.hostingGuestLabel = self.createListAndLabel(
         self.hostedPartyDisplay, self.hostingGui, 'guests', 7)
     self.hostingActivityList, self.hostingActivityLabel = self.createListAndLabel(
         self.hostedPartyDisplay, self.hostingGui, 'activities', 1)
     self.hostingDecorationList, self.hostingDecorationLabel = self.createListAndLabel(
         self.hostedPartyDisplay, self.hostingGui, 'decorations', 1)
     self.hostingDateLabel = DirectLabel(
         parent=self.hostedPartyDisplay,
         relief=None,
         text='',
         scale=TTLocalizer.EPhostingDateLabel,
         text_align=TextNode.ACenter,
         text_wordwrap=10,
         textMayChange=True,
         pos=self.hostingGui.find('**/date_locator').getPos())
     pos = self.hostingGui.find('**/cancel_text_locator').getPos()
     self.hostingCancelButton = DirectButton(
         parent=self.hostedPartyDisplay,
         relief=None,
         geom=(self.hostingGui.find('**/cancelPartyButton_up'),
               self.hostingGui.find('**/cancelPartyButton_down'),
               self.hostingGui.find('**/cancelPartyButton_rollover'),
               self.hostingGui.find('**/cancelPartyButton_inactive')),
         text=TTLocalizer.EventsPageHostTabCancelButton,
         text_scale=TTLocalizer.EPhostingCancelButton,
         text_pos=(pos[0], pos[2]),
         command=self.__doCancelParty)
     pos = self.hostingGui.find('**/startParty_text_locator').getPos()
     self.partyGoButton = DirectButton(
         parent=self.hostedPartyDisplay,
         relief=None,
         geom=(self.hostingGui.find('**/startPartyButton_up'),
               self.hostingGui.find('**/startPartyButton_down'),
               self.hostingGui.find('**/startPartyButton_rollover'),
               self.hostingGui.find('**/startPartyButton_inactive')),
         text=TTLocalizer.EventsPageGoButton,
         text_scale=TTLocalizer.EPpartyGoButton,
         text_pos=(pos[0], pos[2]),
         textMayChange=True,
         command=self._startParty)
     self.publicPrivateLabel = DirectLabel(
         parent=self.hostedPartyDisplay,
         relief=None,
         text=TTLocalizer.EventsPageHostTabPublicPrivateLabel,
         text_scale=TTLocalizer.EPpublicPrivateLabel,
         text_align=TextNode.ACenter,
         pos=self.hostingGui.find('**/thisPartyIs_text_locator').getPos())
     pos = self.hostingGui.find('**/public_text_locator').getPos()
     checkedImage = self.hostingGui.find('**/checked_button')
     uncheckedImage = self.hostingGui.find('**/unchecked_button')
     self.publicButton = DirectCheckButton(
         parent=self.hostedPartyDisplay,
         relief=None,
         scale=0.1,
         boxBorder=0.08,
         boxImage=(uncheckedImage, checkedImage, None),
         boxImageScale=10,
         boxRelief=None,
         text=TTLocalizer.EventsPageHostTabToggleToPublic,
         text_align=TextNode.ALeft,
         text_scale=TTLocalizer.EPpublicButton,
         pos=pos,
         command=self.__changePublicPrivate,
         indicator_pos=(-0.7, 0, 0.2))
     pos = self.hostingGui.find('**/private_text_locator').getPos()
     self.privateButton = DirectCheckButton(
         parent=self.hostedPartyDisplay,
         relief=None,
         scale=0.1,
         boxBorder=0.08,
         boxImage=(uncheckedImage, checkedImage, None),
         boxImageScale=10,
         boxRelief=None,
         text=TTLocalizer.EventsPageHostTabToggleToPrivate,
         text_align=TextNode.ALeft,
         text_scale=TTLocalizer.EPprivateButton,
         pos=pos,
         command=self.__changePublicPrivate,
         indicator_pos=(-0.7, 0, 0.2))
     self.confirmCancelPartyEvent = 'confirmCancelPartyEvent'
     self.accept(self.confirmCancelPartyEvent, self.confirmCancelOfParty)
     self.confirmCancelPartyGui = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('confirmCancelPartyGui'),
         doneEvent=self.confirmCancelPartyEvent,
         message=TTLocalizer.EventsPageConfirmCancel %
         int(PartyGlobals.PartyRefundPercentage * 100.0),
         style=TTDialog.YesNo,
         okButtonText=OTPLocalizer.DialogYes,
         cancelButtonText=OTPLocalizer.DialogNo)
     self.confirmCancelPartyGui.doneStatus = ''
     self.confirmCancelPartyGui.hide()
     self.confirmTooLatePartyEvent = 'confirmTooLatePartyEvent'
     self.accept(self.confirmTooLatePartyEvent, self.confirmTooLateParty)
     self.confirmTooLatePartyGui = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('confirmTooLatePartyGui'),
         doneEvent=self.confirmTooLatePartyEvent,
         message=TTLocalizer.EventsPageTooLateToStart,
         style=TTDialog.Acknowledge)
     self.confirmTooLatePartyGui.hide()
     self.confirmPublicPrivateChangeEvent = 'confirmPublicPrivateChangeEvent'
     self.accept(self.confirmPublicPrivateChangeEvent,
                 self.confirmPublicPrivateChange)
     self.confirmPublicPrivateGui = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('confirmPublicPrivateGui'),
         doneEvent=self.confirmPublicPrivateChangeEvent,
         message=TTLocalizer.EventsPagePublicPrivateNoGo,
         style=TTDialog.Acknowledge)
     self.confirmPublicPrivateGui.hide()
     self.cancelPartyResultGuiEvent = 'cancelPartyResultGuiEvent'
     self.accept(self.cancelPartyResultGuiEvent,
                 self.cancelPartyResultGuiCommand)
     self.cancelPartyResultGui = TTDialog.TTGlobalDialog(
         dialogName=self.uniqueName('cancelPartyResultGui'),
         doneEvent=self.cancelPartyResultGuiEvent,
         message=TTLocalizer.EventsPageCancelPartyResultOk % 0,
         style=TTDialog.Acknowledge)
     self.cancelPartyResultGui.doneStatus = ''
     self.cancelPartyResultGui.hide()
     self.__setPublicPrivateButton()
     return
コード例 #8
0
    def setup(self, node):
        colours = self.app.theme.colours

        SLIDER_PROPERTIES = {
            'range': (0, 100),
            'pageSize': 100,
            'scrollSize': 0,
            'parent': node,
            'scale': 0.5,
            'frameSize': (-0.85, 0.85, -0.08, 0.08),
            'thumb_relief': DGG.RIDGE,
        }

        TEXT_PROPERTIES = {
            'parent': node,
            'text_scale': 0.08,
            'text_fg': colours.listboxButtons,
            'text_align': TextNode.A_left,
            'relief': None,
            'textMayChange': True,
        }

        label = DirectLabel(
            text='Music volume',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=0.25)

        self.musicSlider = DirectSlider(**SLIDER_PROPERTIES)
        align(self.musicSlider, left=-0.2, midZ=0.25)

        self.musicLabel = DirectLabel(
            text='100',
            **TEXT_PROPERTIES
        )
        align(self.musicLabel, left=0.70, midZ=0.25)

        label = DirectLabel(
            text='Enable music',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=0.10)

        self.musicCheckbox = DirectCheckButton(
            scale=0.06,
            parent=node,
            command=self.applySettings,
        )
        align(self.musicCheckbox, left=-0.2, midZ=0.10)

        label = DirectLabel(
            text='Sound volume',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=-0.05)

        self.soundSlider = DirectSlider(**SLIDER_PROPERTIES)
        align(self.soundSlider, left=-0.2, midZ=-0.05)

        self.soundLabel = DirectLabel(
            text='100',
            **TEXT_PROPERTIES
        )
        align(self.soundLabel, left=0.70, midZ=-0.05)

        label = DirectLabel(
            text='Enable sound',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=-0.20)

        self.soundCheckbox = DirectCheckButton(
            scale=0.06,
            parent=node,
            command=self.applySettings,
        )
        align(self.soundCheckbox, left=-0.2, midZ=-0.20)

        BUTTON_PROPERTIES = {
            'scale': 0.04,
            'frameSize': (-5.0, 5.0, -1.0, 1.5),
            'parent': node,
        }

        button = DirectButton(
            text='Back',
            command=self.parent.showMainButtons,
            **BUTTON_PROPERTIES
        )
        align(button, right=0.87, z=-0.63)
コード例 #9
0
    def setup(self, node):
        colours = self.app.theme.colours
        TEXT_PROPERTIES = {
            'parent': node,
            'text_scale': 0.08,
            'text_fg': colours.listboxButtons,
            'text_align': TextNode.A_left,
            'relief': None,
        }

        DROPDOWN_PROPERTIES = {
            'parent': node,
            'scale': 0.06,
            'textMayChange': True,
            'frameSize': (-0.5, 12, -0.7, 1.05),
            'command': self.optionChanged,
        }

        label = DirectLabel(
            text='Screen resolution',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=0.25)

        self.resolutionMenu = DirectOptionMenu(
            # If there isn't at least one item by default, the text alignment
            # will be all messed up when adding the resolutions.
            items=[''],
            **DROPDOWN_PROPERTIES
        )
        align(self.resolutionMenu, left=0, midZ=0.25)

        label = DirectLabel(
            text='Display mode',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=0.10)

        self.displayModeMenu = DirectOptionMenu(
            items=self.DISPLAY_MODE_OPTIONS,
            **DROPDOWN_PROPERTIES
        )
        align(self.displayModeMenu, left=0, midZ=0.10)

        label = DirectLabel(
            text='Detail level',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=-0.05)

        self.detailMenu = DirectOptionMenu(
            items=list(self.DETAIL_LEVEL_OPTIONS.keys()),
            **DROPDOWN_PROPERTIES
        )
        align(self.detailMenu, left=0, midZ=-0.05)

        label = DirectLabel(
            text='Show FPS',
            **TEXT_PROPERTIES
        )
        align(label, left=-0.85, midZ=-0.20)

        self.showFPS = DirectCheckButton(
            scale=0.06,
            parent=node,
            pos=(0, 0, -0.20),
            command=self.optionChanged
        )
        align(self.showFPS, left=0, midZ=-0.20)

        BUTTON_PROPERTIES = {
            'scale': 0.04,
            'frameSize': (-5.0, 5.0, -1.0, 1.5),
            'parent': node,
        }

        self.saveButton = DirectButton(
            text='Save',
            command=self.saveSettings,
            **BUTTON_PROPERTIES
        )
        align(self.saveButton, left=-0.87, z=-0.63)
        self.saveButton.hide()

        self.finishButton = DirectButton(
            text='Back',
            command=self.cancelPressed,
            **BUTTON_PROPERTIES
        )
        align(self.finishButton, right=0.87, z=-0.63)
コード例 #10
0
ファイル: login.py プロジェクト: H3LLB0Y/Centipede
    def loginScreen(self, statusText):
        # creates a basic login screen that asks for a username/password

        boxloc = Vec3(0.0, 0.0, 0.0)
        # all items in the login form will have a position relative to this
        # this makes it easier to shift the entire form around once we have
        # some graphics to display with it without having to change the
        # positioning of every form element

        # p is the position of the form element relative to the boxloc
        # coordinates set above it is changed for every form element
        p = boxloc + Vec3(-0.22, 0.09, 0.0)
        self.usernameText = OnscreenText(text="Username:"******"Username: "******"",
                                       pos=p,
                                       scale=.04,
                                       initialText=self.username,
                                       numLines=1)
        # Username textbox where you type in your username

        p = boxloc + Vec3(0.4, 0.0, 0.09)
        self.usernameStoreBox = DirectCheckButton(
            text="Save Username?",
            pos=p,
            scale=.04,
            indicatorValue=self.storeUsername)
        # Toggle to save/not save your username

        p = boxloc + Vec3(-0.22, 0.0, 0.0)
        self.passwordText = OnscreenText(text="Password:"******"Password: "******"",
                                       pos=p,
                                       scale=.04,
                                       initialText=self.password,
                                       numLines=1,
                                       obscured=1)
        # Password textbox where you type in your password
        # Note - obscured = 1 denotes that all text entered will be replaced
        # with a * like a standard password box

        p = boxloc + Vec3(0.4, 0.0, 0.0)
        self.passwordStoreBox = DirectCheckButton(
            text="Save Password?",
            pos=p,
            scale=.04,
            indicatorValue=self.storePassword)
        # Toggle to save/not save your username

        p = boxloc + Vec3(0, 0, -0.090)
        self.loginButton = DirectButton(text="Login",
                                        pos=p,
                                        scale=0.048,
                                        relief=DGG.GROOVE,
                                        command=self.attemptLogin)
        # The 'Quit' button that will trigger the Quit function
        # when clicked

        p = boxloc + Vec3(0.95, 0, -0.9)
        self.createAccButton = DirectButton(text="Create Account",
                                            scale=0.050,
                                            pos=p,
                                            relief=DGG.GROOVE,
                                            command=self.attemptCreateAccount)
        # Made a quick button for adding accounts. Its fugly

        p = boxloc + Vec3(1.20, 0, -0.9)
        self.quitButton = DirectButton(text="Quit",
                                       pos=p,
                                       scale=0.048,
                                       relief=DGG.GROOVE,
                                       command=self.showbase.quit)
        # The 'Quit' button that will trigger the Quit function
        # when clicked

        p = boxloc + Vec3(0, -0.4, 0)
        self.statusText = OnscreenText(text=statusText,
                                       pos=p,
                                       scale=0.043,
                                       fg=(1, 0.5, 0, 1),
                                       align=TextNode.ACenter)
コード例 #11
0
ファイル: optionsmenu.py プロジェクト: grimfang/owp_ajaw
    def __init__(self):
        """Default constructor"""
        # create a main frame as big as the window
        self.frameMain = DirectFrame(
            # set framesize the same size as the window
            frameSize=(base.a2dLeft, base.a2dRight, base.a2dTop,
                       base.a2dBottom),
            image="LogoTextGlow.png",
            image_scale=(1.06 / 2.0, 1, 0.7 / 2.0),
            image_pos=(0, 0, 0.7),
            # position center
            pos=(0, 0, 0),
            # set tramsparent background color
            frameColor=(0, 0, 0, 0))
        self.frameMain.setTransparency(1)
        self.frameMain.setBin("fixed", 100)

        sliderscale = 0.5
        buttonScale = 0.25
        textscale = 0.1
        checkboxscale = 0.05
        left = -0.5
        right = 0.5

        self.sliderTextspeed = DirectSlider(
            scale=sliderscale,
            pos=(left, 0, 0.2),
            range=(0.2, 0.01),
            scrollSize=0.01,
            text=_("Textspeed %0.1f%%") % (base.textWriteSpeed * 10),
            text_scale=textscale,
            text_align=TextNode.ACenter,
            text_pos=(0.0, 0.15),
            text_fg=(1, 1, 1, 1),
            thumb_frameColor=(0.65, 0.65, 0.0, 1),
            thumb_relief=DGG.FLAT,
            frameColor=(0.15, 0.15, 0.15, 1),
            value=base.textWriteSpeed,
            command=self.sliderTextspeed_ValueChanged)
        self.sliderTextspeed.reparentTo(self.frameMain)

        self.cbParticles = DirectCheckButton(
            text=_(" Enable Particles"),
            text_fg=(1, 1, 1, 1),
            text_shadow=(0, 0, 0, 0.35),
            pos=(left, 0, -0.0),
            scale=checkboxscale,
            frameColor=(0, 0, 0, 0),
            command=self.cbParticles_CheckedChanged,
            rolloverSound=None,
            clickSound=None,
            pressEffect=False,
            boxPlacement="below",
            boxBorder=0.8,
            boxRelief=DGG.FLAT,
            indicator_scale=1.5,
            indicator_text_fg=(0.65, 0.65, 0.0, 1),
            indicator_text_shadow=(0, 0, 0, 0.35),
            indicator_frameColor=(0.15, 0.15, 0.15, 1),
            indicatorValue=base.particleMgrEnabled)
        self.cbParticles.indicator['text'] = (' ', 'x')
        self.cbParticles.indicator['text_pos'] = (0, 0.1)
        #self.cbParticles.indicator.setX(self.cbParticles.indicator, -0.5)
        #self.cbParticles.indicator.setZ(self.cbParticles.indicator, -0.1)
        #self.cbParticles.setFrameSize()
        self.cbParticles.setTransparency(1)
        self.cbParticles.reparentTo(self.frameMain)

        volume = base.musicManager.getVolume()
        self.sliderVolume = DirectSlider(
            scale=sliderscale,
            pos=(left, 0, -0.35),
            range=(0, 1),
            scrollSize=0.01,
            text=_("Volume %d%%") % volume * 100,
            text_scale=textscale,
            text_align=TextNode.ACenter,
            text_pos=(.0, 0.15),
            text_fg=(1, 1, 1, 1),
            thumb_frameColor=(0.65, 0.65, 0.0, 1),
            thumb_relief=DGG.FLAT,
            frameColor=(0.15, 0.15, 0.15, 1),
            value=volume,
            command=self.sliderVolume_ValueChanged)
        self.sliderVolume.reparentTo(self.frameMain)

        self.lblControltype = DirectLabel(text=_("Control type"),
                                          text_fg=(1, 1, 1, 1),
                                          text_shadow=(0, 0, 0, 0.35),
                                          frameColor=(0, 0, 0, 0),
                                          scale=textscale / 2,
                                          pos=(right, 0, 0.27))
        self.lblControltype.setTransparency(1)
        self.lblControltype.reparentTo(self.frameMain)
        selectedControlType = 0
        if base.controlType == "MouseAndKeyboard":
            selectedControlType = 1
        self.controltype = DirectOptionMenu(
            pos=(right, 0, 0.18),
            text_fg=(1, 1, 1, 1),
            scale=0.1,
            items=[_("Keyboard"), _("Keyboard + Mouse")],
            initialitem=selectedControlType,
            frameColor=(0.15, 0.15, 0.15, 1),
            popupMarker_frameColor=(0.65, 0.65, 0.0, 1),
            popupMarker_relief=DGG.FLAT,
            highlightColor=(0.65, 0.65, 0.0, 1),
            relief=DGG.FLAT,
            command=self.controlType_Changed)
        self.controltype.reparentTo(self.frameMain)
        b = self.controltype.getBounds()
        xPos = right - ((b[1] - b[0]) / 2.0 * 0.1)
        self.controltype.setX(xPos)
        setItems(self.controltype)
        self.controltype.setItems = setItems
        self.controltype.showPopupMenu = showPopupMenu
        self.controltype.popupMarker.unbind(DGG.B1PRESS)
        self.controltype.popupMarker.bind(DGG.B1PRESS, showPopupMenu)
        self.controltype.unbind(DGG.B1PRESS)
        self.controltype.bind(DGG.B1PRESS, showPopupMenuExtra,
                              [self.controltype])

        isChecked = not base.AppHasAudioFocus
        img = None
        if base.AppHasAudioFocus:
            img = "AudioSwitch_on.png"
        else:
            img = "AudioSwitch_off.png"
        self.cbVolumeMute = DirectCheckBox(
            text=_("Mute Audio"),
            text_scale=0.5,
            text_align=TextNode.ACenter,
            text_pos=(0.0, 0.65),
            text_fg=(1, 1, 1, 1),
            pos=(right, 0, -0.35),
            scale=0.21 / 2.0,
            command=self.cbVolumeMute_CheckedChanged,
            rolloverSound=None,
            clickSound=None,
            relief=None,
            pressEffect=False,
            isChecked=isChecked,
            image=img,
            image_scale=0.5,
            checkedImage="AudioSwitch_off.png",
            uncheckedImage="AudioSwitch_on.png")
        self.cbVolumeMute.setTransparency(1)
        self.cbVolumeMute.setImage()
        self.cbVolumeMute.reparentTo(self.frameMain)

        sensitivity = base.mouseSensitivity
        self.sliderSensitivity = DirectSlider(
            scale=sliderscale,
            pos=(right, 0, -0.075),
            range=(0.5, 2),
            scrollSize=0.01,
            text=_("Mouse Sensitivity %0.1fx") % sensitivity,
            text_scale=textscale,
            text_align=TextNode.ACenter,
            text_pos=(.0, 0.15),
            text_fg=(1, 1, 1, 1),
            thumb_frameColor=(0.65, 0.65, 0.0, 1),
            thumb_relief=DGG.FLAT,
            frameColor=(0.15, 0.15, 0.15, 1),
            value=sensitivity,
            command=self.sliderSensitivity_ValueChanged)
        self.sliderSensitivity.reparentTo(self.frameMain)
        if base.controlType == "Gamepad":
            self.sliderSensitivity.hide()

        # create the back button
        self.btnBack = DirectButton(
            scale=buttonScale,
            # position on the window
            pos=(0, 0, base.a2dBottom + 0.15),
            frameColor=(0, 0, 0, 0),
            # text properties
            text=_("Back"),
            text_scale=0.5,
            text_fg=(1, 1, 1, 1),
            text_pos=(0.0, -0.15),
            text_shadow=(0, 0, 0, 0.35),
            text_shadowOffset=(-0.05, -0.05),
            # sounds that should be played
            rolloverSound=None,
            clickSound=None,
            pressEffect=False,
            relief=None,
            # the event which is thrown on clickSound
            command=lambda: base.messenger.send("options_back"))
        self.btnBack.setTransparency(1)
        self.btnBack.reparentTo(self.frameMain)

        self.hide()
コード例 #12
0
ファイル: __init__.py プロジェクト: IlyaFaer/ForwardOnlyGame
    def _show_conf(self):
        """Show game configurations GUI."""
        clear_wids(self.save_wids)
        clear_wids(self.tactics_wids)
        clear_wids(self.cred_wids)

        self.conf_wids.append(
            DirectLabel(  # Resolution:
                parent=self._main_fr,
                text=base.labels.MAIN_MENU[22],  # noqa: F821,
                text_fg=RUST_COL,
                text_scale=0.04,
                text_font=base.main_font,  # noqa: F821
                pos=(-0.3, 0, 0.5),
                frameColor=(0, 0, 0, 0),
            ))

        if base.game_config.resolution in RESOLUTIONS:  # noqa: F821
            res_ind = RESOLUTIONS.index(
                base.game_config.resolution)  # noqa: F821
        else:
            res_ind = len(RESOLUTIONS)
            RESOLUTIONS.append(base.game_config.resolution)  # noqa: F821

        res_chooser = ListChooser()
        res_chooser.prepare(self._main_fr, (0.1, 0, 0.51), RESOLUTIONS,
                            res_ind)
        self.conf_wids.append(res_chooser)

        self.conf_wids.append(
            DirectLabel(  # Tutorial:
                parent=self._main_fr,
                text=base.labels.MAIN_MENU[23],  # noqa: F821,
                text_fg=RUST_COL,
                text_scale=0.04,
                text_font=base.main_font,  # noqa: F821
                pos=(-0.3, 0, 0.4),
                frameColor=(0, 0, 0, 0),
            ))
        tutorial_check = DirectCheckButton(
            parent=self._main_fr,
            indicatorValue=base.game_config.tutorial_enabled,  # noqa: F821
            clickSound=self.click_snd,
            scale=0.02,
            pos=(0.12, 0, 0.41),
            boxBorder=0,
            boxImage=(GUI_PIC + "no_check.png", GUI_PIC + "check.png", None),
            boxRelief=None,
            relief="flat",
            frameColor=RUST_COL,
        )
        tutorial_check.setTransparency(TransparencyAttrib.MAlpha)
        self.conf_wids.append(tutorial_check)

        self.conf_wids.append(
            DirectLabel(  # Language
                parent=self._main_fr,
                text=base.labels.MAIN_MENU[24],  # noqa: F821,
                text_fg=RUST_COL,
                text_scale=0.04,
                text_font=base.main_font,  # noqa: F821
                pos=(-0.3, 0, 0.3),
                frameColor=(0, 0, 0, 0),
            ))

        lang_chooser = ListChooser()
        lang_chooser.prepare(
            self._main_fr,
            (0.1, 0, 0.31),
            LANGUAGES,
            LANGUAGES.index(base.game_config.language),  # noqa: F821,
        )
        self.conf_wids.append(lang_chooser)

        self.conf_wids.append(
            DirectLabel(  # Framerate limit
                parent=self._main_fr,
                text=base.labels.MAIN_MENU[29],  # noqa: F821,
                text_fg=RUST_COL,
                text_scale=0.04,
                text_font=base.main_font,  # noqa: F821
                pos=(-0.3, 0, 0.21),
                frameColor=(0, 0, 0, 0),
            ))

        fps_chooser = ListChooser()
        fps_chooser.prepare(
            self._main_fr,
            (0.1, 0, 0.22),
            FPS,
            FPS.index(str(base.game_config.fps_limit)),  # noqa: F821
        )
        self.conf_wids.append(fps_chooser)

        self.conf_wids.append(
            DirectLabel(  # FPS meter:
                parent=self._main_fr,
                text=base.labels.MAIN_MENU[36],  # noqa: F821,
                text_fg=RUST_COL,
                text_scale=0.04,
                text_font=base.main_font,  # noqa: F821
                pos=(-0.3, 0, 0.11),
                frameColor=(0, 0, 0, 0),
            ))

        fps_meter = DirectCheckButton(
            parent=self._main_fr,
            indicatorValue=base.game_config.fps_meter,  # noqa: F821
            clickSound=self.click_snd,
            scale=0.02,
            pos=(0.12, 0, 0.12),
            boxBorder=0,
            boxImage=(GUI_PIC + "no_check.png", GUI_PIC + "check.png", None),
            boxRelief=None,
            relief="flat",
            frameColor=RUST_COL,
        )
        fps_meter.setTransparency(TransparencyAttrib.MAlpha)
        self.conf_wids.append(fps_meter)

        self.conf_wids.append(
            DirectLabel(  # Multi threading:
                parent=self._main_fr,
                text=base.labels.MAIN_MENU[37],  # noqa: F821,
                text_fg=RUST_COL,
                text_scale=0.04,
                text_font=base.main_font,  # noqa: F821
                pos=(-0.3, 0, 0.01),
                frameColor=(0, 0, 0, 0),
            ))

        multi_threading = DirectCheckButton(
            parent=self._main_fr,
            indicatorValue=base.game_config.multi_threading,  # noqa: F821
            clickSound=self.click_snd,
            scale=0.02,
            pos=(0.12, 0, 0.02),
            boxBorder=0,
            boxImage=(GUI_PIC + "no_check.png", GUI_PIC + "check.png", None),
            boxRelief=None,
            relief="flat",
            frameColor=RUST_COL,
        )
        multi_threading.setTransparency(TransparencyAttrib.MAlpha)
        self.conf_wids.append(multi_threading)

        self.conf_wids.append(
            DirectLabel(  # Multi threading:
                parent=self._main_fr,
                text=base.labels.MAIN_MENU[38],  # noqa: F821,
                text_fg=SILVER_COL,
                text_scale=0.025,
                text_font=base.main_font,  # noqa: F821
                pos=(-0.3, 0, -0.03),
                frameColor=(0, 0, 0, 0),
            ))

        but = DirectButton(  # Save and restart
            parent=self._main_fr,
            text_scale=0.045,
            text_fg=RUST_COL,
            text=base.labels.MAIN_MENU[25],  # noqa: F821,
            text_font=base.main_font,  # noqa: F821
            relief=None,
            command=self._save_conf_and_restart,
            extraArgs=[
                res_chooser,
                tutorial_check,
                lang_chooser,
                fps_chooser,
                fps_meter,
                multi_threading,
            ],
            pos=(0.1, 0, -0.2),
            clickSound=self.click_snd,
        )
        self.bind_button(but)
        self.conf_wids.append(but)