diff --git a/game/gui.rpy b/game/gui.rpy index f82f10a..1673e45 100644 --- a/game/gui.rpy +++ b/game/gui.rpy @@ -23,14 +23,14 @@ init python: ## The colors of text in the interface. ## An accent color used throughout the interface to label and highlight text. -define gui.accent_color = '#FF00FC' +define gui.accent_color = '#A2029F' ## The color used for a text button when it is neither selected nor hovered. -define gui.idle_color = '#FFFE00' +define gui.idle_color = '#D5D507' ## The small color is used for small text, which needs to be brighter/darker to ## achieve the same effect. -define gui.idle_small_color = '#0001FF' +define gui.idle_small_color = '#00E1FF' ## The color that is used for buttons and bars that are hovered. define gui.hover_color = '#00FF03' @@ -47,10 +47,19 @@ define gui.insensitive_color = '#8888887f' define gui.muted_color = '#3d1466' define gui.hover_muted_color = '#5b1e99' -## The colors used for dialogue and menu choice text. +## The colors used for dialogue and menu choice text define gui.text_color = '#ffffff' +#define gui.text_color_outline = '#00000000' + define gui.interface_text_color = '#ffffff' +## Default font outline color +define gui.default_outline = '#000' + +## Namebox outline color +define gui.name_outline = '#000000dd' + +define gui.main_menu_color = '#FFF' ## Fonts and Font Sizes ######################################################## @@ -64,23 +73,30 @@ define gui.name_text_font = "gui/FallingSky.otf" define gui.interface_text_font = "gui/FallingSky.otf" ## The size of normal dialogue text. -define gui.text_size = 40 +define gui.text_size = 42 +#define gui.text_outlines = [ (absolute(0.5), gui.text_color_outline, 0, 0) ] ## The size of character names. define gui.name_text_size = 45 +define gui.name_text_outlines = [ (absolute(1.5), gui.name_outline, 0, 0) ] ## The size of text in the game's user interface. define gui.interface_text_size = 33 +define gui.interface_text_outlines = [ (1, gui.default_outline, 0, 0) ] ## The size of labels in the game's user interface. define gui.label_text_size = 36 +define gui.label_text_outlines = [ (2, gui.default_outline, 0, 0) ] ## The size of text on the notify screen. define gui.notify_text_size = 24 +#define gui.notify_text_outlines = [ (2, gui.default_outline, 0, 0) ] ## The size of the game's title. define gui.title_text_size = 75 +#define gui.title_text_outlines = [ (2, gui.default_outline, 0, 0) ] +define gui.main_menu_text_size = 60 ## Main and Game Menus ######################################################### @@ -105,12 +121,14 @@ define gui.textbox_yalign = 1.0 ## The placement of the speaking character's name, relative to the textbox. ## These can be a whole number of pixels from the left or top, or 0.5 to center. -define gui.name_xpos = 285 -define gui.name_ypos = -90 +define gui.name_xpos = 350 +define gui.name_ypos = -85 + +define gui.name_large_xpos = 395 ## The horizontal alignment of the character's name. This can be 0.0 for left- ## aligned, 0.5 for centered, and 1.0 for right-aligned. -define gui.name_xalign = 0.0 +define gui.name_xalign = 0.5 ## The width, height, and borders of the box containing the character's name, or ## None to automatically size it. @@ -125,21 +143,21 @@ define gui.namebox_borders = Borders(5, 5, 5, 5) ## background of the namebox will be scaled. define gui.namebox_tile = False - ## The placement of dialogue relative to the textbox. These can be a whole ## number of pixels relative to the left or top side of the textbox, or 0.5 to ## center. #To make the text with the characters align to the normal text, I set this to match up and make it "just werk". It is a horrible, hacky fix, but werks none the less. I hope this fix is so bad that I never get to write gui code ever again. -define gui.dialogue_xpos = 365 -define gui.dialogue_ypos = 47 - -## The maximum width of dialogue text, in pixels. -define gui.dialogue_width = 1116 +#It's still bad but it could be legitmately worse +define gui.dialogue_ypos = 20 +define gui.dialogue_xpos = 220 +define gui.dialogue_width = 1460 ## The horizontal alignment of the dialogue text. This can be 0.0 for left- ## aligned, 0.5 for centered, and 1.0 for right-aligned. define gui.dialogue_text_xalign = 0.0 +define gui.window_yoffset = 0 +define gui.input_yoffset = 0 ## Buttons ##################################################################### ## @@ -428,18 +446,23 @@ init python: if renpy.variant("small"): ## Font sizes. - gui.text_size = 45 - gui.name_text_size = 54 + gui.text_size = 44 + gui.name_text_size = 48 gui.notify_text_size = 38 gui.interface_text_size = 45 gui.button_text_size = 45 gui.label_text_size = 51 + ## Namebox + gui.name_xpos = 345 + gui.name_ypos = -85 + ## Adjust the location of the textbox. - gui.textbox_height = 360 - gui.name_xpos = 120 - gui.text_xpos = 135 - gui.text_width = 1650 + gui.dialogue_ypos = 20 + gui.dialogue_xpos = 240 + gui.dialogue_width = 1460 + gui.window_yoffset = -75 + ## Change the size and spacing of various things. gui.slider_size = 54 @@ -453,10 +476,6 @@ init python: gui.quick_button_text_size = 30 - ## File button layout. - gui.file_slot_cols = 2 - gui.file_slot_rows = 2 - ## NVL-mode. gui.nvl_height = 255 @@ -474,4 +493,7 @@ init python: gui.nvl_button_xpos = 30 + ## Input, OSK, very specific + if renpy.variant("small") or renpy.variant("touch"): + gui.input_yoffset = -625 diff --git a/game/gui/button/menubuttons/aboutbutton_idle.png b/game/gui/button/menubuttons/aboutbutton_idle.png deleted file mode 100644 index 6f1a5e8..0000000 Binary files a/game/gui/button/menubuttons/aboutbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/aboutbutton_selected_hover.png b/game/gui/button/menubuttons/aboutbutton_selected_hover.png deleted file mode 100644 index 7a63cb1..0000000 Binary files a/game/gui/button/menubuttons/aboutbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/aboutbutton_selected_idle.png b/game/gui/button/menubuttons/aboutbutton_selected_idle.png deleted file mode 100644 index 7a63cb1..0000000 Binary files a/game/gui/button/menubuttons/aboutbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/extrasbutton.png b/game/gui/button/menubuttons/extrasbutton.png deleted file mode 100644 index 661e0cd..0000000 Binary files a/game/gui/button/menubuttons/extrasbutton.png and /dev/null differ diff --git a/game/gui/button/menubuttons/extrasbutton_idle.png b/game/gui/button/menubuttons/extrasbutton_idle.png deleted file mode 100644 index 661e0cd..0000000 Binary files a/game/gui/button/menubuttons/extrasbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/extrasbutton_selected_hover.png b/game/gui/button/menubuttons/extrasbutton_selected_hover.png deleted file mode 100644 index 90c3716..0000000 Binary files a/game/gui/button/menubuttons/extrasbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/extrasbutton_selected_idle.png b/game/gui/button/menubuttons/extrasbutton_selected_idle.png deleted file mode 100644 index 90c3716..0000000 Binary files a/game/gui/button/menubuttons/extrasbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/gallerybutton.png b/game/gui/button/menubuttons/gallerybutton.png deleted file mode 100644 index 62ec66f..0000000 Binary files a/game/gui/button/menubuttons/gallerybutton.png and /dev/null differ diff --git a/game/gui/button/menubuttons/gallerybutton_idle.png b/game/gui/button/menubuttons/gallerybutton_idle.png deleted file mode 100644 index 62ec66f..0000000 Binary files a/game/gui/button/menubuttons/gallerybutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/gallerybutton_selected_hover.png b/game/gui/button/menubuttons/gallerybutton_selected_hover.png deleted file mode 100644 index e3a9fea..0000000 Binary files a/game/gui/button/menubuttons/gallerybutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/gallerybutton_selected_idle.png b/game/gui/button/menubuttons/gallerybutton_selected_idle.png deleted file mode 100644 index e3a9fea..0000000 Binary files a/game/gui/button/menubuttons/gallerybutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/helpbutton.png b/game/gui/button/menubuttons/helpbutton.png deleted file mode 100644 index 0d5b1d7..0000000 Binary files a/game/gui/button/menubuttons/helpbutton.png and /dev/null differ diff --git a/game/gui/button/menubuttons/helpbutton_idle.png b/game/gui/button/menubuttons/helpbutton_idle.png deleted file mode 100644 index 6d994cb..0000000 Binary files a/game/gui/button/menubuttons/helpbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/helpbutton_selected_hover.png b/game/gui/button/menubuttons/helpbutton_selected_hover.png deleted file mode 100644 index db2dbf4..0000000 Binary files a/game/gui/button/menubuttons/helpbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/helpbutton_selected_idle.png b/game/gui/button/menubuttons/helpbutton_selected_idle.png deleted file mode 100644 index db2dbf4..0000000 Binary files a/game/gui/button/menubuttons/helpbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/loadbutton_idle.png b/game/gui/button/menubuttons/loadbutton_idle.png deleted file mode 100644 index 1a9ee6e..0000000 Binary files a/game/gui/button/menubuttons/loadbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/loadbutton_selected_hover.png b/game/gui/button/menubuttons/loadbutton_selected_hover.png deleted file mode 100644 index c2f6d7b..0000000 Binary files a/game/gui/button/menubuttons/loadbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/loadbutton_selected_idle.png b/game/gui/button/menubuttons/loadbutton_selected_idle.png deleted file mode 100644 index c2f6d7b..0000000 Binary files a/game/gui/button/menubuttons/loadbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/optionsbutton_idle.png b/game/gui/button/menubuttons/optionsbutton_idle.png deleted file mode 100644 index 977750c..0000000 Binary files a/game/gui/button/menubuttons/optionsbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/optionsbutton_selected_hover.png b/game/gui/button/menubuttons/optionsbutton_selected_hover.png deleted file mode 100644 index dd8db16..0000000 Binary files a/game/gui/button/menubuttons/optionsbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/optionsbutton_selected_idle.png b/game/gui/button/menubuttons/optionsbutton_selected_idle.png deleted file mode 100644 index dd8db16..0000000 Binary files a/game/gui/button/menubuttons/optionsbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/quitbutton_idle.png b/game/gui/button/menubuttons/quitbutton_idle.png deleted file mode 100644 index d3fe89f..0000000 Binary files a/game/gui/button/menubuttons/quitbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/quitbutton_selected_hover.png b/game/gui/button/menubuttons/quitbutton_selected_hover.png deleted file mode 100644 index 3b89f6a..0000000 Binary files a/game/gui/button/menubuttons/quitbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/quitbutton_selected_idle.png b/game/gui/button/menubuttons/quitbutton_selected_idle.png deleted file mode 100644 index 3b89f6a..0000000 Binary files a/game/gui/button/menubuttons/quitbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/returnbutton_idle.png b/game/gui/button/menubuttons/returnbutton_idle.png deleted file mode 100644 index 3db0bdc..0000000 Binary files a/game/gui/button/menubuttons/returnbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/startbutton_idle.png b/game/gui/button/menubuttons/startbutton_idle.png deleted file mode 100644 index c4fb96e..0000000 Binary files a/game/gui/button/menubuttons/startbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/startbutton_selected_hover.png b/game/gui/button/menubuttons/startbutton_selected_hover.png deleted file mode 100644 index 1848949..0000000 Binary files a/game/gui/button/menubuttons/startbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/startbutton_selected_idle.png b/game/gui/button/menubuttons/startbutton_selected_idle.png deleted file mode 100644 index 1848949..0000000 Binary files a/game/gui/button/menubuttons/startbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/template_idle.png b/game/gui/button/menubuttons/template_idle.png new file mode 100644 index 0000000..a0afafa Binary files /dev/null and b/game/gui/button/menubuttons/template_idle.png differ diff --git a/game/gui/button/menubuttons/updatesbutton_idle.png b/game/gui/button/menubuttons/updatesbutton_idle.png deleted file mode 100644 index 185961a..0000000 Binary files a/game/gui/button/menubuttons/updatesbutton_idle.png and /dev/null differ diff --git a/game/gui/button/menubuttons/updatesbutton_selected_hover.png b/game/gui/button/menubuttons/updatesbutton_selected_hover.png deleted file mode 100644 index 15c4ce8..0000000 Binary files a/game/gui/button/menubuttons/updatesbutton_selected_hover.png and /dev/null differ diff --git a/game/gui/button/menubuttons/updatesbutton_selected_idle.png b/game/gui/button/menubuttons/updatesbutton_selected_idle.png deleted file mode 100644 index 15c4ce8..0000000 Binary files a/game/gui/button/menubuttons/updatesbutton_selected_idle.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/auto_hover.png b/game/gui/button/uioptionbuttons/auto_hover.png deleted file mode 100644 index e350a73..0000000 Binary files a/game/gui/button/uioptionbuttons/auto_hover.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/auto_idle.png b/game/gui/button/uioptionbuttons/auto_idle.png deleted file mode 100644 index 2cce9a8..0000000 Binary files a/game/gui/button/uioptionbuttons/auto_idle.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/load_hover.png b/game/gui/button/uioptionbuttons/load_hover.png deleted file mode 100644 index 2aafd23..0000000 Binary files a/game/gui/button/uioptionbuttons/load_hover.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/load_idle.png b/game/gui/button/uioptionbuttons/load_idle.png deleted file mode 100644 index cede8e2..0000000 Binary files a/game/gui/button/uioptionbuttons/load_idle.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/save_hover.png b/game/gui/button/uioptionbuttons/save_hover.png deleted file mode 100644 index 08b5171..0000000 Binary files a/game/gui/button/uioptionbuttons/save_hover.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/save_idle.png b/game/gui/button/uioptionbuttons/save_idle.png deleted file mode 100644 index ad75b70..0000000 Binary files a/game/gui/button/uioptionbuttons/save_idle.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/skip_hover.png b/game/gui/button/uioptionbuttons/skip_hover.png deleted file mode 100644 index 1597233..0000000 Binary files a/game/gui/button/uioptionbuttons/skip_hover.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/skip_idle.png b/game/gui/button/uioptionbuttons/skip_idle.png deleted file mode 100644 index ccee409..0000000 Binary files a/game/gui/button/uioptionbuttons/skip_idle.png and /dev/null differ diff --git a/game/gui/button/uioptionbuttons/template_hover.png b/game/gui/button/uioptionbuttons/template_hover.png new file mode 100644 index 0000000..f85807a Binary files /dev/null and b/game/gui/button/uioptionbuttons/template_hover.png differ diff --git a/game/gui/button/uioptionbuttons/template_idle.png b/game/gui/button/uioptionbuttons/template_idle.png new file mode 100644 index 0000000..6dbd805 Binary files /dev/null and b/game/gui/button/uioptionbuttons/template_idle.png differ diff --git a/game/gui/gallery/unlocked_cg_button_cover.png b/game/gui/gallery/unlocked_cg_button_cover.png new file mode 100644 index 0000000..9781519 Binary files /dev/null and b/game/gui/gallery/unlocked_cg_button_cover.png differ diff --git a/game/images/animations/fangtail.webm b/game/images/animations/fang tail.webm similarity index 100% rename from game/images/animations/fangtail.webm rename to game/images/animations/fang tail.webm diff --git a/game/images/cgs/d04.jpg b/game/images/cgs/d04.jpg deleted file mode 100644 index adb0363..0000000 Binary files a/game/images/cgs/d04.jpg and /dev/null differ diff --git a/game/images/cgs/d04a.jpg b/game/images/cgs/d04a.jpg deleted file mode 100644 index 7a90ef4..0000000 Binary files a/game/images/cgs/d04a.jpg and /dev/null differ diff --git a/game/images/cgs/fangfuneral2.jpg b/game/images/cgs/fangfuneral2.jpg deleted file mode 100644 index 3da4f87..0000000 Binary files a/game/images/cgs/fangfuneral2.jpg and /dev/null differ diff --git a/game/images/cgs/wounds1.jpg b/game/images/cgs/wounds01.jpg similarity index 100% rename from game/images/cgs/wounds1.jpg rename to game/images/cgs/wounds01.jpg diff --git a/game/images/cgs/wounds2.jpg b/game/images/cgs/wounds02.jpg similarity index 100% rename from game/images/cgs/wounds2.jpg rename to game/images/cgs/wounds02.jpg diff --git a/game/images/cgs/wounds3.jpg b/game/images/cgs/wounds03.jpg similarity index 100% rename from game/images/cgs/wounds3.jpg rename to game/images/cgs/wounds03.jpg diff --git a/game/images/cgs/wounds4.jpg b/game/images/cgs/wounds04.jpg similarity index 100% rename from game/images/cgs/wounds4.jpg rename to game/images/cgs/wounds04.jpg diff --git a/game/images/cgs/wounds5.jpg b/game/images/cgs/wounds05.jpg similarity index 100% rename from game/images/cgs/wounds5.jpg rename to game/images/cgs/wounds05.jpg diff --git a/game/images/cgs/wounds6.jpg b/game/images/cgs/wounds06.jpg similarity index 100% rename from game/images/cgs/wounds6.jpg rename to game/images/cgs/wounds06.jpg diff --git a/game/images/cgs/wounds7.jpg b/game/images/cgs/wounds07.jpg similarity index 100% rename from game/images/cgs/wounds7.jpg rename to game/images/cgs/wounds07.jpg diff --git a/game/images/cgs/wounds8.jpg b/game/images/cgs/wounds08.jpg similarity index 100% rename from game/images/cgs/wounds8.jpg rename to game/images/cgs/wounds08.jpg diff --git a/game/images/cgs/wounds9.jpg b/game/images/cgs/wounds09.jpg similarity index 100% rename from game/images/cgs/wounds9.jpg rename to game/images/cgs/wounds09.jpg diff --git a/game/options.rpy b/game/options.rpy index 7c99856..1f158c7 100644 --- a/game/options.rpy +++ b/game/options.rpy @@ -77,7 +77,7 @@ define config.exit_transition = dissolve ## Between screens of the game menu. -define config.intra_transition = dissolve +define config.intra_transition = Dissolve(0.20) ## A transition that is used after a game has been loaded. diff --git a/game/screens.rpy b/game/screens.rpy index f2e13ea..53bb0a1 100644 --- a/game/screens.rpy +++ b/game/screens.rpy @@ -6,7 +6,7 @@ init python: persistent.autoup = False if persistent.updateWebServer is None: persistent.updateWebServer = "http://updates.snootgame.xyz/updates.json" - + def UpdateCheck(): # WHY YES I ONLY ALLOW PEOPLE USING MY FRAMEWORK TO CHECK FOR AN UPDATE EVERY SIX FUCKING HOURS HOW DID YOU KNOW # NOPE check_interval=5 (5 SECONDS) FUCK YOU @@ -16,6 +16,9 @@ init python: else: persistent.updateresult = pendingVersion + def ToggleAutoUpdate(): + persistent.autoup = not persistent.autoup + ################################################################################ ## Initialization ################################################################################ @@ -119,11 +122,13 @@ screen say(who, what): id "window" if who is not None: - + background Image("gui/textbox.png", xalign=0.5, yalign=1.0) window: id "namebox" style "namebox" text who id "who" + else: + background Image("gui/textbox_no_hitch.png", xalign=0.5, yalign=1.0) text what id "what" @@ -152,23 +157,23 @@ style window: xfill True yalign gui.textbox_yalign ysize gui.textbox_height - - background Image("gui/textbox_no_hitch.png", xalign=0.5, yalign=1.0) + xoffset 0 + yoffset gui.window_yoffset + xcenter 0.5 style namebox: + xalign 0.5 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 namebox_large is namebox: + xpos gui.name_large_xpos style say_label: properties gui.text_properties("name", accent=True) xalign gui.name_xalign yalign 0.5 + xanchor gui.name_xalign style say_dialogue: properties gui.text_properties("dialogue") @@ -192,12 +197,13 @@ screen input(prompt): style_prefix "input" window: - + add Image("gui/textbox_no_hitch.png", xalign=0.5, yalign=1.0, yoffset=gui.input_yoffset) #for mobile OSK vbox: xalign gui.dialogue_text_xalign xpos gui.dialogue_xpos xsize gui.dialogue_width ypos gui.dialogue_ypos + yoffset gui.input_yoffset #for mobile OSK text prompt style "input_prompt" input id "input" @@ -257,6 +263,21 @@ style choice_button_text is default: ## The quick menu is displayed in-game to provide easy access to the out-of-game ## menus. +screen quick_button(filename, label, function): + button: + xmaximum 80 + ymaximum 72 + action function + fixed: + add filename xalign 0.5 yalign 0.5 zoom 1 + text label xalign 0.5 yalign 0.5 xanchor 0.5 size 22 style "quick_button_text" + +# label_functions is [ [ "label", function() ], [ "foobar", foobar() ], .. ] +# Reuse the same image string and keep things 'neat'. +screen quick_buttons(filename, label_functions): + for l_f in label_functions: + use quick_button(filename, l_f[0], l_f[1]) + screen quick_menu(): ## Ensure this appears on top of other screens. @@ -268,14 +289,16 @@ screen quick_menu(): ypos 0.977 grid 1 4: style_prefix "quick" - xalign 0.0 - yalign 0.0 - #imagebutton auto "gui/button/uioptionbuttons/skip_%s.png" action Rollback() - imagebutton auto "gui/button/uioptionbuttons/skip_%s.png" action Skip() alternate Skip(fast=True, confirm=True) - imagebutton auto "gui/button/uioptionbuttons/save_%s.png" action ShowMenu('save') - imagebutton auto "gui/button/uioptionbuttons/auto_%s.png" action Preference("auto-forward", "toggle") - imagebutton auto "gui/button/uioptionbuttons/load_%s.png" action ShowMenu('load') + xalign -0.005 + yalign 0.010 + use quick_buttons("gui/button/uioptionbuttons/template_idle.png", \ + [ \ + [ "Skip", Skip() ], \ + [ "Save", ShowMenu('save') ], \ + [ "Auto", Preference("auto-forward", "toggle") ], \ + [ "Load", ShowMenu('load') ] \ + ] ) screen score_menu(): zorder 100 @@ -292,7 +315,6 @@ screen score_menu(): text "DEBUG SCORE CARD" - ## This code ensures that the quick_menu screen is displayed in-game, whenever ## the player has not explicitly hidden the interface. init python: @@ -307,14 +329,17 @@ style quick_button: properties gui.button_properties("quick_button") style quick_button_text: - properties gui.button_text_properties("quick_button") + #properties gui.button_text_properties("quick_button") + color gui.selected_color + hover_color gui.hover_color + selected_color gui.accent_color ################################################################################ ## Main and Game Menu Screens ################################################################################ -## Navigation screen ########################################################### +## Navigation screen ########################################################## ## ## This screen is included in the main and game menus, and provides navigation ## to other menus, and to start the game. @@ -332,8 +357,10 @@ screen navigation(): textbutton _("History") action ShowMenu("history") textbutton _("Save") action ShowMenu("save") textbutton _("Load") action ShowMenu("load") + textbutton _("Delete") action ShowMenu("delete") textbutton _("Options") action ShowMenu("preferences") - textbutton _("Extras") action ShowMenu("extras") + #textbutton _("Extras") action ShowMenu("extras") + textbutton _("Return") action Return() if _in_replay: @@ -345,11 +372,11 @@ screen navigation(): textbutton _("Main Menu") action MainMenu() #textbutton _("Debug Score Card") action ShowMenu("score_menu") - if renpy.variant("pc"): + #if renpy.variant("pc"): ## The quit button is banned on iOS and unnecessary on Android and ## Web. - textbutton _("Quit") action Quit() + #textbutton _("Quit") action Quit() style navigation_button is gui_button @@ -369,6 +396,22 @@ style navigation_button_text: ## ## https://www.renpy.org/doc/html/screen_special.html#main-menu +#similar to quick_button funcs +screen main_menu_button(filename, label, function): + button: + xmaximum 500 + ymaximum 129 + action function + fixed: + add filename xalign 0.5 yalign 0.5 zoom 1 + text label xalign 0.5 yalign 0.5 xanchor 0.5 + +# label_functions is [ [ "label", function() ], [ "foobar", foobar() ], .. ] +# Reuse the same image string and keep things 'neat'. +screen main_menu_buttons(filename, label_functions): + for l_f in label_functions: + use main_menu_button(filename, l_f[0], l_f[1]) + screen main_menu(): ## This ensures that any other menu screen is replaced. @@ -386,21 +429,25 @@ screen main_menu(): ## The use statement includes another screen inside this one. The actual ## contents of the main menu are in the navigation screen. vbox: - xpos 1940 - yalign 0.03 - if persistent.splashtype == 1: - add "gui/sneedgame.png" - else: - add "gui/snootgame.png" + xpos 1940 + yalign 0.03 + if persistent.splashtype == 1: + add "gui/sneedgame.png" + else: + add "gui/snootgame.png" vbox: - spacing 25 - xpos 1885 - yalign 0.9 - imagebutton auto "gui/button/menubuttons/startbutton_%s.png" action Start() - imagebutton auto "gui/button/menubuttons/loadbutton_%s.png" action ShowMenu("load") - imagebutton auto "gui/button/menubuttons/optionsbutton_%s.png" action ShowMenu("preferences") - imagebutton auto "gui/button/menubuttons/extrasbutton_%s.png" action ShowMenu("extras") - imagebutton auto "gui/button/menubuttons/quitbutton_%s.png" action Quit(confirm=not main_menu) + spacing 25 + xpos 1885 + yalign 0.9 + use main_menu_buttons("gui/button/menubuttons/template_idle.png", + [ \ + [ "Start", Start() ], \ + [ "Load", ShowMenu("load") ], \ + [ "Options", ShowMenu("preferences") ], \ + [ "Extras", ShowMenu("extras") ], \ + [ "Quit", Quit(confirm=not main_menu) ] \ + ] ) + on "show" action renpy.start_predict_screen("cg_gallery") style main_menu_frame is empty style main_menu_vbox is vbox @@ -419,10 +466,13 @@ style main_menu_vbox: xoffset -30 xmaximum 1200 yalign 1.0 - yoffset -30 + yoffset -60 style main_menu_text: - properties gui.text_properties("main_menu", accent=True) + properties gui.text_properties("main_menu") #, accent=True) + color gui.main_menu_color + hover_color gui.hover_color + size gui.main_menu_text_size style main_menu_title: properties gui.text_properties("title") @@ -496,11 +546,6 @@ screen game_menu(title, scroll=None, yinitial=0.0): use navigation - textbutton _("Return"): - style "return_button" - - action Return() - label title if main_menu: @@ -573,7 +618,7 @@ screen about(): add gui.main_menu_background add gui.extras_submenu_panel - + ## This empty frame darkens the main menu. frame: pass @@ -582,9 +627,10 @@ screen about(): ## contents of the main menu are in the navigation screen. vbox: - xpos 1240 - ## yalign 0.03 - ypos 800 + yalign 0.00 + yoffset 100 + xoffset 80 + xmaximum 1100 label "[config.name!t]" text _("Version [config.version!t]\n") @@ -592,120 +638,9 @@ screen about(): if gui.about: text "[gui.about!t]\n" - text _("{size=24}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}") - textbutton "Back to Extras" action ShowMenu("extras") - vbox: - xpos 1942 - # xalign 1.0 - yalign 0.95 - use extrasnavigation - -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") - -## Gallery screen ################################################################ -## -## This screen holds the Gallery. -## - -screen gallery(): - - 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. - style_prefix "main_menu" - - add gui.main_menu_background - add gui.extras_submenu_panel - - frame: - pass - - vbox: - xpos 500 - yalign 0.2 - textbutton "Back to Extras" action ShowMenu("extras") - - vbox: - viewport id "gallery": - xpos 700 - ypos 1000 - style_prefix "gallery" - use images - text _("") ## Not sure why, but this keeps the vbox below working ... Renpy quirk? Does it kill scrolling in the viewport? Tune in when we have the gallery populated in the images screen. - - - - vbox: - xpos 1942 - # xalign 1.0 - yalign 0.95 - use extrasnavigation - -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") - - -## Images Screen ################################################################ -## -## This is the screen that actually houses the images of the gallery -screen images(): - tag menu - style_prefix "main_menu" - - frame: - pass - vbox: - xpos 600 - ypos 600 - text _("Placeholder for gallery.") - - + 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 ################################################################ ## @@ -715,12 +650,11 @@ screen images(): screen updates(): tag menu - style_prefix "main_menu" add gui.main_menu_background - add gui.extras_submenu_background - + add gui.extras_submenu_panel + ## This empty frame darkens the main menu. frame: pass @@ -729,73 +663,46 @@ screen updates(): ## contents of the main menu are in the navigation screen. vbox: - xpos 1140 - ypos 900 - label _("{color=#5D009C}[config.name!t]{/color}") - text _("{color=#5D009C}Your Version is [config.version!t]\n{/color}") + yalign 0.00 + yoffset 100 + xoffset 80 + xmaximum 1100 + label "[config.name!t]" + text _("Version [config.version!t]") if updater.can_update(): - label _("{color=#5D009C}{size=26}Update directory exists, updating is possible!{/size}{/color}") + label _("{color=#00FF00}{size=32}Update directory exists, updating is possible!\n{/size}{/color}") else: - label _("{color=#5D009C}{size=26}Update directory does not exist or is corrupt!{/size}") - textbutton _("Enable Automatic Updates") action [Notify("Toggling Automatic Updates..."), ToggleVariable("persistent.autoup", True, False)] - text _("{color=#5D009C}Automatic Updates: [persistent.autoup!t]\n{/color}") - textbutton _("Check for Update!") action [Notify("Checking for update..."), Function(UpdateCheck)] - label _("{color=#5D009C}Update Check Result:\n{/color}") - text _("{color=#5D009C}[persistent.updateresult!t]\n{/color}") - if persistent.updateresult != "No new version is available": - textbutton _("Update Now!") action updater.Update(persistent.updateWebServer, force=False) - else: - textbutton _("Update Now!") action Notify("Nothing to update to!") + label _("{color=#FF0000}{size=32}Update directory does not exist or is corrupt!\n{/size}{/color}") - label _("{color=#5D009C}Update Server:\n{/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}") 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 20 color '#FFFFFF' + input: + default "[persistent.updateWebServer!t]" size 36 color '#FFFFFF' value FieldInputValue(persistent, 'updateWebServer') length 49 copypaste True else: - text persistent.updateWebServer size 20 color '#FFFF00' + text persistent.updateWebServer size 36 color '#FFFF00' action ToggleScreenVariable('input_on') - - textbutton "Back to Extras" action ShowMenu("extras") - - vbox: - xpos 1942 - # xalign 1.0 - yalign 0.95 - use extrasnavigation + style_prefix "quick" + if persistent.updateresult != "No new version is available": + textbutton _("{size=36}Update Now!\n{/size}") action updater.Update(persistent.updateWebServer, force=False) + else: + textbutton _("{size=36}Update Now!\n{/size}") action Notify("Nothing to update to!") -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") + use extrasnavigation ## Load and Save screens ####################################################### ## @@ -819,8 +726,13 @@ screen load(): use file_slots(_("Load")) +screen delete(): -screen file_slots(title): + tag menu + + use file_slots(_("Delete"), True) + +screen file_slots(title, flag=False): default page_name_value = FilePageNameInputValue(pattern=_("Page {}"), auto=_("Automatic saves"), quick=_("Quick saves")) @@ -832,13 +744,13 @@ screen file_slots(title): ## buttons do. order_reverse True - ## The page name, which can be edited by clicking on a button. + ## The page name button: style "page_label" key_events True xalign 0.5 - action page_name_value.Toggle() + #action page_name_value.Toggle() input: style "page_label_text" @@ -858,13 +770,16 @@ screen file_slots(title): $ slot = i + 1 button: - action FileAction(slot) + if flag: + action FileDelete(slot) + else: + action FileAction(slot) has vbox add FileScreenshot(slot) xalign 0.5 - text FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("empty slot")): + text FileTime(slot, format=_("{#file_time}%A, %B %d %Y, %H:%M"), empty=_("Empty Slot")): style "slot_time_text" text FileSaveName(slot): @@ -939,7 +854,7 @@ screen preferences(): tag menu - use game_menu(_("Preferences"), scroll="viewport"): + use game_menu(_("Options"), scroll="viewport"): vbox: @@ -951,7 +866,7 @@ screen preferences(): vbox: style_prefix "radio" label _("Display") - textbutton _("Window") action Preference("display", "window") + textbutton _("Window") action Preference("display", "any window") textbutton _("Fullscreen") action Preference("display", "fullscreen") vbox: @@ -965,6 +880,11 @@ screen preferences(): label _("Naughty Stuff") textbutton _("Enable Lewd Images") action ToggleVariable("persistent.lewd", True, False) + vbox: + style_prefix "check" + label _("Requires Restart") + textbutton _("Enable Forward-Scroll Movement") action ToggleVariable("persistent.scroll", True, False) + vbox: style_prefix "check" @@ -1199,96 +1119,36 @@ screen extras(): add gui.main_menu_background - ## 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: -# xpos 1940 -# yalign 0.03 -# if persistent.splashtype == 1: -# add "gui/sneedgame.png" -# else: -# add "gui/snootgame.png" -# vbox: -# spacing 25 -# xpos 1885 -# yalign 0.9 -# imagebutton auto "gui/button/menubuttons/helpbutton_%s.png" action ShowMenu("help") -# imagebutton auto "gui/button/menubuttons/aboutbutton_%s.png" action ShowMenu("about") -# imagebutton auto "gui/button/menubuttons/updatesbutton_%s.png" action ShowMenu("updates") -# imagebutton auto "gui/button/menubuttons/gallerybutton_%s.png" action ShowMenu("gallery") -# imagebutton auto "gui/button/menubuttons/returnbutton_%s.png" action ShowMenu("main_menu") - - - -# # if gui.show_name: -# # -# # vbox: -# # text "[config.version]": - -# # style "main_menu_version" - vbox: - xpos 1942 - # xalign 1.0 - yalign 0.95 - use extrasnavigation - - -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") - + use extrasnavigation ##Extras Navigation Screen ##################################################### ## ##This screen is to be reused in -screen extrasnavigation(): +screen extrasnavigation(): vbox: - #xalign 1.0 - xpos 665 - ypos 270 - + xpos 1940 + yalign 0.03 + if persistent.splashtype == 1: add "gui/sneedgame.png" else: add "gui/snootgame.png" vbox: spacing 25 - # xpos 590 - xalign 0.79 - yalign 1.0 #0.9 - imagebutton auto "gui/button/menubuttons/helpbutton_%s.png" action ShowMenu('help') - imagebutton auto "gui/button/menubuttons/aboutbutton_%s.png" action ShowMenu('about') - imagebutton auto "gui/button/menubuttons/updatesbutton_%s.png" action ShowMenu('updates') - #imagebutton auto "gui/button/menubuttons/gallerybutton_%s.png" action ShowMenu('gallery') - imagebutton auto "gui/button/menubuttons/gallerybutton_%s.png" action Notify('coming soon ;)') - imagebutton auto "gui/button/menubuttons/returnbutton_%s.png" action ShowMenu('main_menu') - + xpos 1885 + yalign 0.9 + use main_menu_buttons("gui/button/menubuttons/template_idle.png", + [ + [ "Help", ShowMenu("help") ], + [ "About", ShowMenu("about") ], + [ "Updates", ShowMenu("updates") ], + [ "Gallery", ShowMenu("cg_gallery_0") ], + [ "Return", ShowMenu("main_menu") ] + ] ) ## Help screen ################################################################# ## @@ -1304,7 +1164,7 @@ screen help(): add gui.main_menu_background add gui.extras_submenu_panel - + ## This empty frame darkens the main menu. frame: pass @@ -1317,37 +1177,30 @@ screen help(): # yalign 0.4 # spacing 23 - hbox: - xpos 200 - ## ypos 1000 - yalign 0.3 - spacing 23 - style_prefix "help" - textbutton _("Keyboard") action SetScreenVariable("device", "keyboard") - textbutton _("Mouse") action SetScreenVariable("device", "mouse") - if GamepadExists(): - textbutton _("Gamepad") action SetScreenVariable("device", "gamepad") - textbutton "Back to Extras" action ShowMenu("extras") + fixed: + hbox: + xpos 200 + spacing 23 + style_prefix "help" + textbutton _("Keyboard") action SetScreenVariable("device", "keyboard") + textbutton _("Mouse") action SetScreenVariable("device", "mouse") + if GamepadExists(): + textbutton _("Gamepad") action SetScreenVariable("device", "gamepad") + + vbox: + yalign 0.5 + xpos 1100 + if device == "keyboard": + use keyboard_help + elif device == "mouse": + use mouse_help + elif device == "gamepad": + use gamepad_help + text _("") ## again in here to keep vbox in check + + use extrasnavigation - vbox: - xpos 1100 - ypos 1000 - # yalign 0.4 - if device == "keyboard": - use keyboard_help - elif device == "mouse": - use mouse_help - elif device == "gamepad": - use gamepad_help - text _("") ## again in here to keep vbox in check - vbox: - xpos 1942 - # xalign 1.0 - yalign 0.95 - use extrasnavigation - - screen keyboard_help(): style_prefix "help" @@ -1419,7 +1272,7 @@ screen mouse_help(): text _("Rolls forward to later dialogue.") -screen gamepad_help(): +screen gamepad_help(): style_prefix "help" hbox: label _("Right Trigger\nA/Bottom Button") @@ -1471,32 +1324,6 @@ style help_label_text: xalign 1.0 text_align 1.0 - -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") - ################################################################################ ## Additional screens ################################################################################ @@ -1789,28 +1616,33 @@ style pref_vbox: ## 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. + +#redefine function +screen quick_button(filename, label, function): + variant "small" + button: + xmaximum 180 + ymaximum 100 + action function + fixed: + add filename xalign 0.5 yalign 0.5 zoom 1.75 + text label xalign 0.5 yalign 0.5 size 42 style "quick_button_text" + screen quick_menu(): - variant "touch" - + variant "small" zorder 100 - if quick_menu: - 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" + yalign 0.975 + use quick_buttons("gui/button/uioptionbuttons/template_idle.png", \ + [ \ + [ "Back", Rollback() ], \ + [ "Skip", Skip() ], \ + [ "Auto", Preference("auto-forward", "toggle") ], \ + [ "Menu", ShowMenu() ] \ + ] ) style radio_button: variant "small" @@ -1824,10 +1656,6 @@ 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" diff --git a/game/script.rpy b/game/script.rpy index 3fd2374..b4b84ea 100644 --- a/game/script.rpy +++ b/game/script.rpy @@ -23,9 +23,8 @@ init python: picked = random.randint(0,length - 1) fileName = files[picked] renpy.show(fileName, at_list=[randPosition]) - #for issue #13 not finalized - #if persistent.scroll == True: - # config.keymap['dismiss'].append('mousedown_5') + if persistent.scroll == True: + config.keymap['dismiss'].append('mousedown_4') transform randPosition: alpha 0.0 @@ -81,34 +80,38 @@ transform randPosition: # attribute guitar: # "guitar.webp" +#Raw Image & kwargs for long textboxes +define long_textbox_img = Image("gui/textbox_long.png", xalign=0.5, yalign=1.0) +define long_textbox = { "window_background": long_textbox_img, 'namebox_style': "namebox_large" } #Characters -define A = Character ('Anon',color="#36E12D",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-120,who_ypos=110) #Light Green -define F = Character ('Fang',color="#7E2DE1",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Purple -define Lucy = Character ('Lucy',color="#7E2DE1",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Purple -define Ro = Character ('Rosa',color="#E12D36",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Red -define St = Character ('Stella',color="#E17E2D",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #orang -define N = Character ('Naomi',color="#2D36E1",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Blue -define Nas = Character ('Naser',color="#501D5E",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Dark Purple -define T = Character ('Trish',color="#8A0036",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Maroon -define Attendant = Character ('Attendant',color="#8A0036",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-155,who_ypos=111) #Maroon -define Sp = Character ('Spears',color="#7B8A00",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Dark Yellow -define Re = Character ('Reed',color="#368A00",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Dark Green -define D = Character ('Driver',color="#098A00",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) -define FM = Character ('Fangs Mom',color="#EA1A84",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=108) -define FD = Character ('Fangs Dad',color="#1A1CEA",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=108) -define Tsuki = Character ('Mr. Tsuki',color="#CEAF23",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-150,who_ypos=111) -define unknown = Character (' (???)',color="#000000",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=110) -define jingo = Character ('Mr. Jingo',color="#42C053",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=110) -define MaitD = Character ('Maitre D',color="#42C053",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=110) -define Moe = Character(' Moe',color="#42C053",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=110) -define Vince = Character ('Vince',color="#3C770D",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-125,who_ypos=111) #Dark Green -define Waitress = Character ('Waitress',color="#C89B19",window_background="gui/textbox.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-140,who_ypos=111) #Gold +define A = Character ('Anon',color="#36E12D", who_outlines=[(1, '#0C300A')]) # Light Green +define F = Character ('Fang',color="#B4D4CE", who_outlines=[(1, '#112D27')]) # Light Cyan +define Lucy = Character ('Lucy',color="#B4D4CE", who_outlines=[(1, '#112D27')]) # Light Cyan +define Ro = Character ('Rosa',color="#FE712B", who_outlines=[(1, '#3D1809')]) # Red-Orange +define St = Character ('Stella',color="#D2FFAA", who_outlines=[(1, '#203011')]) # Light Green +define N = Character ('Naomi',color="#F8B9A0", who_outlines=[(1, '#291A1B')]) # Peach +define Nas = Character ('Naser',color="#F89E38", who_outlines=[(1, '#2D2D2D')]) # Orange +define T = Character ('Trish',color="#B675E6", who_outlines=[(1, '#1F0632')]) # Purple +define Attendant = Character ('Attendant',color="#8A0036", who_outlines=[(1, '#FFFFFF')]) # Maroon +define Sp = Character ('Spears',color="#C4C3C3", who_outlines=[(1, '#272727')]) # Light Grey +define Re = Character ('Reed',color="#ED4C5B", who_outlines=[(1, '#361013')]) # Bright Red +define D = Character ('Driver',color="#FFC63A", who_outlines=[(1, '#4D280A')]) # Yellow-Orange +define FM = Character ('Fangs Mom',color="#FFD8F6", who_outlines=[(1, '#361730')]) # Bright Pink +define FD = Character ('Fangs Dad',color="#D8A09A", who_outlines=[(1, '#190E0F')]) # Desaturated Orange +define Tsuki = Character ('Mr. Tsuki',color="#A7F2A2", who_outlines=[(1, '#320E3B')]) # Pear Green +define unknown = Character ('(???)',color="#000000", who_outlines=[(1, '#FFFFFF')]) # Black +define jingo = Character ('Mr. Jingo',color="#CD8283", who_outlines=[(1, '#0F0D49')]) # Desaturated Red +define MaitD = Character ('Maitre D',color="#241630", who_outlines=[(1, '#241630')]) # Cobalt Blue +define Moe = Character('Moe',color="#A5BEED", who_outlines=[(1, '#342210')]) # Desaturated Blue +define Vince = Character ('Vince',color="#FFC63A", who_outlines=[(1, '#4D280A')]) # Yellow-Orange +define Waitress = Character ('Waitress',color="#F691C8", who_outlines=[(1, '#402E3A')]) # Pink #long TB chars -define AnonAndFang = Character(' Anon and Fang',color="34F313",window_background="gui/textbox_long.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=110) -define SV = Character ('Street Vendor',color="#420046",window_background="gui/textbox_long.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-145,who_ypos=110) -define carl = Character ('Mr. Carldewskii',color="#4963A5",window_background="gui/textbox_long.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=110) -define Drf = Character (' Dr. Fernsworth',color="#4963A5",window_background="gui/textbox_long.png",window_xoffset=120,window_yoffset=-79,what_xpos=245,what_ypos=125,who_xpos=-170,who_ypos=110) +define AnonAndFang = Character('Anon and Fang',color="72DFA8", who_outlines=[(1, '#113623')], **long_textbox) # Cyan +define SV = Character ('Street Vendor',color="#F8E120", who_outlines=[(1, '#361504')], **long_textbox) # Yellow +define carl = Character ('Mr. Carldewskii',color="#E19E40", who_outlines=[(1, '#03223B')], **long_textbox) # Puke Orange +define Drf = Character ('Dr. Fernsworth',color="#253354", who_outlines=[(1, '#334573')], **long_textbox) # Royal Blue +define FRT = Character ('Fang Reed & Trish',color="#4963A5", who_outlines=[(1, '#FFFFFF')], **long_textbox) # Cold Blue #Extra image translations #siloettes diff --git a/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy b/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy index ed860e1..8b23884 100644 --- a/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy +++ b/game/script/10.an-excellent-reason-to-start-abusing-mod-powers.rpy @@ -115,32 +115,32 @@ label chapter_10: A "...Fine..." - scene wounds1 with fade + scene wounds01 with fade pause 2 scene black with fade "I step into my tiny shower stall and turn on the water." "The shower head sputters before it starts weakly spraying lukewarm water." - scene wounds2 with fade + scene wounds02 with fade "The temperature of the water doesn’t help the tension in my muscles or the bruises marring my skin." "I stretch around and see massive blotches of purple and black splattered across my torso." - scene wounds3 + scene wounds03 "Each contusion is hot to the touch under my fingers and the pain is intense." - scene wounds4 + scene wounds04 "The worst is across my chest where the bollard hit me." - scene wounds5 + scene wounds05 "I eventually get finished examining my wicked wounds and step out of the bathroom. Fang is on her phone doing Raptor Jesus knows what." - scene wounds6 + scene wounds06 "Fang then pats the bed" @@ -148,7 +148,7 @@ label chapter_10: "I walk over and lie down on my stomach" - scene wounds7 + scene wounds07 F "Jesus that's bad..." @@ -193,11 +193,11 @@ label chapter_10: A "Hm?" F "I need to do the front." - scene wounds8 + scene wounds08 "Oh." "Okay then. I roll over onto my back." - scene wounds9 + scene wounds09 "And find myself face to beak with her." "Dangerously close." @@ -350,4 +350,4 @@ label chapter_10: stop music fadeout 1.0 "..." - return \ No newline at end of file + return diff --git a/game/script/2.fourth-day-of-school.rpy b/game/script/2.fourth-day-of-school.rpy index 028f9b5..d09b4b6 100644 --- a/game/script/2.fourth-day-of-school.rpy +++ b/game/script/2.fourth-day-of-school.rpy @@ -1244,7 +1244,7 @@ label chapter_2: A "Huh?" - Re "Get your phone out man… Look up {color=#66cc33}'LW_S9znpklI'{/color}.." + Re "Get your phone out man… Look up {color=#66cc33}'T9nXyUye3pg'{/color}.." A "How did you say that out loud?" @@ -1377,7 +1377,7 @@ label chapter_2: A "Well…" - "Fang Reed and Trish" "Ohfuck. Sorry Anon, we gotta bail." + FRT "Ohfuck. Sorry Anon, we gotta bail." show fang neutral flip show trish neutral flip hide trish with moveoutright @@ -1513,4 +1513,4 @@ label chapter_2: scene black with fade - return \ No newline at end of file + return diff --git a/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy b/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy index d852480..4245468 100644 --- a/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy +++ b/game/script/5.fang-and-anon-cut-class-to-talk-on-the-roof.rpy @@ -288,7 +288,7 @@ label chapter_5: label movie: A "FANG!" stop music fadeout 1.0 - image fang tail = Movie(play="animations/fangtail.webm",loop=True) + image fang tail = Movie(play="animations/fang tail.webm",loop=True) scene fang tail with fade @@ -2547,3 +2547,7 @@ label chapter_5: "..." return + +label fang_movie: + scene fang tail with fade + "" diff --git a/game/src/cg_gallery.rpy b/game/src/cg_gallery.rpy new file mode 100644 index 0000000..0ee6b28 --- /dev/null +++ b/game/src/cg_gallery.rpy @@ -0,0 +1,285 @@ +init python: + + # CONST PARAMS + ALLOW_ZOOM = False + GALLERY_COLS = 3 + PREFERRED_WIDTH = 432 #px (1920 * 0.225) + PREFERRED_HEIGHT = 243 #px (1080 * 0.225) + PREFERRED_ASPECT_RATIO = 16.0/9.0 # 1.7777.. + DEFAULT_WIDTH_SCALE_RATIO = round(float(PREFERRED_WIDTH) / float(1920), 4) + DEFAULT_HEIGHT_SCALE_RATIO = round(float(PREFERRED_HEIGHT) / float(1080), 4) + NOT_UNLOCKED_COVER = im.FactorScale("gui/gallery/unlocked_cg_button_cover.png", DEFAULT_WIDTH_SCALE_RATIO, DEFAULT_HEIGHT_SCALE_RATIO) + ACCEPTED_EXTENSIONS = ["jpg", "webm"] + CG_PATHS = [ + #CG doesn't really make sense + { 'path': "images/cgs/", 'name': "CG", 'eval': None }, + { 'path': "images/animations/", 'name': "Animations", 'eval': None }, + { 'path': "images/NotForKids!/", 'name': "Lewd", + 'eval': 'persistent.lewd == True' + } + ] + #path: folder, name: shows up in gallery, eval: runs eval() on string + + """ + Data structure that holds the data for each cg and button + item is name, fn is fullpath + ext is the file extension + { item: str; fn: str; cg: Displayable; ext: str; wh: [] }[] + (reference in this init python, actually used in screens) + """ + gallery_items = [] + + # key dict pair, cg <-> cgs' galleryitems [] + gallery_dic = {} # + for cp in CG_PATHS: + gallery_dic[cp['name']] = [] # + + # Make a scaled cg button + # (cg: string; ext: string; w: float + def cg(fname, ext, w): + scale = PREFERRED_WIDTH * 100.0 / w / 100.0 + #scale = box_ratio(wh) + return im.FactorScale(fname, scale, scale, False) + + # Reads /images/cgs dir for all image files + # Populates galleryItems + # () -> None + def loadGallery(): + + list_img = renpy.list_images() + +#if ext is "webm": + # Add each image to the gallery + for str in list_img: + for cp in CG_PATHS: + for ext in ACCEPTED_EXTENSIONS: + path = cp['path'] + _str = path+str+"."+ext + + if renpy.loadable(_str): #brute force + image = renpy.image_size(Image(_str)) + + gallery_dic[cp['name']] += [{ + "item": str, + "fn": _str, + "cg": cg(_str, ext, image[0]), + "ext": ext, + "wh": image + }] + return + + # Call to loading the gallery + loadGallery() + + # hard code the webm because renpy is really dumb and doesn't add Movies properly until much later + fang_webm = 'images/animations/fang tail.webm' + gallery_dic['Animations'] = [{ + "item": 'fang tail', + "fn": fang_webm, + "cg": Movie(fang_webm),#cg(_str, 'webm', 1920), + "ext": 'webm', + "wh": [1920, 1080] + }] + + #for zooming in and out + zoom_arr = [0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0, 1.125, 1.25, 1.5, 1.75, 2.0] + + """ + for x in range(1,5): + _zoom = 1.0 + _zoom *= 1+(x*0.25) + zoom_arr.append(_zoom) + + for y in range(9,1,-1): + _zoom = 1.0 + _zoom *= (y*0.125) + zoom_arr.append(_zoom) + + zoom_arr.sort() + """ +""" +'Recursive' / Loopable / Roundtrip Screens +_0 <-> _1 +""" +#There is renpy.restart_interaction but since I wrote all this, it's too late +#screen cg_gallery(flag, __yoffset = 0, origin = 'CG'): +screen cg_gallery_0(__yoffset = 0, origin = 'CG'): + tag menu + use cg_gallery('1', __yoffset, origin) +screen cg_gallery_1( __yoffset = 0, origin = 'CG'): + tag menu + use cg_gallery('0', __yoffset, origin) + +#screen view_image(fn, _origin, zoom=1): +screen view_image_a(fn, _origin, zoom = zoom_arr.index(1.0)): + tag menu + use view_image(fn, _origin, zoom, 'b') +screen view_image_b(fn, _origin, zoom = zoom_arr.index(1.0)): + tag menu + use view_image(fn, _origin, zoom, 'a') + +""" +CG Gallery screen - A screen that shows the image gallery +Basically Gallery Object has terrible defaults, so I just wrote my own stuff +""" +screen cg_gallery(flag, __yoffset = 0, origin = 'CG'): + + if main_menu: + key "game_menu" action ShowMenu("main_menu") + + + frame: + pass + add gui.main_menu_background + add gui.game_menu_background + + tag menu + + python: + empty_spaces = gallery_rows = item_counter = 0 + + gallery_items = gallery_dic[origin] + items = len(gallery_items) + gallery_rows = (items / GALLERY_COLS) + 1 + empty_spaces = GALLERY_COLS - (items % GALLERY_COLS) + + + vbox: + transform: + zoom 0.95 + hbox: + style_prefix "navigation" + xalign 0.5 + + spacing gui.navigation_spacing + + for cp in CG_PATHS: + if cp['name'] == origin: + textbutton _(cp['name']) text_color gui.selected_color text_xalign 0.5 + else: + if cp['eval'] is None: + textbutton _(cp['name']) action ShowMenu('cg_gallery_'+flag, 0, cp['name']) text_xalign 0.5 + elif eval(cp['eval']): + textbutton _(cp['name']) action ShowMenu('cg_gallery_'+flag, 0, cp['name']) text_xalign 0.5 + else: + textbutton _(cp['name']) text_xalign 0.5 + textbutton _("Return") action ShowMenu('main_menu') text_xalign 0.5 + + if _in_replay: + textbutton _("End Replay") action EndReplay(confirm=True) + elif not main_menu: + textbutton _("Main Menu") action MainMenu() + + transform: + zoom 0.95 + xcenter 0.525 + ycenter 0.525 + + viewport: + yinitial __yoffset + scrollbars "vertical" + mousewheel True + draggable True + pagekeys True + xfill True + + grid GALLERY_COLS gallery_rows: + xcenter 0.5 + ycenter 0.5 + for item in gallery_items: + # Should properly fix with actual margin difference but good + # enough or the actual position + python: + item_counter += 1 + yoffset = item_counter / 3 * PREFERRED_HEIGHT * 1.15 + yoffset = int( yoffset + (PREFERRED_HEIGHT * 1.15)) + + use flag_button(item, yoffset, origin) + + for i in range(0, empty_spaces): + null height 20 + + +""" +if/else flow control & extra parameters for Buttons +""" +screen flag_button(item, yoffset, origin): + python: + flag = renpy.seen_image(item['item']) + + if flag: + button: + if item['ext'] == "webm": + action Replay('fang_movie')#ShowMenu('view_movie', item, ShowMenu('cg_gallery_0', yoffset, origin)) + else: + action ShowMenu('view_image_a', item, ShowMenu('cg_gallery_0', yoffset, origin)) + xcenter 0.5 ycenter 0.5 + padding (1,0,1,2) + vbox: + text item["item"] xalign 0.5 + add item["cg"] fit 'contain' xcenter 0.5 ycenter 0.5 size (PREFERRED_WIDTH, PREFERRED_HEIGHT) + else: + vbox: + ymaximum PREFERRED_HEIGHT + xcenter 0.5 ycenter 0.5 + text "? ? ?" xalign 0.5 + add NOT_UNLOCKED_COVER + + +screen view_movie(item, _origin): + tag menu + key "game_menu" action _origin + python: + renpy.movie_cutscene(item['item'], None, -1) + frame: + pass + #scene fang tail with fade + + +""" +view_image, Loads the image in fullscreen with viewport control. +""" +screen view_image(item, _origin, zoom = zoom_arr.index(1.0), flag='a'): + python: + zoom_a = zoom+1 + zoom_a_f = ShowMenu('view_image_'+flag, item, _origin, zoom_a) + zoom_b = zoom-1 + zoom_b_f = ShowMenu('view_image_'+flag, item, _origin, zoom_b) + + tag menu + key "game_menu" action _origin + + # mousewheel & insert+delete + if (ALLOW_ZOOM): + if zoom < len(zoom_arr)-1: #zoom in + key 'mousedown_4' action zoom_a_f + key 'K_INSERT' action zoom_a_f + if zoom > 0: #and (item['wh'][0] <= 1920 or item['wh'][1] <= 1080): + key 'mousedown_5' action zoom_b_f + key 'K_DELETE' action zoom_b_f + + viewport id "vie": + #Ren'Py isn't smart enough to not edgescroll while pressed, + #so we'll have to disable this for mobile + if renpy.variant("pc"): + edgescroll (300, 1800) + draggable True + arrowkeys True + pagekeys True + xfill False + yfill False + add item['fn'] zoom zoom_arr[zoom] anchor (0.55, 0.55) + +#Reuse quick buttons, Ren'Py handles touch input lazy, it doesn't have +#double finger pinch zoom, it translates taps as mouse events - have to use +#buttons + if (ALLOW_ZOOM) and renpy.variant("small"): + hbox: + style_prefix "quick" + xalign 0.5 + yalign 0.975 + use quick_buttons("gui/button/uioptionbuttons/template_idle.png", + [ + [ "+", zoom_a_f ], + [ "-", zoom_b_f ] + ] )