Translation Boot Menu

This commit is contained in:
2022-10-21 20:51:52 +11:00
parent e74d634799
commit ab34f00ae0
10 changed files with 1237 additions and 39 deletions

198
game/src/translation.rpy Normal file
View 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)