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

78
game/src/splashscreen.rpy Normal file
View File

@ -0,0 +1,78 @@
label splashscreen:
$ persistent.splashtype = random.randint(0,2000 - 1)
$ renpy.movie_cutscene("images/intros/CaveManonProductions.webm")
python:
import threading
import pygame
CACHE_PATH = config.basedir.replace("\\","/") + "/game/cache/"
if renpy.android:
CACHE_PATH = os.environ['ANDROID_PUBLIC'] + "/cache/"
# (src_image: FactorScale; name: string, ext: string) FactorScale refers to an image scaled using im.FactorScale()
def save_thumb(src_image, name, ext):
final = CACHE_PATH+"thmb_"+name+'.'+ext
if (os.path.exists(final)):
pass
else:
data = src_image.load() #Returns a pygame surface
pygame.image.save(data, final) #Saves the image to file
#print('O', final)
#save_thumb(NOT_UNLOCKED_COVER,"default","jpg")
g_thread_arr = []
path_testing = []
for x in (gallery_dic.items()):
key = x[0]
value = x[1]
#slow, roundabout but it works
if key in path_testing:
pass
else:
for c in CG_PATHS:
#print(c, os.path.basename(c['path']))
if (c['name'] == key):
final_dir = os.path.join(CACHE_PATH, "thmb_"+os.path.normpath(c['path']))
if (os.path.exists(final_dir)):
pass
else:
os.makedirs(final_dir)
path_testing.append(key)
for y in value:
#print(y['cg'])
if type(y['cg']) is Movie:
pass
else:
#save_thumb(y['cg'], y['fn'], y['ext'])
t = threading.Thread(target=save_thumb, args=(y['cg'], y['fn'], y['ext']))
g_thread_arr.append(t)
t.start()
pass
if persistent.autoup:
python:
UpdateCheck()
if persistent.updateresult != "No new version is available":
updater.update(persistent.updateWebServer, force=True)
stop sound
if (persistent.languaged_up is None):
call screen translator_popup
else:
python:
for th in g_thread_arr:
th.join()
return

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)