Ejemplo n.º 1
0
 def add_lab(txt, txt_tr, pos_z):
     lab = DirectLabel(text='',
                       pos=(-.1, 1, pos_z),
                       text_align=TextNode.ARight,
                       **menu_args.label_args)
     PageGui.transl_text(lab, txt, txt_tr)
     self.pagewidgets += [lab]
     return lab
Ejemplo n.º 2
0
 def build_page(self):
     mp_props = MultiplayerPageProps(
         self.props.cars, self.props.car_path, self.props.phys_path,
         self.props.tracks, self.props.tracks_tr, self.props.track_img,
         self.props.player_name, self.props.drivers_img,
         self.props.cars_img, self.props.drivers)
     sp_props = SingleplayerPageProps(
         self.props.cars, self.props.car_path, self.props.phys_path,
         self.props.tracks, self.props.tracks_tr, self.props.track_img,
         self.props.player_name, self.props.drivers_img,
         self.props.cars_img, self.props.has_save, self.props.season,
         self.props.season_tracks, self.props.drivers)
     sp_cb = lambda: self.menu.push_page(
         SingleplayerPage(self.menu, sp_props))
     mp_cb = lambda: self.menu.push_page(
         MultiplayerPage(self.menu, mp_props))
     supp_cb = lambda: eng.open_browser(self.props.support_url)
     cred_cb = lambda: self.menu.push_page(CreditPage(self.menu))
     menu_data = [('Single Player', _('Single Player'), sp_cb),
                  ('Multiplayer', _('Multiplayer'), mp_cb),
                  ('Options', _('Options'), self.on_options),
                  ('Support us', _('Support us'), supp_cb),
                  ('Credits', _('Credits'), cred_cb),
                  ('Quit', _('Quit'),
                   lambda: self.mdt.menu.gui.notify('on_exit'))]
     menu_gui = self.menu.gui
     widgets = [
         DirectButton(text='',
                      pos=(0, 1, .45 - i * .23),
                      command=menu[2],
                      **menu_gui.btn_args)
         for i, menu in enumerate(menu_data)
     ]
     for i, wdg in enumerate(widgets):
         PageGui.transl_text(wdg, menu_data[i][0], menu_data[i][1])
     if not self.props.multiplayer:
         widgets[-5]['state'] = DISABLED
         _fg = menu_gui.btn_args['text_fg']
         _fc = widgets[-5]['frameColor']
         clc = lambda val: max(0, val)
         fgc = (_fg[0] - .3, _fg[1] - .3, _fg[2] - .3, _fg[3])
         widgets[-5]['text_fg'] = fgc
         fcc = (clc(_fc[0] - .3), clc(_fc[1] - .3), clc(_fc[2] - .3),
                _fc[3])
         widgets[-5]['frameColor'] = fcc
     widgets += [
         OnscreenImage(self.props.title_img,
                       scale=(.8, 1, .8 * (380.0 / 772)),
                       parent=base.a2dTopRight,
                       pos=(-.8, 1, -.4))
     ]
     widgets[-1].setTransparency(True)
     map(self.add_widget, widgets)
     self.set_news()
     MainPageGui.build_page(self)
Ejemplo n.º 3
0
    def bld_page(self):
        menu_args = self.menu_args
        self.pagewidgets = []
        self.buttons = []

        joypad_lab = DirectLabel(text=_('Use the joypad when present'),
                                 pos=(-.1, 1, .8),
                                 text_align=TextNode.ARight,
                                 **menu_args.label_args)
        PageGui.transl_text(joypad_lab, 'Use the joypad when present',
                            _('Use the joypad when present'))
        self._joypad_cb = DirectCheckButton(
            pos=(.09, 1, .82),
            text='',
            indicatorValue=self.joystick,
            indicator_frameColor=menu_args.text_fg,
            **menu_args.checkbtn_args)
        if not has_pygame():
            self._joypad_cb['state'] = DISABLED

        def add_lab(text, pos_z):
            self.pagewidgets += [
                DirectLabel(text=text,
                            pos=(-.1, 1, pos_z),
                            text_align=TextNode.ARight,
                            **menu_args.label_args)
            ]

        def add_btn(text, pos_z):
            btn = DirectButton(pos=(.46, 1, pos_z),
                               text=text,
                               command=self.start_rec,
                               **menu_args.btn_args)
            btn['extraArgs'] = [btn]
            self.pagewidgets += [btn]
            self.buttons += [btn]

        buttons_data = [(_('Accelerate'), 'forward', .6),
                        (_('Brake/Reverse'), 'rear', .4),
                        (_('Left'), 'left', .2), (_('Right'), 'right', 0),
                        (_('Weapon'), 'button', -.2),
                        (_('Respawn'), 'respawn', -.4)]
        for btn_data in buttons_data:
            add_lab(btn_data[0], btn_data[2])
            add_btn(self.keys[btn_data[1]], btn_data[2])

        l_a = menu_args.label_args.copy()
        l_a['scale'] = .065
        self.hint_lab = DirectLabel(text=_('Press the key to record it'),
                                    pos=(0, 1, -.6),
                                    **l_a)
        self.hint_lab.hide()
        self.pagewidgets += [joypad_lab, self._joypad_cb, self.hint_lab]
        map(self.add_widget, self.pagewidgets)
        ThanksPageGui.bld_page(self)
Ejemplo n.º 4
0
    def bld_page(self):
        menu_args = self.menu_args
        self.pagewidgets = []

        def add_lab(txt, txt_tr, pos_z):
            lab = DirectLabel(text='',
                              pos=(-.1, 1, pos_z),
                              text_align=TextNode.ARight,
                              **menu_args.label_args)
            PageGui.transl_text(lab, txt, txt_tr)
            self.pagewidgets += [lab]
            return lab

        add_lab('Language', _('Language'), .7)
        self._lang_opt = DirectOptionMenu(text='',
                                          items=eng.languages,
                                          pos=(.49, 1, .7),
                                          initialitem=self.props.lang,
                                          command=self.__change_lang,
                                          **menu_args.option_args)
        add_lab('Volume', _('Volume'), .5)
        self._vol_slider = DirectSlider(pos=(.52, 0, .53),
                                        scale=.49,
                                        value=self.props.volume,
                                        frameColor=menu_args.btn_color,
                                        thumb_frameColor=menu_args.text_fg,
                                        command=self.__on_volume)
        add_lab('Fullscreen', _('Fullscreen'), .3)
        self._fullscreen_cb = DirectCheckButton(
            pos=(.12, 1, .32),
            text='',
            indicatorValue=self.props.fullscreen,
            indicator_frameColor=menu_args.text_fg,
            command=lambda val: eng.toggle_fullscreen(),
            **menu_args.checkbtn_args)
        add_lab('Resolution', _('Resolution'), .1)
        res2vec = lambda res: LVector2i(*[int(val) for val in res.split('x')])
        self._res_opt = DirectOptionMenu(
            text='',
            items=[
                'x'.join([str(el_res) for el_res in res])
                for res in eng.resolutions
            ],
            pos=(.49, 1, .1),
            initialitem='x'.join(str(res) for res in eng.closest_res),
            command=lambda res: eng.set_resolution(res2vec(res)),
            **menu_args.option_args)
        add_lab('Antialiasing', _('Antialiasing'), -.1)
        aa_next_lab = DirectLabel(text='',
                                  pos=(.2, 1, -.1),
                                  text_align=TextNode.ALeft,
                                  **menu_args.label_args)
        PageGui.transl_text(aa_next_lab, '(from the next execution)',
                            _('(from the next execution)'))
        self._aa_cb = DirectCheckButton(pos=(.12, 1, -.07),
                                        text='',
                                        indicatorValue=self.props.aa,
                                        indicator_frameColor=menu_args.text_fg,
                                        **menu_args.checkbtn_args)
        add_lab('Shaders', _('Shaders'), -.3)
        self._shaders_cb = DirectCheckButton(
            pos=(.12, 1, -.27),
            text='',
            indicatorValue=self.props.shaders,
            indicator_frameColor=menu_args.text_fg,
            **menu_args.checkbtn_args)
        # bld_in = lambda: self.menu.logic.push_page(
        #     InputPage(self.menu, self.props.joystick, self.props.keys))
        # it doesn't work if we go forward and back between options and input:
        # we should update keys
        input_btn = DirectButton(text='',
                                 pos=(0, 1, -.5),
                                 command=self.on_input_btn,
                                 **menu_args.btn_args)
        PageGui.transl_text(input_btn, 'Configure input', _('Configure input'))

        self.pagewidgets += [
            self._lang_opt, self._vol_slider, self._fullscreen_cb,
            self._res_opt, self._aa_cb, aa_next_lab, input_btn,
            self._shaders_cb
        ]
        map(self.add_widget, self.pagewidgets)
        idx = LangMgr().lang_codes.index(self.props.lang)
        self.__change_lang(eng.languages[idx])
        ThanksPageGui.bld_page(self)