Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ################################################################################
- ## Initialization
- ################################################################################
- init offset = -1
- ################################################################################
- ## Styles
- ################################################################################
- style default:
- properties gui.text_properties()
- language gui.language
- style input:
- properties gui.text_properties("input", accent=True)
- adjust_spacing False
- style hyperlink_text:
- properties gui.text_properties("hyperlink", accent=True)
- hover_underline True
- style gui_text:
- properties gui.text_properties("interface")
- style button:
- properties gui.button_properties("button")
- hover_sound "audio/sfx/hover.ogg"
- activate_sound "audio/sfx/select.ogg"
- style button_text is gui_text:
- properties gui.text_properties("button")
- yalign 0.5
- style label_text is gui_text:
- properties gui.text_properties("label", accent=True)
- style prompt_text is gui_text:
- properties gui.text_properties("prompt")
- style bar:
- ysize gui.bar_size
- left_bar Frame("gui/bar/left.png", gui.bar_borders, tile=gui.bar_tile)
- right_bar Frame("gui/bar/right.png", gui.bar_borders, tile=gui.bar_tile)
- style vbar:
- xsize gui.bar_size
- top_bar Frame("gui/bar/top.png", gui.vbar_borders, tile=gui.bar_tile)
- bottom_bar Frame("gui/bar/bottom.png", gui.vbar_borders, tile=gui.bar_tile)
- style scrollbar:
- ysize gui.scrollbar_size
- base_bar Frame("gui/scrollbar/horizontal_[prefix_]bar.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
- thumb Frame("gui/scrollbar/horizontal_[prefix_]thumb.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
- style vscrollbar:
- xsize gui.scrollbar_size
- base_bar Frame("gui/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
- thumb Frame("gui/scrollbar/vertical_[prefix_]thumb.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
- style slider:
- ysize gui.slider_size
- #xsize 480
- left_bar Frame("gui/bar/left.png", gui.bar_borders, tile=gui.bar_tile)
- right_bar Frame("gui/bar/right.png", gui.bar_borders, tile=gui.bar_tile)
- style vslider:
- xsize gui.slider_size
- base_bar Frame("gui/slider/vertical_[prefix_]bar.png", gui.vslider_borders, tile=gui.slider_tile)
- thumb "gui/slider/vertical_[prefix_]thumb.png"
- style frame:
- padding gui.frame_borders.padding
- background Frame("gui/frame.png", gui.frame_borders, tile=gui.frame_tile)
- ################################################################################
- ## In-game screens
- ################################################################################
- ## Say screen ##################################################################
- ##
- ## The say screen is used to display dialogue to the player. It takes two
- ## parameters, who and what, which are the name of the speaking character and
- ## the text to be displayed, respectively. (The who parameter can be None if no
- ## name is given.)
- ##
- ## This screen must create a text displayable with id "what", as Ren'Py uses
- ## this to manage text display. It can also create displayables with id "who"
- ## and id "window" to apply style properties.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#say
- screen say(who, what):
- style_prefix "say"
- window:
- id "window"
- if who is not None:
- window:
- id "namebox"
- style "namebox"
- text who id "who"
- text what id "what"
- ## If there's a side image, display it above the text. Do not display on the
- ## phone variant - there's no room.
- if not renpy.variant("small"):
- add SideImage() xalign 0.0 yalign 1.0
- ## Make the namebox available for styling through the Character object.
- init python:
- config.character_id_prefixes.append('namebox')
- style window is default
- style say_label is default
- style say_dialogue is default
- style say_thought is say_dialogue
- style namebox is default
- style namebox_label is say_label
- style window:
- xalign 0.5
- xfill True
- yalign gui.textbox_yalign
- ysize gui.textbox_height
- background Image("gui/textbox.png", xalign=0.5, yalign=1.0)
- style namebox:
- xpos gui.name_xpos
- xanchor gui.name_xalign
- xsize gui.namebox_width
- ypos gui.name_ypos
- ysize gui.namebox_height
- background Frame("gui/namebox.png", gui.namebox_borders, tile=gui.namebox_tile, xalign=gui.name_xalign)
- padding gui.namebox_borders.padding
- style say_label:
- properties gui.text_properties("name", accent=True)
- xalign gui.name_xalign
- yalign 0.5
- style say_dialogue:
- properties gui.text_properties("dialogue")
- xpos gui.dialogue_xpos
- xsize gui.dialogue_width
- ypos gui.dialogue_ypos
- ## Input screen ################################################################
- ##
- ## This screen is used to display renpy.input. The prompt parameter is used to
- ## pass a text prompt in.
- ##
- ## This screen must create an input displayable with id "input" to accept the
- ## various input parameters.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#input
- screen input(prompt):
- style_prefix "input"
- window:
- vbox:
- xalign gui.dialogue_text_xalign
- xpos gui.dialogue_xpos
- xsize gui.dialogue_width
- ypos gui.dialogue_ypos
- text prompt style "input_prompt"
- input id "input"
- style input_prompt is default
- style input_prompt:
- xalign gui.dialogue_text_xalign
- properties gui.text_properties("input_prompt")
- style input:
- xalign gui.dialogue_text_xalign
- xmaximum gui.dialogue_width
- ## Choice screen ###############################################################
- ##
- ## This screen is used to display the in-game choices presented by the menu
- ## statement. The one parameter, items, is a list of objects, each with caption
- ## and action fields.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#choice
- screen choice(items):
- style_prefix "choice"
- vbox:
- for i in items:
- textbutton i.caption action i.action at choice_in
- ## When this is true, menu captions will be spoken by the narrator. When false,
- ## menu captions will be displayed as empty buttons.
- define config.narrator_menu = True
- style choice_vbox is vbox
- style choice_button is button
- style choice_button_text is button_text
- style choice_vbox:
- xalign 0.5
- ypos 270
- yanchor 0.5
- spacing gui.choice_spacing
- style choice_button is default:
- properties gui.button_properties("choice_button")
- style choice_button_text is default:
- properties gui.button_text_properties("choice_button")
- ## Quick Menu screen ###########################################################
- ##
- ## The quick menu is displayed in-game to provide easy access to the out-of-game
- ## menus.
- screen quick_menu():
- ## Ensure this appears on top of other screens.
- zorder 100
- if quick_menu:
- hbox:
- style_prefix "quick"
- xalign 0.95
- yalign 0.00
- textbutton _("History") action ShowMenu('history')
- textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True)
- textbutton _("Auto") action Preference("auto-forward", "toggle")
- textbutton _("Save") action ShowMenu('save')
- textbutton _("Q.Save") action QuickSave()
- textbutton _("Q.Load") action QuickLoad()
- textbutton _("Prefs") action ShowMenu('preferences')
- ## This code ensures that the quick_menu screen is displayed in-game, whenever
- ## the player has not explicitly hidden the interface.
- init python:
- config.overlay_screens.append("quick_menu")
- default quick_menu = True
- style quick_button is default
- style quick_button hover_sound "audio/sfx/hover.ogg"
- style quick_button_text is button_text
- style quick_button:
- properties gui.button_properties("quick_button")
- style quick_button_text:
- properties gui.button_text_properties("quick_button")
- ################################################################################
- ## 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():
- hbox:
- style_prefix "navigation"
- xalign 0.5
- ypos 0
- spacing 20
- if not main_menu:
- textbutton _("Save") action ShowMenu("save")
- textbutton _("Load") action ShowMenu("load")
- textbutton _("Settings") action ShowMenu("preferences")
- if _in_replay:
- textbutton _("End Replay") action EndReplay(confirm=True)
- elif not main_menu:
- textbutton _("History") action ShowMenu("history")
- textbutton _("Return") action Return()
- if not main_menu:
- textbutton _("Main Menu") action MainMenu()
- #textbutton _("About") action ShowMenu("about") style "gm_button"
- if renpy.variant("pc"):
- ## Help isn't necessary or relevant to mobile devices.
- #textbutton _("Help") action ShowMenu("help")
- ## The quit button is banned on iOS and unnecessary on Android.
- textbutton _("Quit") action Quit(confirm=True)
- screen bonus_navigation():
- vbox:
- style_prefix "navigation"
- xpos 0
- yalign 0.5
- spacing 10
- #textbutton _("Images") action ShowMenu("cg_gallery") style "gm_button"
- textbutton _("Music") action ShowMenu("music_room") style "gm_button"
- #textbutton _("Scenes") action ShowMenu("sceneroom") style "gm_button"
- textbutton _("Glossary") action ShowMenu("wiki_index") style "gm_button"
- init -2:
- style gm_button is button:
- xminimum 230
- ymaximum 32
- top_padding 5
- left_padding 60
- style gm_button background "gui/button/textbutton_ground2.png"
- style gm_button idle_background "gui/button/textbutton_ground.png"
- style gm_button hover_background "gui/button/textbutton_hover.png"
- style gm_button selected_idle_background "gui/button/textbutton_selected_idle.png"
- style gm_button selected_hover_background "gui/button/textbutton_hover.png"
- style gm_button focus_mask "gui/button/textbutton_ground.png"
- style gm_button hover_sound "audio/sfx/hover.ogg"
- style gm_button activate_sound "audio/sfx/select.ogg"
- style gm_button_text color "#777777"
- style gm_button_text hover_color "#fff"
- style gm_button_text selected_color "#fff"
- style gm_button_text insensitive_color "#808080"
- style gm_button_text font "fonts/ADAM.otf"
- ## 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 gui.main_menu_background
- add "gui/overlay/main_menu.png"
- vbox:
- xpos 0
- yalign 0.5
- spacing 10
- textbutton "Start" action Start() style "mm_button"
- textbutton "Load" action ShowMenu("load") style "mm_button"
- if persistent.kokoroiyashi:
- textbutton "Chapter Select" style "mm_button":
- action NullAction()
- hovered "gui/chap_tooltip.jpg"
- else:
- textbutton "Chapter Select" style "mm_button":
- action NullAction()
- hovered ShowTransient("the_img", img="gui/chap_tooltip.jpg", transition=dissolve)
- unhovered Hide("the_img", transition=dissolve)
- textbutton "Settings" action ShowMenu("preferences") style "mm_button"
- textbutton "Extras" action ShowMenu("extras") style "mm_button"
- textbutton "Quit" action Quit(confirm=True) style "mm_button"
- screen the_img(img):
- add img pos (390, 310)
- init -2:
- style mm_button is button:
- xminimum 380
- ymaximum 74
- top_padding 25
- right_padding 50
- style mm_button background None
- style mm_button hover_background "mm_hover"
- style mm_button selected_idle_background None
- style mm_button selected_hover_background None
- style mm_button focus_mask "gui/button/mm_hover.png"
- style mm_button hover_sound "audio/sfx/hover.ogg"
- style mm_button_text color "#777777"
- style mm_button_text hover_color "#fff"
- style mm_button_text selected_color "#fff"
- style mm_button_text insensitive_color "#252525"
- style mm_button_text font "fonts/ADAM.otf"
- ##EXTRAS
- screen extras():
- ## This ensures that any other menu screen is replaced.
- tag menu
- style_prefix "main_menu"
- add gui.main_menu_background
- vbox:
- xpos 0
- yalign 0.5
- spacing 10
- #textbutton "Images" action Start() style "mm_button"
- textbutton "Music" action ShowMenu("music_room") style "mm_button"
- #textbutton "Scenes" action ShowMenu("preferences") style "mm_button"
- textbutton "Glossary" action ShowMenu("wiki_index") style "mm_button"
- textbutton "Afterparty" style "mm_button":
- action [ Start("afterparty_tsumi"), SensitiveIf(persistent.completed_rin) ]
- textbutton "Return" action ShowMenu("main_menu") style "mm_button"
- ## 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"
- add gui.game_menu_background
- use navigation
- 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 30
- top_padding 120
- background "gui/overlay/game_menu.png"
- style game_menu_navigation_frame:
- xsize 280
- yfill True
- style game_menu_content_frame:
- left_margin 40
- right_margin 20
- top_margin 10
- style game_menu_viewport:
- xsize 920
- style game_menu_vscrollbar:
- unscrollable gui.unscrollable
- style game_menu_side:
- spacing 10
- style game_menu_label:
- xpos 80
- ypos 40
- ysize 120
- style game_menu_label_text:
- size 40
- color "#fff"
- yalign 0.48
- style return_button:
- xpos gui.navigation_xpos
- yalign 1.0
- yoffset -30
- ##HAX MODE ENGAGED
- screen bonus_game_menu(title, scroll=None, yinitial=0.0):
- style_prefix "game_menu"
- add gui.game_menu_background
- frame:
- style "game_menu_outer_frame"
- hbox:
- ## Reserve space for the navigation section.
- frame:
- style "game_menu_navigation_frame"
- 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 == "viewport2":
- viewport:
- yinitial 1.0
- # Adjust size and position here.
- side_ysize 450
- side_ypos 0
- scrollbars "vertical"
- mousewheel True
- draggable True
- vbox:
- transclude
- elif scroll == "vpgrid":
- vpgrid:
- cols 1
- yinitial yinitial
- scrollbars "vertical"
- mousewheel True
- draggable True
- pagekeys True
- side_yfill True
- transclude
- elif scroll == "vpgrid2":
- vpgrid:
- cols 1
- yinitial 1.0
- # Adjust size and position here.
- side_ysize 450
- side_ypos 0
- scrollbars "vertical"
- mousewheel True
- draggable True
- pagekeys True
- side_yfill True
- transclude
- else:
- transclude
- use bonus_navigation
- textbutton _("Return"):
- style "gm_button"
- ypos 550
- action ShowMenu("extras")
- label title
- ## About screen ################################################################
- ##
- ## This screen gives credit and copyright information about the game and Ren'Py.
- ##
- ## There's nothing special about this screen, and hence it also serves as an
- ## example of how to make a custom screen.
- screen about():
- tag menu
- ## This use statement includes the game_menu screen inside this one. The
- ## vbox child is then included inside the viewport inside the game_menu
- ## screen.
- use game_menu(_("About"), scroll="viewport"):
- style_prefix "about"
- vbox:
- label "[config.name!t]"
- text _("Version [config.version!t]\n")
- ## gui.about is usually set in options.rpy.
- if gui.about:
- text "[gui.about!t]\n"
- text _("{font=fonts/Accidental.ttf}Made with {a=https://www.renpy.org/}Ren'Py{/a} [renpy.version_only].\n\n[renpy.license!t]{/font}")
- ## This is redefined in options.rpy to add text to the about screen.
- define gui.about = ""
- style about_label is gui_label
- style about_label_text is gui_label_text
- style about_text is gui_text
- style about_label_text:
- size gui.label_text_size
- ## Load and Save screens #######################################################
- ##
- ## These screens are responsible for letting the player save the game and load
- ## it again. Since they share nearly everything in common, both are implemented
- ## in terms of a third screen, file_slots.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#save https://
- ## www.renpy.org/doc/html/screen_special.html#load
- screen save():
- tag menu
- add gui.game_menu_background
- add "gui/save_bg.png"
- use file_slots
- use navigation
- screen load():
- tag menu
- add gui.game_menu_background
- add "gui/load_bg.png"
- use file_slots
- use navigation
- screen file_slots:
- viewport:
- scrollbars "vertical"
- xpos 708
- ypos 111
- mousewheel True
- #side_yfill True
- vbox:
- spacing 20
- for i in range(0, 30):
- $ slot = i + 1
- button:
- action FileAction(slot)
- hovered ShowTransient("sl_image", img=FileScreenshot(slot))
- unhovered Hide("sl_image")
- style "slott_button"
- has hbox
- spacing 2
- text FileTime(slot, format=_("{#file_time}%b %d "), empty=_("Empty Slot")):
- style "slot_time_text"
- text FileSaveName(slot):
- style "slot_name_text"
- key "save_delete" action FileDelete(slot)
- screen sl_image(img):
- add img pos (23, 191)
- style page_label is gui_label
- style page_label_text is gui_label_text
- style page_button is gui_button
- style page_button_text is gui_button_text
- style slot_button_text is gui_button_text
- style slot_time_text is slot_button_text
- style slot_name_text is slot_button_text
- init -2:
- style slott_button is button:
- xminimum 500
- ymaximum 60
- left_padding 10
- top_padding 20
- style slott_button background "gui/button/slot_ground_background.png"
- style slott_button idle_background "gui/button/slot_idle_background.png"
- style slott_button hover_background "gui/button/slot_hover_background.png"
- style slott_button focus_mask "gui/button/slot_ground_background.png"
- style slott_button hover_sound "audio/sfx/hover.ogg"
- style page_label:
- xpadding 50
- ypadding 3
- style page_label_text:
- text_align 0.5
- layout "subtitle"
- hover_color gui.hover_color
- style page_button:
- properties gui.button_properties("page_button")
- style page_button_text:
- properties gui.button_text_properties("page_button")
- style slot_button:
- properties gui.button_properties("slot_button")
- style slot_button_text:
- properties gui.button_text_properties("slot_button")
- ## Preferences screen ##########################################################
- ##
- ## The preferences screen allows the player to configure the game to better suit
- ## themselves.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#preferences
- screen preferences():
- tag menu
- add gui.game_menu_background
- add "gui/sett.png":
- xpos 0
- ypos 65
- use navigation
- vbox:
- xpos 37
- ypos 128
- spacing 30
- box_wrap True
- vbox:
- style_prefix "radio"
- label _("Display Type")
- hbox:
- textbutton _("WINDOWED") action Preference("display", "any window")
- textbutton _("FULLSCREEN") action Preference("display", "fullscreen")
- vbox:
- style_prefix "radio"
- label _("Window Size")
- hbox:
- textbutton "SMALL" action Preference("display", 0.6)
- textbutton "MEDIUM" action Preference("display", 0.8)
- textbutton "LARGE" action Preference("display", 1.0)
- vbox:
- style_prefix "radio"
- label _("Skip")
- hbox:
- textbutton _("READ TEXT") action Preference("skip", "seen")
- textbutton _("ALL TEXT") action Preference("skip", "all")
- textbutton _("TRANSITIONS") action InvertSelected(Preference("transitions", "toggle"))
- vbox:
- style_prefix "radio"
- label _("Outfit Type")
- hbox:
- textbutton _("ORIGINAL") action SetField(persistent, "dr_cloth", False)
- textbutton _("LOST CODE") action SetField(persistent, "dr_cloth", True)
- ## Additional vboxes of type "radio_pref" or "check_pref" can be
- ## added here, to add additional creator-defined preferences.
- #null width (4 * gui.pref_spacing)
- vbox:
- xpos 640
- ypos 128
- style_prefix "slider"
- vbox:
- spacing 15
- label _("Text Speed")
- bar value Preference("text speed")
- label _("Auto-Forward Time")
- bar value Preference("auto-forward time")
- if config.has_music:
- label _("Music Volume")
- hbox:
- bar value Preference("music volume")
- if config.has_sound:
- label _("Sound Volume")
- hbox:
- bar value Preference("sound volume")
- if config.sample_sound:
- textbutton _("Test") action Play("sound", config.sample_sound)
- if config.has_voice:
- label _("Ambient Volume")
- hbox:
- bar value Preference("ambient volume")
- if config.sample_voice:
- textbutton _("Test") action Play("voice", config.sample_voice)
- if config.has_music or config.has_sound or config.has_voice:
- null height gui.pref_spacing
- textbutton _("Mute All"):
- action Preference("all mute", "toggle")
- style "mute_all_button"
- style pref_label is gui_label
- style pref_label_text is gui_label_text
- style pref_vbox is vbox
- style radio_label is pref_label
- style radio_label_text is pref_label_text
- style radio_button is gui_button
- style radio_button_text is gui_button_text
- style radio_vbox is pref_vbox
- style check_label is pref_label
- style check_label_text is pref_label_text
- style check_button is gui_button
- style check_button_text is gui_button_text
- style check_vbox is pref_vbox
- style slider_label is pref_label
- style slider_label_text is pref_label_text
- style slider_slider is gui_slider
- style slider_button is gui_button
- style slider_button_text is gui_button_text
- style slider_pref_vbox is pref_vbox
- style mute_all_button is check_button
- style mute_all_button_text is check_button_text
- style pref_label:
- top_margin gui.pref_spacing
- bottom_margin 2
- style pref_label_text:
- yalign 1.0
- style pref_vbox:
- xsize 225
- style radio_vbox:
- spacing gui.pref_button_spacing
- style radio_button:
- properties gui.button_properties("radio_button")
- style radio_button_text:
- properties gui.button_text_properties("radio_button")
- style check_vbox:
- spacing gui.pref_button_spacing
- style check_button:
- properties gui.button_properties("check_button")
- style check_button_text:
- properties gui.button_text_properties("check_button")
- style slider_slider:
- xsize 480
- style slider_button:
- properties gui.button_properties("slider_button")
- yalign 0.5
- left_margin 10
- style slider_button_text:
- properties gui.button_text_properties("slider_button")
- style slider_vbox:
- xsize 450
- ## History screen ##############################################################
- ##
- ## This is a screen that displays the dialogue history to the player. While
- ## there isn't anything special about this screen, it does have to access the
- ## dialogue history stored in _history_list.
- ##
- ## https://www.renpy.org/doc/html/history.html
- screen history():
- tag menu
- ## Avoid predicting this screen, as it can be very large.
- predict False
- use game_menu(_("History"), scroll=("vpgrid2" if gui.history_height else "viewport2"), yinitial=1.0):
- style_prefix "history"
- for h in _history_list:
- window:
- ## This lays things out properly if history_height is None.
- has fixed:
- yfit True
- if h.who:
- label h.who:
- style "history_name"
- ## Take the color of the who text from the Character, if
- ## set.
- if "color" in h.who_args:
- text_color h.who_args["color"]
- $ what = renpy.filter_text_tags(h.what, allow="font" "color" "i")
- text what
- if not _history_list:
- label _("{font=fonts/Anivers.otf}The dialogue history is empty.{/font}")
- ## This determines what tags are allowed to be displayed on the history screen.
- define gui.history_allow_tags = set()
- style history_window is empty
- style history_name is gui_label
- style history_name_text:
- font "fonts/ADAM.otf"
- size 18
- style history_text:
- font "fonts/Anivers.otf"
- size 18
- style history_label is gui_label
- style history_label_text is gui_label_text
- style history_window:
- xfill True
- ysize gui.history_height
- style history_name:
- xpos gui.history_name_xpos
- xanchor gui.history_name_xalign
- ypos gui.history_name_ypos
- xsize gui.history_name_width
- style history_name_text:
- min_width gui.history_name_width
- text_align gui.history_name_xalign
- style history_text:
- xpos gui.history_text_xpos
- ypos gui.history_text_ypos
- xanchor gui.history_text_xalign
- xsize gui.history_text_width
- min_width gui.history_text_width
- text_align gui.history_text_xalign
- layout ("subtitle" if gui.history_text_xalign else "tex")
- font "fonts/Anivers.otf"
- style history_label:
- xfill True
- style history_label_text:
- xalign 0.5
- ## Help screen #################################################################
- ##
- ## A screen that gives information about key and mouse bindings. It uses other
- ## screens (keyboard_help, mouse_help, and gamepad_help) to display the actual
- ## help.
- screen help():
- tag menu
- default device = "keyboard"
- use game_menu(_("Help"), scroll="viewport"):
- style_prefix "help"
- vbox:
- spacing 10
- hbox:
- textbutton _("Keyboard") action SetScreenVariable("device", "keyboard")
- textbutton _("Mouse") action SetScreenVariable("device", "mouse")
- if GamepadExists():
- textbutton _("Gamepad") action SetScreenVariable("device", "gamepad")
- if device == "keyboard":
- use keyboard_help
- elif device == "mouse":
- use mouse_help
- elif device == "gamepad":
- use gamepad_help
- screen keyboard_help():
- hbox:
- label _("Enter")
- text _("Advances dialogue and activates the interface.")
- hbox:
- label _("Space")
- text _("Advances dialogue without selecting choices.")
- hbox:
- label _("Arrow Keys")
- text _("Navigate the interface.")
- hbox:
- label _("Escape")
- text _("Accesses the game menu.")
- hbox:
- label _("Ctrl")
- text _("Skips dialogue while held down.")
- hbox:
- label _("Tab")
- text _("Toggles dialogue skipping.")
- hbox:
- label _("Page Up")
- text _("Rolls back to earlier dialogue.")
- hbox:
- label _("Page Down")
- text _("Rolls forward to later dialogue.")
- hbox:
- label "H"
- text _("Hides the user interface.")
- hbox:
- label "S"
- text _("Takes a screenshot.")
- hbox:
- label "V"
- text _("Toggles assistive {a=https://www.renpy.org/l/voicing}self-voicing{/a}.")
- screen mouse_help():
- hbox:
- label _("Left Click")
- text _("Advances dialogue and activates the interface.")
- hbox:
- label _("Middle Click")
- text _("Hides the user interface.")
- hbox:
- label _("Right Click")
- text _("Accesses the game menu.")
- hbox:
- label _("Mouse Wheel Up\nClick Rollback Side")
- text _("Rolls back to earlier dialogue.")
- hbox:
- label _("Mouse Wheel Down")
- text _("Rolls forward to later dialogue.")
- screen gamepad_help():
- hbox:
- label _("Right Trigger\nA/Bottom Button")
- text _("Advances dialogue and activates the interface.")
- hbox:
- label _("Left Trigger\nLeft Shoulder")
- text _("Rolls back to earlier dialogue.")
- hbox:
- label _("Right Shoulder")
- text _("Rolls forward to later dialogue.")
- hbox:
- label _("D-Pad, Sticks")
- text _("Navigate the interface.")
- hbox:
- label _("Start, Guide")
- text _("Accesses the game menu.")
- hbox:
- label _("Y/Top Button")
- text _("Hides the user interface.")
- textbutton _("Calibrate") action GamepadCalibrate()
- style help_button is gui_button
- style help_button_text is gui_button_text
- style help_label is gui_label
- style help_label_text is gui_label_text
- style help_text is gui_text
- style help_button:
- properties gui.button_properties("help_button")
- xmargin 8
- style help_button_text:
- properties gui.button_text_properties("help_button")
- style help_label:
- xsize 250
- right_padding 20
- style help_label_text:
- size gui.text_size
- xalign 1.0
- text_align 1.0
- ################################################################################
- ## Additional screens
- ################################################################################
- ## Confirm screen ##############################################################
- ##
- ## The confirm screen is called when Ren'Py wants to ask the player a yes or no
- ## question.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#confirm
- screen confirm(message, yes_action, no_action):
- ## Ensure other screens do not get input while this screen is displayed.
- 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 _("Yes") action yes_action
- textbutton _("No") action no_action
- ## Right-click and escape answer "no".
- key "game_menu" action no_action
- style confirm_frame is gui_frame
- style confirm_prompt is gui_prompt
- style confirm_prompt_text is gui_prompt_text
- style confirm_button is gui_medium_button
- style confirm_button_text is gui_medium_button_text
- style confirm_frame:
- background Frame([ "gui/confirm_frame.png", "gui/frame.png"], gui.confirm_frame_borders, tile=gui.frame_tile)
- padding gui.confirm_frame_borders.padding
- xalign .5
- yalign .5
- style confirm_prompt_text:
- text_align 0.5
- layout "subtitle"
- style confirm_button:
- properties gui.button_properties("confirm_button")
- style confirm_button_text:
- properties gui.button_text_properties("confirm_button")
- ## Skip indicator screen #######################################################
- ##
- ## The skip_indicator screen is displayed to indicate that skipping is in
- ## progress.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#skip-indicator
- screen skip_indicator():
- zorder 100
- style_prefix "skip"
- frame:
- hbox:
- spacing 6
- text _("Skipping")
- text "▸" at delayed_blink(0.0, 1.0) style "skip_triangle"
- text "▸" at delayed_blink(0.2, 1.0) style "skip_triangle"
- text "▸" at delayed_blink(0.4, 1.0) style "skip_triangle"
- ## This transform is used to blink the arrows one after another.
- transform delayed_blink(delay, cycle):
- alpha .5
- pause delay
- block:
- linear .2 alpha 1.0
- pause .2
- linear .2 alpha 0.5
- pause (cycle - .4)
- repeat
- style skip_frame is empty
- style skip_text is gui_text
- style skip_triangle is skip_text
- style skip_frame:
- ypos gui.skip_ypos
- background Frame("gui/skip.png", gui.skip_frame_borders, tile=gui.frame_tile)
- padding gui.skip_frame_borders.padding
- style skip_text:
- size gui.notify_text_size
- style skip_triangle:
- ## We have to use a font that has the BLACK RIGHT-POINTING SMALL TRIANGLE
- ## glyph in it.
- font "DejaVuSans.ttf"
- size gui.notify_text_size
- line_leading -5
- ## Notify screen ###############################################################
- ##
- ## The notify screen is used to show the player a message. (For example, when
- ## the game is quicksaved or a screenshot has been taken.)
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#notify-screen
- screen notify(message):
- zorder 100
- style_prefix "notify"
- frame at notify_appear:
- text "[message!tq]"
- timer 3.25 action Hide('notify')
- transform notify_appear:
- on show:
- alpha 0
- linear .25 alpha 1.0
- on hide:
- linear .5 alpha 0.0
- style notify_frame is empty
- style notify_text is gui_text
- style notify_frame:
- ypos gui.notify_ypos
- background Frame("gui/notify.png", gui.notify_frame_borders, tile=gui.frame_tile)
- padding gui.notify_frame_borders.padding
- style notify_text:
- properties gui.text_properties("notify")
- ## NVL screen ##################################################################
- ##
- ## This screen is used for NVL-mode dialogue and menus.
- ##
- ## https://www.renpy.org/doc/html/screen_special.html#nvl
- screen nvl(dialogue, items=None):
- window:
- style "nvl_window"
- top_padding 100
- has vbox:
- spacing gui.nvl_spacing
- ## Displays dialogue in either a vpgrid or the vbox.
- if gui.nvl_height:
- vpgrid:
- cols 1
- yinitial 1.0
- use nvl_dialogue(dialogue)
- else:
- use nvl_dialogue(dialogue)
- ## Displays the menu, if given. The menu may be displayed incorrectly if
- ## config.narrator_menu is set to True, as it is above.
- for i in items:
- textbutton i.caption:
- action i.action
- style "nvl_button"
- add SideImage() xalign 0.0 yalign 1.0
- screen nvl_dialogue(dialogue):
- for d in dialogue:
- window:
- id d.window_id
- fixed:
- yfit gui.nvl_height is None
- if d.who is not None:
- text d.who:
- id d.who_id
- text d.what:
- id d.what_id
- ## This controls the maximum number of NVL-mode entries that can be displayed at
- ## once.
- define config.nvl_list_length = gui.nvl_list_length
- style nvl_window is default
- style nvl_entry is default
- style nvl_label is say_label
- style nvl_dialogue is say_dialogue
- style nvl_button is button
- style nvl_button_text is button_text
- style nvl_window:
- xfill True
- yfill True
- background "gui/nvl.png"
- padding gui.nvl_borders.padding
- style nvl_entry:
- xfill True
- ysize gui.nvl_height
- style nvl_label:
- xpos gui.nvl_name_xpos
- xanchor gui.nvl_name_xalign
- ypos gui.nvl_name_ypos
- yanchor 0.0
- xsize gui.nvl_name_width
- min_width gui.nvl_name_width
- text_align gui.nvl_name_xalign
- style nvl_dialogue:
- xpos gui.nvl_text_xpos
- xanchor gui.nvl_text_xalign
- ypos gui.nvl_text_ypos
- xsize gui.nvl_text_width
- min_width gui.nvl_text_width
- text_align gui.nvl_text_xalign
- layout ("subtitle" if gui.nvl_text_xalign else "tex")
- style nvl_thought:
- xpos gui.nvl_thought_xpos
- xanchor gui.nvl_thought_xalign
- ypos gui.nvl_thought_ypos
- xsize gui.nvl_thought_width
- min_width gui.nvl_thought_width
- text_align gui.nvl_thought_xalign
- layout ("subtitle" if gui.nvl_text_xalign else "tex")
- style nvl_button:
- properties gui.button_properties("nvl_button")
- xpos gui.nvl_button_xpos
- xanchor gui.nvl_button_xalign
- style nvl_button_text:
- properties gui.button_text_properties("nvl_button")
- screen interlude:
- add "saferoom"
- vbox:
- xpos gui.navigation_xpos
- yalign 0.5
- spacing gui.navigation_spacing
- textbutton _("Next Chapter") action Return()
- textbutton _("Save Game") action ShowMenu("save")
- textbutton _("Load Game") action ShowMenu("load")
- textbutton _("Return to Menu") action MainMenu(confirm=True)
- screen chapterselect:
- use chapterselect_1
- screen chapterselect_1:
- tag chapmenu
- add "bg/hansei.jpg"
- vbox:
- xpos 0.0
- yalign 0.5
- spacing gui.navigation_spacing
- textbutton _("Select Path") action Jump("rinroute") style "mm_button"
- textbutton _("Next Path") action Show("chapterselect_2") style "mm_button"
- screen chapterselect_2:
- tag chapmenu
- add "bg/tsuku.jpg"
- vbox:
- xpos 0.0
- yalign 0.5
- spacing gui.navigation_spacing
- textbutton _("Select Path") action Jump("kenroute") style "mm_button"
- if persistent.completed_rin_and_ken:
- textbutton _("Next Path") action Show("chapterselect_3") style "mm_button"
- textbutton _("Prev Path") action Show("chapterselect_1") style "mm_button"
- screen chapterselect_3:
- tag chapmenu
- add "bg/harashi.jpg"
- vbox:
- xpos 0.0
- yalign 0.5
- spacing gui.navigation_spacing
- textbutton _("Select Path") action Jump("sukuroute") style "mm_button"
- textbutton _("Prev Path") action Show("chapterselect_2") style "mm_button"
- ##Musicroom
- init python:
- mr = MusicRoom(fadeout=1.0)
- mr.add("Akasakura")
- mr.add("Black Clouds")
- mr.add("Coffee Break")
- mr.add("Creepy Hollow")
- mr.add("Depths of Chaos")
- mr.add("Gregorian Chant")
- mr.add("Happy Days")
- mr.add("In Doubt")
- mr.add("Darkness")
- mr.add("Insidious")
- mr.add("Kamunabi")
- mr.add("Mending")
- mr.add("One More Reflection")
- mr.add("Ossuary")
- mr.add("Past the Edge")
- mr.add("Piano Lullaby")
- mr.add("Reflection")
- mr.add("Resting Place", always_unlocked=True)
- mr.add("Shadowlands")
- mr.add("Summer Chill")
- mr.add("Swaying Daisies")
- mr.add("Take Four")
- mr.add("The Big Sky")
- # Step 3. Create the music room screen.
- screen music_room:
- tag menu
- use bonus_game_menu(_("Music Room")):
- vbox:
- spacing 2
- textbutton "Akasakura" action mr.Play("Akasakura") style "mr_button"
- textbutton "Black Clouds" action mr.Play("Black Clouds") style "mr_button"
- textbutton "Coffee Break" action mr.Play("Coffee Break") style "mr_button"
- textbutton "Creepy Hollow" action mr.Play("Creepy Hollow") style "mr_button"
- textbutton "Depths of Chaos" action mr.Play("Depths of Chaos") style "mr_button"
- textbutton "Gregorian Chant" action mr.Play("Gregorian Chant") style "mr_button"
- textbutton "Happy Days" action mr.Play("Happy Days") style "mr_button"
- textbutton "In Doubt" action mr.Play("In Doubt") style "mr_button"
- textbutton "In the Darkness" action mr.Play("Darkness") style "mr_button"
- textbutton "Insidious" action mr.Play("Insidious") style "mr_button"
- textbutton "Kamunabi" action mr.Play("Kamunabi") style "mr_button"
- vbox:
- xalign 0.5
- spacing 2
- textbutton "Mending" action mr.Play("Mending") style "mr_button"
- textbutton "One More Reflection" action mr.Play("One More Reflection") style "mr_button"
- textbutton "Past the Edge" action mr.Play("Past the Edge") style "mr_button"
- textbutton "Reflection" action mr.Play("Reflection") style "mr_button"
- textbutton "Resting Place" action mr.Play("Resting Place") style "mr_button"
- textbutton "Piano Lullaby" action mr.Play("Piano Lullaby") style "mr_button"
- textbutton "Shadowlands" action mr.Play("Shadowlands") style "mr_button"
- textbutton "Summer Chill" action mr.Play("Summer Chill") style "mr_button"
- textbutton "Swaying Daisies" action mr.Play("Swaying Daisies") style "mr_button"
- textbutton "Take Four" action mr.Play("Take Four") style "mr_button"
- textbutton "The Big Sky" action mr.Play("The Big Sky") style "mr_button"
- hbox:
- spacing 20
- xpos 350 ypos 550
- textbutton "Play" action mr.Play()
- textbutton "Next Track" action mr.Next()
- textbutton "Previous Track" action mr.Previous()
- textbutton "Stop" action mr.Stop()
- # Start the music playing on entry to the music room.
- on "replace" action mr.Play()
- # Restore the main menu music upon leaving.
- on "replaced" action Play("music", "Resting Place")
- init -2:
- style mr_button is button:
- xminimum 5
- top_padding 6
- style mr_button background "gui/button/mr_box_idle.png"
- style mr_button insensitive_background "gui/button/mr_box_idle.png"
- style mr_button hover_background "gui/button/mr_box_hover.png"
- style mr_button selected_idle_background "gui/button/mr_box_sel_idle.png"
- style mr_button selected_hover_background "gui/button/mr_box_hover.png"
- style mr_button focus_mask "gui/button/mr_box_hover.png"
- style mr_button hover_sound "audio/sfx/hover.ogg"
- style mr_button_text color "#888888"
- style mr_button_text hover_color "#fff"
- style mr_button_text selected_color "#fff"
- style mr_button_text insensitive_color "#808080"
- ################################################################################
- ## Mobile Variants
- ################################################################################
- style pref_vbox:
- variant "medium"
- xsize 450
- ## Since a mouse may not be present, we replace the quick menu with a version
- ## that uses fewer and bigger buttons that are easier to touch.
- screen quick_menu():
- variant "touch"
- zorder 100
- hbox:
- style_prefix "quick"
- xalign 0.5
- yalign 1.0
- textbutton _("Back") action Rollback()
- textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True)
- textbutton _("Auto") action Preference("auto-forward", "toggle")
- textbutton _("Menu") action ShowMenu()
- style window:
- variant "small"
- background "gui/phone/textbox.png"
- style radio_button:
- variant "small"
- foreground "gui/phone/button/check_[prefix_]foreground.png"
- style check_button:
- variant "small"
- foreground "gui/phone/button/check_[prefix_]foreground.png"
- style nvl_window:
- variant "small"
- background "gui/phone/nvl.png"
- style main_menu_frame:
- variant "small"
- background "gui/phone/overlay/main_menu.png"
- style game_menu_outer_frame:
- variant "small"
- background "gui/phone/overlay/game_menu.png"
- style game_menu_navigation_frame:
- variant "small"
- xsize 340
- style game_menu_content_frame:
- variant "small"
- top_margin 0
- style pref_vbox:
- variant "small"
- xsize 400
- style bar:
- variant "small"
- ysize gui.bar_size
- left_bar Frame("gui/phone/bar/left.png", gui.bar_borders, tile=gui.bar_tile)
- right_bar Frame("gui/phone/bar/right.png", gui.bar_borders, tile=gui.bar_tile)
- style vbar:
- variant "small"
- xsize gui.bar_size
- top_bar Frame("gui/phone/bar/top.png", gui.vbar_borders, tile=gui.bar_tile)
- bottom_bar Frame("gui/phone/bar/bottom.png", gui.vbar_borders, tile=gui.bar_tile)
- style scrollbar:
- variant "small"
- ysize gui.scrollbar_size
- base_bar Frame("gui/phone/scrollbar/horizontal_[prefix_]bar.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
- thumb Frame("gui/phone/scrollbar/horizontal_[prefix_]thumb.png", gui.scrollbar_borders, tile=gui.scrollbar_tile)
- style vscrollbar:
- variant "small"
- xsize gui.scrollbar_size
- base_bar Frame("gui/phone/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
- thumb Frame("gui/phone/scrollbar/vertical_[prefix_]thumb.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
- style slider:
- variant "small"
- ysize gui.slider_size
- base_bar Frame("gui/phone/slider/horizontal_[prefix_]bar.png", gui.slider_borders, tile=gui.slider_tile)
- thumb "gui/phone/slider/horizontal_[prefix_]thumb.png"
- style vslider:
- variant "small"
- xsize gui.slider_size
- base_bar Frame("gui/phone/slider/vertical_[prefix_]bar.png", gui.vslider_borders, tile=gui.slider_tile)
- thumb "gui/phone/slider/vertical_[prefix_]thumb.png"
- style slider_pref_vbox:
- variant "small"
- xsize None
- style slider_pref_slider:
- variant "small"
- xsize 600
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement