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
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)
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)
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)