diff --git a/game/gui/button/menubuttons/checkbox_epilogue.png b/game/gui/button/menubuttons/checkbox_epilogue.png new file mode 100644 index 0000000..eabb8bf Binary files /dev/null and b/game/gui/button/menubuttons/checkbox_epilogue.png differ diff --git a/game/gui/button/menubuttons/template_idle_epilogue.png b/game/gui/button/menubuttons/template_idle_epilogue.png new file mode 100644 index 0000000..bf9b74a Binary files /dev/null and b/game/gui/button/menubuttons/template_idle_epilogue.png differ diff --git a/game/gui/game_menu_epilogue.png b/game/gui/game_menu_epilogue.png new file mode 100644 index 0000000..a7bd62c Binary files /dev/null and b/game/gui/game_menu_epilogue.png differ diff --git a/game/gui/overlay/extras_submenu_panel_epilogue.png b/game/gui/overlay/extras_submenu_panel_epilogue.png new file mode 100644 index 0000000..585c2db Binary files /dev/null and b/game/gui/overlay/extras_submenu_panel_epilogue.png differ diff --git a/game/options.rpy b/game/options.rpy index 563679c..c0914c3 100644 --- a/game/options.rpy +++ b/game/options.rpy @@ -137,6 +137,7 @@ default preferences.afm_time = 15 define config.developer = "auto" +default persistent.use_epilogue_menu = False default persistent.enable_debug_scores = config.developer default persistent.enable_chapter_select = config.developer default persistent.lewd = False diff --git a/game/screens.rpy b/game/screens.rpy index c8b2019..ee5e92e 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -408,18 +408,6 @@ image bonus_flash: repeat 4 -image template_black_m = Composite( - (511, 129), - (6, 5), Crop((0, 0, 511-12, 129-12), Solid("#000000", width=2, height=2)), - (0, 0), "gui/button/menubuttons/template_idle.png", - (0, 0), "gui/button/menubuttons/template_idle.png" -) - -image template_black: - "template_black_m" - matrixcolor TintMatrix(Color((0, 0, 0))) - alpha 0.8 - screen bonus_chapter_button(f="gui/button/menubuttons/template_idle.png"): #("gui/button/menubuttons/template_idle.png", "Bonus Chapters", ShowMenu("ex_ch_menu")) button: @@ -450,23 +438,28 @@ transform bonus_notif: pause 6.00 easeout_cubic 0.65 alpha 0 +screen main_menu_background(frame=True): + # The style prefix needs to be set outside of this screen if you want to have the sidebar graphic + if persistent.use_epilogue_menu: + add "big ending" + else: + add gui.main_menu_background + + ## This empty frame darkens the main menu. + if frame: + frame: + background "gui/overlay/main_menu.png" + screen main_menu(): ## This ensures that any other menu screen is replaced. tag menu + style_prefix "main_menu" - if renpy.seen_image("big ending"): - style_prefix "main_menu_ex" - add "big ending" - else: - style_prefix "main_menu" - add gui.main_menu_background - - ## This empty frame darkens the main menu. - frame: - pass + use main_menu_background + $ main_menu_button_img = "gui/button/menubuttons/template_idle_epilogue.png" if persistent.use_epilogue_menu else "gui/button/menubuttons/template_idle.png" if (persistent.old_endings != persistent.endings) or (persistent.bonus_chapters != persistent.old_bonus_chapters and (persistent.bonus_chapters == 0b111111111)): fixed: @@ -501,27 +494,16 @@ screen main_menu(): spacing 10 xpos 1885 ypos 1130 - if renpy.seen_image('big ending'): - use main_menu_button("template_black", "Start", Start()) - use bonus_chapter_button("template_black") - use main_menu_buttons("template_black", - [ - [ _("Load"), ShowMenu("load") ], - [ _("Options"), ShowMenu("preferences") ], - [ _("Extras"), ShowMenu("extras") ], \ - [ _("Quit"), Quit(confirm=not main_menu) ] - ] ) - else: - use main_menu_button("gui/button/menubuttons/template_idle.png", "Start", Start()) - use bonus_chapter_button() - use main_menu_buttons("gui/button/menubuttons/template_idle.png", - [ - [ _("Load"), ShowMenu("load") ], - [ _("Options"), ShowMenu("preferences") ], - [ _("Extras"), ShowMenu("extras") ], \ - [ _("Quit"), Quit(confirm=not main_menu) ] - ] ) - #on "show" action renpy.start_predict_screen("cg_gallery") + use main_menu_button(main_menu_button_img, "Start", Start()) + use bonus_chapter_button(main_menu_button_img) + use main_menu_buttons(main_menu_button_img, + [ + [ _("Load"), ShowMenu("load") ], + [ _("Options"), ShowMenu("preferences") ], + [ _("Extras"), ShowMenu("extras") ], \ + [ _("Quit"), Quit(confirm=not main_menu) ] + ] ) + style main_menu_frame is empty style main_menu_vbox is vbox @@ -533,8 +515,6 @@ style main_menu_frame: xsize 420 yfill True - background "gui/overlay/main_menu.png" - style main_menu_vbox: xalign 1.0 xoffset -30 @@ -551,26 +531,6 @@ style main_menu_text: style main_menu_title: properties gui.text_properties("title") -style main_menu_ex is main_menu -style main_menu_ex_vbox is main_menu_vbox -style main_menu_ex_text is main_menu_text -style main_menu_ex_frame is main_menu_frame - -#style main_menu_ex_button: -#color "#222" -#background "gui/button/menubuttons/template_idle.png" -#xalign 0.5 yalign 0.5 zoom 1 xanchor 0 xcenter 0.5 ycenter 0.5 - -#style main_menu_ex_button: -#color "#222" - - - -#style main_menu_version: -# properties gui.text_properties("version") - -# style - ## Game Menu screen ############################################################ ## ## This lays out the basic common structure of a game menu screen. It's called @@ -585,7 +545,7 @@ screen game_menu(title, scroll=None, yinitial=0.0, spacing=0): style_prefix "game_menu" if main_menu: - add gui.main_menu_background + use main_menu_background(False) else: add gui.game_menu_background @@ -710,12 +670,11 @@ screen about(): tag menu style_prefix "main_menu" - add gui.main_menu_background - add gui.extras_submenu_panel - - ## This empty frame darkens the main menu. - frame: - pass + use main_menu_background + if persistent.use_epilogue_menu: + add "gui/overlay/extras_submenu_panel_epilogue.png" + else: + add gui.extras_submenu_panel ## The use statement includes another screen inside this one. The actual ## contents of the main menu are in the navigation screen. @@ -726,76 +685,14 @@ screen about(): xoffset 80 xmaximum 1100 label "[config.name!t]" - text _("Version [config.version!t]\n") + text _("Version [config.version!t]\n") outlines [ (absolute(1), "#000", absolute(0), absolute(0)) ] ## gui.about is usually set in options.rpy. if gui.about: text "[gui.about!t]\n" style_prefix "quick" - text _("{size=30}Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]\nTo find more information about the game (and its source code) please visit {a=https://www.snootgame.xyz/}our website{/a}.{/size}") text_align 0 - use extrasnavigation - -## Updates screen ################################################################ -## -## This screen houses the updates option using the built-in updates capabilities of Ren'Py. -## - -screen updates(): - - tag menu - style_prefix "main_menu" - - add gui.main_menu_background - add gui.extras_submenu_panel - - ## This empty frame darkens the main menu. - frame: - pass - - ## The use statement includes another screen inside this one. The actual - ## contents of the main menu are in the navigation screen. - - vbox: - yalign 0.00 - yoffset 100 - xoffset 80 - xmaximum 1100 - label "[config.name!t]" - text _("Version [config.version!t]") - if updater.can_update(): - label _("{color=#00FF00}{size=32}Update directory exists, updating is possible!\n{/size}{/color}") - else: - label _("{color=#FF0000}{size=32}Update directory does not exist or is corrupt!\n{/size}{/color}") - - label _("Auto Update:") - label _("{color=#FFFFFF}{size=32}Automatic Updates: [persistent.autoup!t]{/size}{/color}") - textbutton _("{size=36}Toggle Automatic Updates\n{/size}") action [Notify("Toggling Automatic Updates..."), Function(ToggleAutoUpdate)] - - label _("Update Checker:") - label _("{color=#FFFFFF}{size=32}[persistent.updateresult!t]{/size}{/color}") - textbutton _("{size=36}Check for Update\n{/size}") activate_sound "audio/ui/uiClick.wav" action [Notify("Checking for update..."), Function(UpdateCheck)] - - label _("Updater:") - label _("{color=#FFFFFF}{size=32}Server URL (click to edit):{/size}{/color}") - default input_on = False - button: - key_events True - if input_on: - input: - default "[persistent.updateWebServer!t]" size 36 color '#FFFFFF' - value FieldInputValue(persistent, 'updateWebServer') - length 49 - copypaste True - else: - text persistent.updateWebServer size 36 color '#FFFF00' - action ToggleScreenVariable('input_on') - style_prefix "quick" - if persistent.updateresult != "No new version is available": - textbutton _("{size=36}Update Now!\n{/size}") activate_sound "audio/ui/uiNotification.wav" action [updater.Update(persistent.updateWebServer, force=False)] - else: - textbutton _("{size=36}Update Now!\n{/size}") activate_sound "audio/ui/uiFail.wav" action [Notify("Nothing to update to!")] - + text _("{size=30}Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]\nTo find more information about the game (and its source code) please visit {a=https://www.snootgame.xyz/}our website{/a}.{/size}") text_align 0 outlines [ (absolute(1), "#000", absolute(0), absolute(0)) ] use extrasnavigation ## Load and Save screens ####################################################### @@ -977,22 +874,23 @@ screen preferences(): textbutton _("Window") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "any window") textbutton _("Fullscreen") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "fullscreen") - vbox: - style_prefix "radio" - label _("Rollback Side") - textbutton _("Disable") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "disable") - textbutton _("Left") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "left") - textbutton _("Right") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "right") + vbox: + style_prefix "check" + label _("Requires Restart") + textbutton _("Enable Forward-Scroll Movement") action [Function(onclick_audio, persistent.scroll), ToggleVariable("persistent.scroll", True, False)] + + if renpy.variant(["mobile", "steam_deck"]): + vbox: + style_prefix "radio" + label _("Rollback Side") + textbutton _("Disable") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "disable") + textbutton _("Left") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "left") + textbutton _("Right") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "right") vbox: style_prefix "check" label _("Naughty Stuff") textbutton _("Enable Lewd Images") action [Function(onclick_audio, persistent.lewd), ToggleVariable("persistent.lewd", True, False)] - vbox: - style_prefix "check" - label _("Requires Restart") - textbutton _("Enable Forward-Scroll Movement") action [Function(onclick_audio, persistent.scroll), ToggleVariable("persistent.scroll", True, False)] - vbox: style_prefix "check" label _("Skip") @@ -1019,10 +917,18 @@ screen preferences(): else: $ debug_story_variables(False) - vbox: - style_prefix "check" - label _("Gallery") - textbutton _("Enable Edgescrolling") action [Function(onclick_audio, persistent.gallery_edgescroll), ToggleVariable("persistent.gallery_edgescroll", True, False)] + if renpy.variant(["mobile", "steam_deck"]): + vbox: + style_prefix "check" + label _("Gallery") + textbutton _("Enable Edgescrolling") action [Function(onclick_audio, persistent.gallery_edgescroll), ToggleVariable("persistent.gallery_edgescroll", True, False)] + + if renpy.seen_image("big ending"): + vbox: + style_prefix "radio" + label _("Menu Style") + textbutton _("Original") activate_sound "audio/ui/uiOptionOn.wav" action SetVariable("persistent.use_epilogue_menu", False) + textbutton _("Epilogue") activate_sound "audio/ui/uiOptionOn.wav" action SetVariable("persistent.use_epilogue_menu", True) vbox: xsize 676 @@ -1274,11 +1180,7 @@ screen extras(): style_prefix "main_menu" - add gui.main_menu_background - - ## This empty frame darkens the main menu. - frame: - pass + use main_menu_background use extrasnavigation @@ -1298,7 +1200,10 @@ screen extrasnavigation(): spacing 10 xpos 1885 ypos (1269 if persistent.enable_chapter_select else 1130) - use main_menu_buttons("gui/button/menubuttons/template_idle.png", + + $ main_menu_button_img = "gui/button/menubuttons/template_idle_epilogue.png" if persistent.use_epilogue_menu else "gui/button/menubuttons/template_idle.png" + + use main_menu_buttons(main_menu_button_img, [ [ _("Help"), ShowMenu("help") ], [ _("About"), ShowMenu("about") ], @@ -1321,12 +1226,13 @@ screen help(): style_prefix "main_menu" - add gui.main_menu_background - add gui.extras_submenu_panel + use main_menu_background + + if persistent.use_epilogue_menu: + add "gui/overlay/extras_submenu_panel_epilogue.png" + else: + add gui.extras_submenu_panel - ## This empty frame darkens the main menu. - frame: - pass default device = "keyboard" @@ -1891,31 +1797,6 @@ screen quick_menu(): [ _("Menu"), ShowMenu(), NullAction() ] \ ] ) -screen extrasnavigation(): #Updates are removed (not even supported by Ren'Py) - variant "mobile" - vbox: - xpos 1940 - yalign 0.03 - - if persistent.splashtype == 1: - add "gui/sneedgame.png" - else: - add "gui/snootgame.png" - vbox: - spacing 10 - xpos 1885 - ypos (1269 if persistent.enable_chapter_select else 1130) - use main_menu_buttons("gui/button/menubuttons/template_idle.png", - [ - [ _("Help"), ShowMenu("help") ], - [ _("About"), ShowMenu("about") ], - [ _("Gallery"), ShowMenu("cg_gallery") ], - *([(_("Chapter Select"), Start("chapter_select"))] if persistent.enable_chapter_select else []), - [ _("Mods"), ShowMenu("mod_menu") ], - [ _("Return"), ShowMenu("main_menu") ] - ] ) - add Null(0, 129) - style radio_button: variant "mobile" foreground "gui/phone/button/radio_[prefix_]foreground.png" diff --git a/game/script/x10-raymbas-observations.rpy b/game/script/x10-raymbas-observations.rpy index 347338e..8784ce8 100644 --- a/game/script/x10-raymbas-observations.rpy +++ b/game/script/x10-raymbas-observations.rpy @@ -1041,6 +1041,7 @@ label chapter_x10: window auto pause 0.5 + $ persistent.use_epilogue_menu = True scene big ending with Dissolve(1) scene big blending with Dissolve(1) pause 6 diff --git a/game/src/cg_gallery.rpy b/game/src/cg_gallery.rpy index 2b3003e..12c2f7c 100644 --- a/game/src/cg_gallery.rpy +++ b/game/src/cg_gallery.rpy @@ -97,9 +97,12 @@ screen cg_gallery(origin = 'CG'): key "game_menu" action ShowMenu("main_menu") # Bg for frame - add gui.main_menu_background + use main_menu_background(False) # Frame - add gui.game_menu_background + if persistent.use_epilogue_menu: + add "gui/game_menu_epilogue.png" + else: + add gui.game_menu_background tag menu diff --git a/game/src/extra_chapters_menu.rpy b/game/src/extra_chapters_menu.rpy index 9ce2288..d736746 100644 --- a/game/src/extra_chapters_menu.rpy +++ b/game/src/extra_chapters_menu.rpy @@ -65,12 +65,7 @@ screen ex_ch_menu(): tag menu style_prefix "main_menu" - add gui.main_menu_background - - frame: - xsize 420 - yfill True - background "gui/overlay/main_menu.png" + use main_menu_background #side_yfill True vbox: @@ -92,14 +87,15 @@ screen ex_ch_menu(): mousewheel True draggable True pagekeys True - vbox: - #xpos 1885 - spacing 12 -#yalign 0.98 - use ex_ch_button("gui/button/menubuttons/template_idle.png", "Return", ShowMenu("main_menu")) -#use ex_ch_button("gui/button/menubuttons/template_idle.png", str(e), ShowMenu("main_menu")) + $ main_menu_button_img = "gui/button/menubuttons/template_idle_epilogue.png" if persistent.use_epilogue_menu else "gui/button/menubuttons/template_idle.png" + + vbox: + spacing 12 + + use ex_ch_button(main_menu_button_img, "Return", ShowMenu("main_menu")) + if len(ex_chapters_menu): - use ex_ch_buttons("gui/button/menubuttons/template_idle.png", ex_chapters_menu ) + use ex_ch_buttons(main_menu_button_img, ex_chapters_menu ) for x in range(0, len(ex_chapters) - len(ex_chapters_menu)): - use ex_ch_button("gui/button/menubuttons/template_idle.png", "???", None) + use ex_ch_button(main_menu_button_img, "???", None) diff --git a/game/src/mod_menu.rpy b/game/src/mod_menu.rpy index 801f5e7..7bc39e5 100644 --- a/game/src/mod_menu.rpy +++ b/game/src/mod_menu.rpy @@ -685,11 +685,9 @@ screen mod_menu(): style_prefix "main_menu" - add gui.main_menu_background - frame: - xsize 420 - yfill True - background "gui/overlay/main_menu.png" + use main_menu_background + + $ main_menu_button_img = "gui/button/menubuttons/template_idle_epilogue.png" if persistent.use_epilogue_menu else "gui/button/menubuttons/template_idle.png" default mod_metadata = {} default reload_game = False @@ -707,14 +705,14 @@ screen mod_menu(): spacing 8 - use mod_menu_top_buttons(_("Reload Mods"), SetScreenVariable("reload_game", True)): + use mod_menu_top_buttons(main_menu_button_img, _("Reload Mods"), SetScreenVariable("reload_game", True)): # For some reason, Function() will instantly reload the game upon entering the mod menu, and put it in an infinite loop, so doing this python jank # is the only way if reload_game: python: reload_game = False renpy.reload_script() - use mod_menu_top_buttons(_("Return"), ShowMenu("extras")) + use mod_menu_top_buttons(main_menu_button_img, _("Return"), ShowMenu("extras")) viewport: xpos 1260 @@ -755,13 +753,16 @@ screen mod_menu(): activate_sound "audio/ui/snd_ui_click.wav" - idle_foreground Transform("gui/button/menubuttons/up.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#445ABB")) + if persistent.use_epilogue_menu: + idle_foreground Transform("gui/button/menubuttons/up.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#000000")) + else: + idle_foreground Transform("gui/button/menubuttons/up.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#445ABB")) hover_foreground Transform("gui/button/menubuttons/up.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#00FF03")) action Function(swapMods, i, i-1) else: add Null(30,30) at truecenter - # Enablin/disabling mods button + # Enabling/disabling mods button button: at truecenter style_prefix "main_menu" @@ -770,7 +771,10 @@ screen mod_menu(): if not renpy.variant(["mobile", "steam_deck"]): ysize 65 - add "gui/button/menubuttons/checkbox.png" xalign 0.5 yalign 0.5 + if persistent.use_epilogue_menu: + add "gui/button/menubuttons/checkbox_epilogue.png" xalign 0.5 yalign 0.5 + else: + add "gui/button/menubuttons/checkbox.png" xalign 0.5 yalign 0.5 if x["Scripts"]: action Function(toggle_persistent_mods, i) @@ -792,7 +796,10 @@ screen mod_menu(): action Function(swapMods, i, i+1) activate_sound "audio/ui/snd_ui_click.wav" - idle_foreground Transform("gui/button/menubuttons/down.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#445ABB")) + if persistent.use_epilogue_menu: + idle_foreground Transform("gui/button/menubuttons/down.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#000000")) + else: + idle_foreground Transform("gui/button/menubuttons/down.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#445ABB")) hover_foreground Transform("gui/button/menubuttons/down.png",xalign=0.5,yalign=0.5,matrixcolor=TintMatrix("#00FF03")) else: @@ -827,9 +834,9 @@ screen mod_menu(): xsize 475 ymaximum 2000 if mod_button_enabled: - background Frame("gui/button/menubuttons/template_idle.png", 12, 12) + background Frame(main_menu_button_img, 12, 12) else: - background Transform(Frame("gui/button/menubuttons/template_idle.png", 12, 12),matrixcolor=SaturationMatrix(0.5)) + background Transform(Frame(main_menu_button_img, 12, 12),matrixcolor=SaturationMatrix(0.5)) padding (5, 5) @@ -870,7 +877,7 @@ screen mod_menu(): frame: xsize 475 ymaximum 2000 - background Frame("gui/button/menubuttons/template_idle.png", 12, 12) + background Frame(main_menu_button_img, 12, 12) padding (5, 5) text x["Name"] xalign 0.5 yalign 0.5 size 34 textalign 0.5 @@ -903,7 +910,10 @@ screen mod_menu(): xsize 1190 ysize 129 - background Frame("gui/button/menubuttons/template_full_idle.png", 12, 12) + if persistent.use_epilogue_menu: + background Frame("gui/button/menubuttons/template_idle_epilogue.png", 12, 12) + else: + background Frame("gui/button/menubuttons/template_full_idle.png", 12, 12) text _("Start") xalign 0.5 yalign 0.5 size 50 action Start(mod_metadata["Label"]) @@ -946,7 +956,8 @@ screen mod_menu(): # Mod details # Omits checking for mod name, since we'll always have some kind of mod name. # This will also not show anything if there's only a mod name, since we already show one in the mod button. - if return_translated_metadata(mod_metadata, "Version") != None or return_translated_metadata(mod_metadata, "Authors") != None or return_translated_metadata(mod_metadata, "Links") != None: + # Unless the display is set to "icon". + if return_translated_metadata(mod_metadata, "Version") != None or return_translated_metadata(mod_metadata, "Authors") != None or return_translated_metadata(mod_metadata, "Links") != None or mod_metadata.get("Display") == "icon": frame: background Frame("gui/mod_frame.png", 30, 30) padding (30, 30) @@ -1064,13 +1075,13 @@ screen mod_screenshot_preview(img): key ["mouseup_1", "mouseup_3"] action Hide("mod_screenshot_preview", dissolve) -screen mod_menu_top_buttons(text, action): +screen mod_menu_top_buttons(image, text, action): button: frame: xmaximum 300 ymaximum 129 - background Frame("gui/button/menubuttons/template_idle.png", 12, 12) + background Frame(image, 12, 12) text text xalign 0.5 yalign 0.5 size 34 action action