1 from panda3d
.core
import Texture
, TextNode
2 from direct
.gui
.DirectGui
import DirectButton
, DirectCheckButton
, \
3 DirectOptionMenu
, DirectSlider
4 from direct
.gui
.DirectGuiGlobals
import FLAT
5 from direct
.gui
.OnscreenText
import OnscreenText
10 def __init__(self
, fsm
, lang_mgr
, opt_file
, music
):
12 self
._lang
_mgr
= lang_mgr
13 self
._opt
_file
= opt_file
15 self
._font
= base
.loader
.load_font('assets/fonts/Hanken-Book.ttf')
17 self
._font
.set_pixels_per_unit(60)
18 self
._font
.set_minfilter(Texture
.FTLinearMipmapLinear
)
19 self
._font
.set_outline((0, 0, 0, 1), .8, .2)
23 'text_font': self
._font
,
24 'text_fg': (.9, .9, .9, 1),
26 'frameColor': (.4, .4, .4, .14),
27 'rolloverSound': loader
.load_sfx('assets/audio/sfx/rollover.ogg'),
28 'clickSound': loader
.load_sfx('assets/audio/sfx/click.ogg')}
29 self
._common
_btn
= {'frameSize': (-3.8, 3.8, -.6, 1.2)} | self
._common
30 self
._common
_slider
= self
._common |
{
32 'thumb_frameColor': (.4, .4, .4, .4),
35 del self
._common
_slider
['rolloverSound']
36 del self
._common
_slider
['clickSound']
41 self
._widgets
+= [DirectButton(
42 text
=_('Play'), pos
=(0, 1, .6), command
=self
.on_play
,
44 self
._widgets
+= [DirectButton(
45 text
=_('Options'), pos
=(0, 1, .3), command
=self
.on_options
,
47 self
._widgets
+= [DirectButton(
48 text
=_('Support us'), pos
=(0, 1, 0), command
=self
.on_play
,
50 self
._widgets
+= [DirectButton(
51 text
=_('Credits'), pos
=(0, 1, -.3), command
=self
.on_play
,
53 self
._widgets
+= [DirectButton(
54 text
=_('Exit'), pos
=(0, 1, -.6), command
=self
.on_play
,
57 def _set_options(self
):
59 self
._lang
_funcs
= [lambda: _('English'), lambda: _('Italian')]
60 items
= [fnc() for fnc
in self
._lang
_funcs
]
64 }[self
._opt
_file
['settings']['language']]
65 hlc
= self
._common
_btn
['frameColor']
66 hlc
= (hlc
[0] + .2, hlc
[1] + .2, hlc
[2] + .2, hlc
[3] + .2)
67 btn
= DirectOptionMenu(
68 text
=_('Language'), items
=items
, initialitem
=inititem
,
69 pos
=(0, 1, .6), command
=self
.on_language
,
70 item_frameColor
=self
._common
_btn
['frameColor'],
71 popupMarker_frameColor
=self
._common
_btn
['frameColor'],
72 item_relief
=self
._common
_btn
['relief'],
73 item_text_font
=self
._common
_btn
['text_font'],
74 item_text_fg
=self
._common
_btn
['text_fg'],
75 textMayChange
=1, highlightColor
=hlc
,
77 btn
.popupMenu
['frameColor'] = self
._common
_btn
['frameColor']
78 btn
.popupMenu
['relief'] = self
._common
_btn
['relief']
79 self
._widgets
+= [btn
]
80 self
._widgets
+= [OnscreenText(
81 _('Volume'), pos
=(-.1, .3), font
=self
._common
['text_font'],
82 scale
=self
._common
['scale'], fg
=self
._common
['text_fg'],
83 align
=TextNode
.A_right
)]
84 self
._widgets
+= [DirectSlider(
86 value
=self
._opt
_file
['settings']['volume'],
87 command
=self
.on_volume
,
88 **self
._common
_slider
)]
89 self
._slider
= self
._widgets
[-1]
90 self
._widgets
+= [DirectButton(
91 text
=_('Back'), pos
=(0, 1, -.6), command
=self
.on_back
,
95 self
._fsm
.demand('Scene')
101 def on_language(self
, arg
):
103 _('English'): 'en_EN',
104 _('Italian'): 'it_IT'}[arg
]
105 self
._lang
_mgr
.set_lang(lang_code
)
106 self
._opt
_file
['settings']['language'] = lang_code
[:2]
107 self
._opt
_file
.store()
111 self
._opt
_file
['settings']['volume'] = self
._slider
['value']
112 self
._music
.set_volume(self
._slider
['value'])
115 self
._opt
_file
.store()
120 [wdg
.destroy() for wdg
in self
._widgets
]