diff --git a/game/scripts/gui/say.rpy b/game/scripts/gui/say.rpy index ff9f626d..e084a95a 100644 --- a/game/scripts/gui/say.rpy +++ b/game/scripts/gui/say.rpy @@ -153,44 +153,52 @@ screen choice(items): variant "pc" default has_icons = any(x is not None for x in [e.kwargs.get("icon", None) for e in items]) + default columns = math.ceil(len(items) / 12) - vbox: + hbox: at gui_choice_show_hide - for i, entry in enumerate(items, 1): - $ scale = (1.0 * (28 / max(28, len(entry.caption)))) - $ icon = entry.kwargs.get("icon", None) - $ progress = entry.kwargs.get("progress", None) - + for column in range(columns): vbox: - spacing 2 + $ start_index = column * 12 + $ end_index = start_index + 12 + + for i, entry in enumerate(items[start_index:end_index], 1): + $ scale = (1.0 * (28 / max(28, len(entry.caption)))) + $ icon = entry.kwargs.get("icon", None) + $ progress = entry.kwargs.get("progress", None) - button: - action entry.action - if i < 10 and entry.action: - keysym ("K_"+str(i), "K_KP"+str(i)) + button: + action entry.action - text "[i]" style "choice_number": - at gui_perspective + # Handle columns + if columns > 1: + xmaximum (config.screen_width // columns) - hbox: - null width 16 - at gui_perspective, gui_perspective_hover + if i < 10 and entry.action: + keysym ("K_"+str(i), "K_KP"+str(i)) - if has_icons: - if icon: - add icon xysize (32, 32) xcenter 12 yalign 1.0 yoffset -4 - else: - null width 32 + text "[i+start_index]" style "choice_number": + at gui_perspective - text entry.caption size 32 * scale + hbox: + null width 16 + at gui_perspective, gui_perspective_hover - if progress: - bar value StaticValue(progress[0], progress[1]) offset (-16, 22) - - if progress[0] == progress[1]: - text _("{wave}{size=20}Done!{/size}{/wave}") style "choice_progress" at transform: - rotate 12.5 - gui_hover + if has_icons: + if icon: + add icon xysize (32, 32) xcenter 12 yalign 1.0 yoffset -4 + else: + null width 32 + + text entry.caption size 32 * scale + + if progress: + bar value StaticValue(progress[0], progress[1]) offset (-16, 22) + + if progress[0] == progress[1]: + text _("{wave}{size=20}Done!{/size}{/wave}") style "choice_progress" at transform: + rotate 12.5 + gui_hover transform gui_perspective: @@ -257,12 +265,13 @@ style choice_button is button style choice_button_text is button_text style choice_vbox: - xalign 0.5 - yanchor 1.0 - ypos 0.75 + align (0.5, 1.0) spacing 10 style choice_hbox: + xalign 0.5 + yanchor 1.0 + ypos 0.75 spacing 2 style choice_button: