Code below, sorry for the large section, I don't have time to split it up right now. A lot of it is default but I have made large changes to the navigation screen to put the options down the bottom, as well as a few changes to the game menu. Haven't made any changes to the Load/Save/About/etc screens yet.
Code: Select all
################################################################################
## Main and Game Menu Screens
################################################################################
## Navigation screen ###########################################################
##
## This screen is included in the main and game menus, and provides navigation
## to other menus, and to start the game.
screen navigation():
style_prefix "navigation"
if main_menu:
imagemap:
idle "main_menu_idle.png"
hover "main_menu_hover.png"
ground "main_menu_ground.png"
selected_idle "main_menu_hover.png"
hotspot (570, 930, 131, 150) action Start()
hotspot (775, 930, 120, 150) action ShowMenu("load")
hotspot (950, 930, 170, 150) action ShowMenu("preferences")
hotspot (1165, 930, 135, 150) action ShowMenu("about")
hotspot (1370, 930, 125, 150) action ShowMenu("help")
hotspot (1580, 930, 111, 150) action Quit(confirm=not main_menu)
else:
imagemap:
idle "game_menu_idle.png"
hover "game_menu_hover.png"
ground "game_menu_ground.png"
selected_idle "game_menu_hover.png"
selected_hover "game_menu_hover.png"
hotspot (480, 940, 130, 145) action MainMenu()
hotspot (666, 940, 160, 145) action ShowMenu("history")
hotspot (884, 940, 992, 145) action ShowMenu("save")
hotspot (1084, 940, 120, 145) action ShowMenu("load")
hotspot (1256, 940, 178, 145) action ShowMenu("preferences")
hotspot (1482, 940, 130, 145) action ShowMenu("help")
hotspot (1682, 940, 127, 145) action Quit(confirm=not main_menu)
style navigation_button is gui_button
style navigation_button_text is gui_button_text
style navigation_button:
size_group "navigation"
properties gui.button_properties("navigation_button")
style navigation_button_text:
properties gui.button_text_properties("navigation_button")
## Main Menu screen ############################################################
##
## Used to display the main menu when Ren'Py starts.
##
## https://www.renpy.org/doc/html/screen_special.html#main-menu
screen main_menu():
## This ensures that any other menu screen is replaced.
tag menu
style_prefix "main_menu"
add Movie(size=(1920, 1080))
on "show" action Play("movie", "mm.mpg", loop=-1)
on "hide" action Stop("movie")
on "replaced" action Stop("movie")
on "replace" action Play("movie", "mm.mpg", loop=-1)
## 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.
use navigation
if gui.show_name:
vbox:
text "[config.name!t]":
style "main_menu_title"
text "[config.version]":
style "main_menu_version"
style main_menu_frame is empty
style main_menu_vbox is vbox
style main_menu_text is gui_text
style main_menu_title is main_menu_text
style main_menu_version is main_menu_text
style main_menu_frame:
xsize 420
yfill True
background "gui/overlay/main_menu.png"
style main_menu_vbox:
xalign 1.0
xoffset -30
xmaximum 1200
yalign 1.0
yoffset -30
style main_menu_text:
properties gui.text_properties("main_menu", accent=True)
style main_menu_title:
properties gui.text_properties("title")
style main_menu_version:
properties gui.text_properties("version")
## Game Menu screen ############################################################
##
## This lays out the basic common structure of a game menu screen. It's called
## with the screen title, and displays the background, title, and navigation.
##
## The scroll parameter can be None, or one of "viewport" or "vpgrid". When
## this screen is intended to be used with one or more children, which are
## transcluded (placed) inside it.
screen game_menu(title, scroll=None, yinitial=0.0):
style_prefix "game_menu"
if main_menu:
pass
else:
add FileCurrentScreenshot() at blur
add gui.game_menu_background
frame:
style "game_menu_outer_frame"
hbox:
frame:
style "game_menu_content_frame"
if scroll == "viewport":
viewport:
yinitial yinitial
scrollbars "vertical"
mousewheel True
draggable True
pagekeys True
side_yfill True
vbox:
transclude
elif scroll == "vpgrid":
vpgrid:
cols 1
yinitial yinitial
scrollbars "vertical"
mousewheel True
draggable True
pagekeys True
side_yfill True
transclude
else:
transclude
use navigation
imagebutton idle "back_idle.png" hover "back_hover.png" action Return():
xpos 1790
ypos 15
label title
if main_menu:
key "game_menu" action ShowMenu("main_menu")
style game_menu_outer_frame is empty
style game_menu_navigation_frame is empty
style game_menu_content_frame is empty
style game_menu_viewport is gui_viewport
style game_menu_side is gui_side
style game_menu_scrollbar is gui_vscrollbar
style game_menu_label is gui_label
style game_menu_label_text is gui_label_text
style return_button is navigation_button
style return_button_text is navigation_button_text
style game_menu_outer_frame:
bottom_padding 45
top_padding 180
background "gui/overlay/game_menu.png"
style game_menu_content_frame:
left_margin 60
right_margin 30
top_margin 0
style game_menu_viewport:
xsize 1380
style game_menu_vscrollbar:
unscrollable gui.unscrollable
style game_menu_side:
spacing 15
style game_menu_label:
xpos 75
ysize 180
style game_menu_label_text:
size gui.title_text_size
color gui.accent_color
yalign 0.5
style return_button:
xpos gui.navigation_xpos
yalign 1.0
yoffset -45