diff --git a/game/screens.rpy b/game/screens.rpy index b7595df..326a9bb 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -971,7 +971,23 @@ screen preferences(): label _("Naughty Stuff") textbutton _("Enable Lewd Images") action [Function(onclick_audio, persistent.lewd), ToggleVariable("persistent.lewd", True, False)] - use translator_roulette + vbox: + style_prefix "check" + label _("Language") + vpgrid: + rows len(languages) + cols 1 + mousewheel True + draggable True + xsize 300 + ysize 250 + if len(languages)>4: + scrollbars "vertical" + for lang in languages: + fixed: + xsize 300 + ysize 60 + use lang_button(lang) vbox: style_prefix "check" diff --git a/game/src/splashscreen.rpy b/game/src/splashscreen.rpy index 44f1cf3..c807f0d 100644 --- a/game/src/splashscreen.rpy +++ b/game/src/splashscreen.rpy @@ -6,7 +6,7 @@ label splashscreen: if (persistent.languaged_up is None): $ persistent.languaged_up = True $ preferences.set_volume('ui', config.default_sfx_volume) # hack - call screen translator_popup + call screen lang_sel return diff --git a/game/src/translation.rpy b/game/src/translation.rpy index 15cc3ff..f868da7 100644 --- a/game/src/translation.rpy +++ b/game/src/translation.rpy @@ -1,259 +1,129 @@ - init offset = -1 -""" -In absolute hindsight, this could have been done very similar to bonus flash image -instead of the dynamic displayable stuff -""" +screen OkPrompt(message, go_menu): + + modal True + + zorder 200 + + style_prefix "confirm" + + add "gui/overlay/confirm.png" + + frame: + + vbox: + xalign .5 + yalign .5 + spacing 30 + + label _(message): + style "confirm_prompt" + xalign 0.5 + + hbox: + xalign 0.5 + spacing 100 + + textbutton _("OK") activate_sound "audio/ui/uiClick.wav" action If(go_menu, true=MainMenu(False,False), false=Hide()) + +default persistent.seenWarning = [] + init python: - list_langs_buttons = [ + + from math import ceil + + notice = _("NOTICE: Please keep in mind this is a fan translation, and as such it may not be completely accurate to the original intent of any written lines.") + + languages = [ {'image': 'gui/flag/USofA.png', 'name': 'English', 'value': None }, {'image': 'gui/flag/Mexico.png', 'name': 'EspaƱol', 'value': 'es'} ] - class LangCave: #todo: think of a better name - FPS = 1/60 #todo: fetch the actual target render framerate - #GRID_ROWS_COLS_TUPLE = (4, (len(list_langs_buttons)//4)) - MAX_ITEMS_IN_ROW = 4 #column as well - GRID_ROWS_COLS_TUPLE = (MAX_ITEMS_IN_ROW, - len(list_langs_buttons)//MAX_ITEMS_IN_ROW + 1*((len(list_langs_buttons)%MAX_ITEMS_IN_ROW)>0)) + #This was done so it would work with whatever amount of languages you wanted, I tried it with up to 200 and it worked nicely. - lang_buttons = [] - final_displayable = None + maxItems = len(languages) + maxRows = ceil(maxItems/4) + if maxItems > 4: + maxItems = 4*maxRows - on_disable_interactable = False +init: + transform renpysdumb: # Needed to scale down the imagebuttons. + zoom 0.5 + transform icon: #For the preferences screen + truecenter + zoom 0.1 - LARGE_SIZE = (320, 240) - LARGE_SPACING = (80, 40) - SMALL_SIZE = (LARGE_SIZE[0]//3, LARGE_SIZE[1]//3) - SMALL_SPACING = (LARGE_SPACING[0]//2, LARGE_SPACING[1]//2) + transform glowie(img): + img + easein_cubic 0.30 matrixcolor TintMatrix(Color((255, 255, 255))) - def _redraw(self, oldlang): - if oldlang != _preferences.language: - for lb in LangCave.lang_buttons: - lb.selected = False - self.selected = True + transform darkie(img): + img + easeout_cubic 0.30 matrixcolor TintMatrix(Color((255/2, 255/2, 255/2))) - for lb in LangCave.lang_buttons: - renpy.redraw(lb, 0) +screen lang_sel: - if LangCave.on_disable_interactable: - if oldlang != _preferences.language or (oldlang is None): - LangCave.on_disable_interactable = False - LangCave.recreate_lang_buttons_roulette_style(LangCave.SMALL_SIZE) #mostly going to happen - renpy.end_interaction(0) - - pass - - class LangButton(renpy.Displayable): - def __init__(self, v, child, **kwargs): - super(LangCave.LangButton, self).__init__(**kwargs) - - #self.childs = [] - - self.child = renpy.displayable(child) - # self.childs.append(child) - - - self.width = 0#w - self.height = 0#h - self.value = v - #self.function = Language(v) - self.hover = True #renpy can't handle not/! - self.selected = False - - def render(self, width, height, st, at): - root_render = renpy.Render(self.width, self.height) #canvas - - args = {} - if (self.hover): - args = {'matrixcolor': TintMatrix("#AAA")} - - if (LangCave.on_disable_interactable == False and self.selected): - args = {} - - #force rendering to get width and height - self.width, self.height = renpy.render(Transform(child=self.child), 0, 0, 0.0, 0.0).get_size() - #for ch in self.childs: #draw every child - t = Transform(child=self.child, **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 - if not self.selected: #don't double click - onclick_audio(False) - - #just in case - oldlang = _preferences.language - if oldlang is None: - oldlang = None - else: - oldlang = (_preferences.language+'.')[:-1] #copy - - #self.function() - newf = Function(renpy.change_language, self.value) - newf() - if (self.value != None): #check if it's not english - args = [self, oldlang] - new = Function(LangCave._redraw, *args) - old = [Function(renpy.change_language, oldlang), Function(LangCave._redraw, *args)] - Confirm(_("Sample Text"), new, no=old)() - else: - LangCave._redraw(self, oldlang) - - - else: - self.hover = True - pass - if self.hover == oldhover: #refresh on change - renpy.redraw(self, 0) - - def visit(self): - return [self.child] - - - @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['image']), xysize=size, fit='contain', yalign=0.5) - #solid = Solid((22,22,22), xysize=size) - # = Solid((22,22,22), xysize=size) - _button = Fixed(tfi, xysize=size) - lang = llb['value'] - button = LangCave.LangButton(lang, _button) - LangCave.on_disable_interactable = True - - - - text = Text(llb['name'], outlines=[(2, "#000", 0, 0)], xalign=0.5) - final = VBox(text, button, style_prefix="navigation") - LangCave.lang_buttons.append(final) - - #prevent underfill - remainder = len(list_langs_buttons)%LangCave.MAX_ITEMS_IN_ROW - for x in range(4-remainder): - n = Null(*size) - LangCave.lang_buttons.append(n) - - LangCave.final_displayable = Grid(*LangCave.GRID_ROWS_COLS_TUPLE, *LangCave.lang_buttons, - xspacing=spacing[0], yspacing=spacing[1]) - - pass - - @staticmethod - def recreate_lang_buttons_roulette_style(size, spacing=0): - global LangCave - LangCave.lang_buttons.clear() - - LangCave.on_disable_interactable = False - - for llb in list_langs_buttons: - tfi = Transform(Image(llb['image']), xsize=size[0], ysize=size[1], fit='contain', yalign=0.5) - #solid = Solid((22,22,22), xysize=(size)) - _button = Fixed(tfi, xysize=(size)) - - text = Text(llb['name'], outlines=[(2, "#000", 0, 0)], xalign=0.5, text_size=16, yalign=0.5) #todo: text_size away - penultimate = HBox(text, _button, style_prefix="navigation", spacing=20) - #print(dir(penultimate)) - - #lang = Language(llb['value']) - lang = llb['value'] - button = LangCave.LangButton(lang, penultimate) - - if (_preferences.language == llb['value']): - button.selected = True - - LangCave.lang_buttons.append(button) - - LangCave.final_displayable = VBox(*LangCave.lang_buttons, spacing=spacing) - - pass - - if (persistent.languaged_up is None): - LangCave.procreate_lang_buttons(LangCave.LARGE_SIZE, LangCave.LARGE_SPACING) - else: - LangCave.recreate_lang_buttons_roulette_style(LangCave.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('#222')) + + background Transform(gui.main_menu_background, matrixcolor=TintMatrix('#222')) padding (120, 40) + vbox: style_prefix "navigation" - hbox: + vbox: label _("Choose Your Language") text_size 80 - label _("") text_size 80 - hbox: - add Null(80, 40) - add DynamicDisplayable(LangCave.render_langcave) + add Null(0, 40) + vpgrid: + if maxItems <= 4: + cols maxItems + rows 1 + else: + cols 4 + rows maxRows + #spacing 30 + draggable True + mousewheel True -screen translator_roulette: + if maxRows > 3: + scrollbars "vertical" - vbox: - label _("Language") - style_prefix "check" - add DynamicDisplayable(LangCave.render_langcave) + for i in range(maxItems): + fixed: + xsize 400 + ysize 300 + vbox: + if i