Translation Boot Menu
This commit is contained in:
198
game/src/translation.rpy
Normal file
198
game/src/translation.rpy
Normal file
@ -0,0 +1,198 @@
|
||||
|
||||
init offset = -1
|
||||
|
||||
init python:
|
||||
list_langs_buttons = [
|
||||
['gui/flag/USofA.png', 'English', Language(None)],
|
||||
['gui/flag/spain.png', 'Español', Language('test')]
|
||||
]
|
||||
|
||||
class LangCave: #todo: think of a better name
|
||||
FPS = 1/60 #todo: fetch the actual target render framerate
|
||||
GRID_ROWS_COLS_TUPLE = (2, 1)
|
||||
|
||||
lang_buttons = []
|
||||
final_displayable = None
|
||||
|
||||
on_disable_interactable = False
|
||||
|
||||
LARGE_SIZE = (320, 240)
|
||||
LARGE_SPACING = 80
|
||||
SMALL_SIZE = (LARGE_SIZE[0]/2, LARGE_SIZE[1]/2)
|
||||
SMALL_SPACING = LARGE_SPACING/2
|
||||
|
||||
class LangButton(renpy.Displayable):
|
||||
def __init__(self, v, w, h, *childs, **kwargs):
|
||||
super(LangCave.LangButton, self).__init__(**kwargs)
|
||||
|
||||
self.childs = []
|
||||
|
||||
for ch in childs:
|
||||
child = renpy.displayable(ch)
|
||||
self.childs.append(child)
|
||||
|
||||
self.width = w
|
||||
self.height = h
|
||||
self.value = v
|
||||
self.hover = True #not/! breaks everything in renpy
|
||||
self.selected = False
|
||||
|
||||
def render(self, width, height, st, at):
|
||||
root_render = renpy.Render(self.width, self.height) #overall size i think
|
||||
|
||||
args = {}
|
||||
if (self.hover):
|
||||
args = {'matrixcolor': TintMatrix("#AAA")}
|
||||
|
||||
for ch in self.childs: #draw every child
|
||||
t = Transform(child=ch, **args)
|
||||
child_render = renpy.render(t, self.width, self.height, st, at)
|
||||
root_render.blit(child_render, (0, 0))
|
||||
|
||||
return root_render
|
||||
|
||||
def event(self, ev, ex, ey, st): #getting clicked on
|
||||
global LangCave
|
||||
|
||||
oldhover = self.hover
|
||||
if ((ex > 0 and ey > 0) and (ex < self.width and ey < self.height)):
|
||||
self.hover = False
|
||||
if (renpy.map_event(ev, 'mouseup_1')): #1026
|
||||
onclick_audio(True)
|
||||
self.value() #todo: change to function, as value doesn't make sense
|
||||
|
||||
if LangCave.on_disable_interactable:
|
||||
renpy.end_interaction(0)
|
||||
LangCave.on_disable_interactable = False
|
||||
recreate_lang_buttons_roulette_style(SMALL_SIZE) #mostly going to happen
|
||||
else:
|
||||
self.hover = True
|
||||
pass
|
||||
if self.hover == oldhover: #refresh on change
|
||||
renpy.redraw(self, 0)
|
||||
|
||||
def visit(self):
|
||||
return self.childs
|
||||
|
||||
@staticmethod
|
||||
def render():
|
||||
global LangButton
|
||||
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def render_langcave(st, at):
|
||||
global LangCave
|
||||
return LangCave.final_displayable, LangCave.FPS
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def procreate_lang_buttons(size, spacing):
|
||||
"""
|
||||
size: tuple
|
||||
"""
|
||||
global LangCave
|
||||
|
||||
LangCave.lang_buttons.clear()
|
||||
|
||||
for llb in list_langs_buttons:
|
||||
tfi = Transform(Image(llb[0]), xysize=size, fit='contain', yalign=0.5)
|
||||
solid = Solid((22,22,22), xysize=size)
|
||||
_button = Fixed(solid, tfi, xysize=size)
|
||||
button = LangCave.LangButton(llb[2], *size, _button)
|
||||
LangCave.on_disable_interactable = True
|
||||
|
||||
text = Text(llb[1], outlines=[(2, "#000", 0, 0)], xalign=0.5)
|
||||
final = VBox(text, button, style_prefix="navigation")
|
||||
#LangCave.lang_buttons.append(LangCave.LangButton(llb[2], *size, tfi))
|
||||
LangCave.lang_buttons.append(final)
|
||||
LangCave.final_displayable = Grid(*LangCave.GRID_ROWS_COLS_TUPLE, *LangCave.lang_buttons, spacing=spacing)
|
||||
|
||||
pass
|
||||
|
||||
@staticmethod
|
||||
def recreate_lang_buttons_roulette_style(size, spacing):
|
||||
global LangCave
|
||||
LangCave.lang_buttons.clear()
|
||||
|
||||
for llb in list_langs_buttons:
|
||||
tfi = Transform(Image(llb[0]), xsize=size[0], ysize=size[1], fit='contain', yalign=0.5)
|
||||
solid = Solid((22,22,22), xysize=(size))
|
||||
_button = Fixed(solid, tfi, xysize=(size))
|
||||
text = Text(llb[1], outlines=[(2, "#000", 0, 0)], xalign=0.5)
|
||||
penultimate = HBox(text, _button, style_prefix="navigation")
|
||||
|
||||
button = LangCave.LangButton(llb[2], *size, _button)
|
||||
|
||||
#final = VBox(text, button, style_prefix="navigation")
|
||||
#LangCave.lang_buttons.append(LangCave.LangButton(llb[2], *size, tfi))
|
||||
LangCave.lang_buttons.append(button)
|
||||
|
||||
LangCave.final_displayable = Vbox(*LangCave.lang_buttons, spacing=spacing)
|
||||
|
||||
pass
|
||||
|
||||
#if
|
||||
LangCave.procreate_lang_buttons(LangCave.LARGE_SIZE, LangCave.LARGE_SPACING)
|
||||
#else
|
||||
#recreate_lang_buttons_roulette_style(SMALL_SIZE) #mostly going to happen
|
||||
|
||||
|
||||
|
||||
screen lang_buttons(filename_label_functions):
|
||||
for f_l_f in filename_label_functions:
|
||||
use lang_button(f_l_f[0], f_l_f[1], f_l_f[2])
|
||||
|
||||
screen lang_button(filename, label, function):
|
||||
button:
|
||||
xsize 360
|
||||
ysize 240
|
||||
action [function, Return()]
|
||||
activate_sound "audio/ui/uiClick.wav"
|
||||
#hovered Transform(matrixcolor=TintMatrix('#fff'))
|
||||
fixed:
|
||||
xsize 360
|
||||
ysize 240
|
||||
#xfit True
|
||||
#yfit True
|
||||
#fit_first 'height'
|
||||
add "#222" xsize 360 ysize 240
|
||||
add Transform(Image(filename), xsize=360, fit='contain', yalign=0.5)
|
||||
text label xalign 0.5 yalign 0.0 xanchor 0.5 size 22 style "quick_button_text"
|
||||
|
||||
screen _translator_popup:
|
||||
tag menu
|
||||
add gui.main_menu_background
|
||||
#add gui.game_menu_background
|
||||
|
||||
vbox:
|
||||
style_prefix "navigation"
|
||||
hbox:
|
||||
label _("Choose Your Language")
|
||||
grid 2 1: #hardcoded for now
|
||||
spacing 20
|
||||
use lang_buttons(list_langs_buttons)
|
||||
|
||||
screen translator_popup:
|
||||
tag menu
|
||||
|
||||
frame:
|
||||
#background gui.main_menu_background
|
||||
background Transform(gui.main_menu_background, matrixcolor=TintMatrix('#555'))
|
||||
|
||||
padding (120, 40)
|
||||
vbox:
|
||||
style_prefix "navigation"
|
||||
hbox:
|
||||
label _("Choose Your Language")
|
||||
hbox:
|
||||
add Null(80, 40)
|
||||
add DynamicDisplayable(LangCave.render_langcave)
|
||||
|
||||
|
||||
screen translator_roulette:
|
||||
label _("Language")
|
||||
|
||||
vbox:
|
||||
add DynamicDisplayable(LangCave.render_langcave)
|
||||
|
Reference in New Issue
Block a user