5.1.1 release #62

Merged
coolestskinnieinthejungle merged 96 commits from 5.1.1 into master 2021-07-21 18:45:22 +00:00
64 changed files with 586 additions and 444 deletions

View File

@ -23,14 +23,14 @@ init python:
## The colors of text in the interface. ## The colors of text in the interface.
## An accent color used throughout the interface to label and highlight text. ## 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. ## 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 ## The small color is used for small text, which needs to be brighter/darker to
## achieve the same effect. ## 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. ## The color that is used for buttons and bars that are hovered.
define gui.hover_color = '#00FF03' define gui.hover_color = '#00FF03'
@ -47,10 +47,19 @@ define gui.insensitive_color = '#8888887f'
define gui.muted_color = '#3d1466' define gui.muted_color = '#3d1466'
define gui.hover_muted_color = '#5b1e99' 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 = '#ffffff'
#define gui.text_color_outline = '#00000000'
define gui.interface_text_color = '#ffffff' 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 ######################################################## ## Fonts and Font Sizes ########################################################
@ -64,23 +73,30 @@ define gui.name_text_font = "gui/FallingSky.otf"
define gui.interface_text_font = "gui/FallingSky.otf" define gui.interface_text_font = "gui/FallingSky.otf"
## The size of normal dialogue text. ## 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. ## The size of character names.
define gui.name_text_size = 45 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. ## The size of text in the game's user interface.
define gui.interface_text_size = 33 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. ## The size of labels in the game's user interface.
define gui.label_text_size = 36 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. ## The size of text on the notify screen.
define gui.notify_text_size = 24 define gui.notify_text_size = 24
#define gui.notify_text_outlines = [ (2, gui.default_outline, 0, 0) ]
## The size of the game's title. ## The size of the game's title.
define gui.title_text_size = 75 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 ######################################################### ## 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. ## 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. ## 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_xpos = 350
define gui.name_ypos = -90 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- ## 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. ## 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 ## The width, height, and borders of the box containing the character's name, or
## None to automatically size it. ## 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. ## background of the namebox will be scaled.
define gui.namebox_tile = False define gui.namebox_tile = False
## The placement of dialogue relative to the textbox. These can be a whole ## 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 ## number of pixels relative to the left or top side of the textbox, or 0.5 to
## center. ## 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. #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 #It's still bad but it could be legitmately worse
define gui.dialogue_ypos = 47 define gui.dialogue_ypos = 20
define gui.dialogue_xpos = 220
## The maximum width of dialogue text, in pixels. define gui.dialogue_width = 1460
define gui.dialogue_width = 1116
## The horizontal alignment of the dialogue text. This can be 0.0 for left- ## 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. ## aligned, 0.5 for centered, and 1.0 for right-aligned.
define gui.dialogue_text_xalign = 0.0 define gui.dialogue_text_xalign = 0.0
define gui.window_yoffset = 0
define gui.input_yoffset = 0
## Buttons ##################################################################### ## Buttons #####################################################################
## ##
@ -428,18 +446,23 @@ init python:
if renpy.variant("small"): if renpy.variant("small"):
## Font sizes. ## Font sizes.
gui.text_size = 45 gui.text_size = 44
gui.name_text_size = 54 gui.name_text_size = 48
gui.notify_text_size = 38 gui.notify_text_size = 38
gui.interface_text_size = 45 gui.interface_text_size = 45
gui.button_text_size = 45 gui.button_text_size = 45
gui.label_text_size = 51 gui.label_text_size = 51
## Namebox
gui.name_xpos = 345
gui.name_ypos = -85
## Adjust the location of the textbox. ## Adjust the location of the textbox.
gui.textbox_height = 360 gui.dialogue_ypos = 20
gui.name_xpos = 120 gui.dialogue_xpos = 240
gui.text_xpos = 135 gui.dialogue_width = 1460
gui.text_width = 1650 gui.window_yoffset = -75
## Change the size and spacing of various things. ## Change the size and spacing of various things.
gui.slider_size = 54 gui.slider_size = 54
@ -453,10 +476,6 @@ init python:
gui.quick_button_text_size = 30 gui.quick_button_text_size = 30
## File button layout.
gui.file_slot_cols = 2
gui.file_slot_rows = 2
## NVL-mode. ## NVL-mode.
gui.nvl_height = 255 gui.nvl_height = 255
@ -474,4 +493,7 @@ init python:
gui.nvl_button_xpos = 30 gui.nvl_button_xpos = 30
## Input, OSK, very specific
if renpy.variant("small") or renpy.variant("touch"):
gui.input_yoffset = -625

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 425 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 210 KiB

View File

Before

Width:  |  Height:  |  Size: 226 KiB

After

Width:  |  Height:  |  Size: 226 KiB

View File

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 246 KiB

View File

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 204 KiB

View File

Before

Width:  |  Height:  |  Size: 167 KiB

After

Width:  |  Height:  |  Size: 167 KiB

View File

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 183 KiB

View File

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 198 KiB

View File

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 199 KiB

View File

Before

Width:  |  Height:  |  Size: 266 KiB

After

Width:  |  Height:  |  Size: 266 KiB

View File

Before

Width:  |  Height:  |  Size: 214 KiB

After

Width:  |  Height:  |  Size: 214 KiB

View File

@ -77,7 +77,7 @@ define config.exit_transition = dissolve
## Between screens of the game menu. ## 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. ## A transition that is used after a game has been loaded.

View File

@ -6,7 +6,7 @@ init python:
persistent.autoup = False persistent.autoup = False
if persistent.updateWebServer is None: if persistent.updateWebServer is None:
persistent.updateWebServer = "http://updates.snootgame.xyz/updates.json" persistent.updateWebServer = "http://updates.snootgame.xyz/updates.json"
def UpdateCheck(): def UpdateCheck():
# WHY YES I ONLY ALLOW PEOPLE USING MY FRAMEWORK TO CHECK FOR AN UPDATE EVERY SIX FUCKING HOURS HOW DID YOU KNOW # 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 # NOPE check_interval=5 (5 SECONDS) FUCK YOU
@ -16,6 +16,9 @@ init python:
else: else:
persistent.updateresult = pendingVersion persistent.updateresult = pendingVersion
def ToggleAutoUpdate():
persistent.autoup = not persistent.autoup
################################################################################ ################################################################################
## Initialization ## Initialization
################################################################################ ################################################################################
@ -119,11 +122,13 @@ screen say(who, what):
id "window" id "window"
if who is not None: if who is not None:
background Image("gui/textbox.png", xalign=0.5, yalign=1.0)
window: window:
id "namebox" id "namebox"
style "namebox" style "namebox"
text who id "who" text who id "who"
else:
background Image("gui/textbox_no_hitch.png", xalign=0.5, yalign=1.0)
text what id "what" text what id "what"
@ -152,23 +157,23 @@ style window:
xfill True xfill True
yalign gui.textbox_yalign yalign gui.textbox_yalign
ysize gui.textbox_height ysize gui.textbox_height
xoffset 0
background Image("gui/textbox_no_hitch.png", xalign=0.5, yalign=1.0) yoffset gui.window_yoffset
xcenter 0.5
style namebox: style namebox:
xalign 0.5
xpos gui.name_xpos xpos gui.name_xpos
xanchor gui.name_xalign
xsize gui.namebox_width
ypos gui.name_ypos ypos gui.name_ypos
ysize gui.namebox_height
background Frame("gui/namebox.png", gui.namebox_borders, tile=gui.namebox_tile, xalign=gui.name_xalign) style namebox_large is namebox:
padding gui.namebox_borders.padding xpos gui.name_large_xpos
style say_label: style say_label:
properties gui.text_properties("name", accent=True) properties gui.text_properties("name", accent=True)
xalign gui.name_xalign xalign gui.name_xalign
yalign 0.5 yalign 0.5
xanchor gui.name_xalign
style say_dialogue: style say_dialogue:
properties gui.text_properties("dialogue") properties gui.text_properties("dialogue")
@ -192,12 +197,13 @@ screen input(prompt):
style_prefix "input" style_prefix "input"
window: window:
add Image("gui/textbox_no_hitch.png", xalign=0.5, yalign=1.0, yoffset=gui.input_yoffset) #for mobile OSK
vbox: vbox:
xalign gui.dialogue_text_xalign xalign gui.dialogue_text_xalign
xpos gui.dialogue_xpos xpos gui.dialogue_xpos
xsize gui.dialogue_width xsize gui.dialogue_width
ypos gui.dialogue_ypos ypos gui.dialogue_ypos
yoffset gui.input_yoffset #for mobile OSK
text prompt style "input_prompt" text prompt style "input_prompt"
input id "input" 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 ## The quick menu is displayed in-game to provide easy access to the out-of-game
## menus. ## 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(): screen quick_menu():
## Ensure this appears on top of other screens. ## Ensure this appears on top of other screens.
@ -268,14 +289,16 @@ screen quick_menu():
ypos 0.977 ypos 0.977
grid 1 4: grid 1 4:
style_prefix "quick" style_prefix "quick"
xalign 0.0 xalign -0.005
yalign 0.0 yalign 0.010
#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')
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(): screen score_menu():
zorder 100 zorder 100
@ -292,7 +315,6 @@ screen score_menu():
text "DEBUG SCORE CARD" text "DEBUG SCORE CARD"
## This code ensures that the quick_menu screen is displayed in-game, whenever ## This code ensures that the quick_menu screen is displayed in-game, whenever
## the player has not explicitly hidden the interface. ## the player has not explicitly hidden the interface.
init python: init python:
@ -307,14 +329,17 @@ style quick_button:
properties gui.button_properties("quick_button") properties gui.button_properties("quick_button")
style quick_button_text: 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 ## Main and Game Menu Screens
################################################################################ ################################################################################
## Navigation screen ########################################################### ## Navigation screen ##########################################################
## ##
## This screen is included in the main and game menus, and provides navigation ## This screen is included in the main and game menus, and provides navigation
## to other menus, and to start the game. ## to other menus, and to start the game.
@ -332,8 +357,10 @@ screen navigation():
textbutton _("History") action ShowMenu("history") textbutton _("History") action ShowMenu("history")
textbutton _("Save") action ShowMenu("save") textbutton _("Save") action ShowMenu("save")
textbutton _("Load") action ShowMenu("load") textbutton _("Load") action ShowMenu("load")
textbutton _("Delete") action ShowMenu("delete")
textbutton _("Options") action ShowMenu("preferences") textbutton _("Options") action ShowMenu("preferences")
textbutton _("Extras") action ShowMenu("extras") #textbutton _("Extras") action ShowMenu("extras")
textbutton _("Return") action Return()
if _in_replay: if _in_replay:
@ -345,11 +372,11 @@ screen navigation():
textbutton _("Main Menu") action MainMenu() textbutton _("Main Menu") action MainMenu()
#textbutton _("Debug Score Card") action ShowMenu("score_menu") #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 ## The quit button is banned on iOS and unnecessary on Android and
## Web. ## Web.
textbutton _("Quit") action Quit() #textbutton _("Quit") action Quit()
style navigation_button is gui_button 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 ## 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(): screen main_menu():
## This ensures that any other menu screen is replaced. ## 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 ## The use statement includes another screen inside this one. The actual
## contents of the main menu are in the navigation screen. ## contents of the main menu are in the navigation screen.
vbox: vbox:
xpos 1940 xpos 1940
yalign 0.03 yalign 0.03
if persistent.splashtype == 1: if persistent.splashtype == 1:
add "gui/sneedgame.png" add "gui/sneedgame.png"
else: else:
add "gui/snootgame.png" add "gui/snootgame.png"
vbox: vbox:
spacing 25 spacing 25
xpos 1885 xpos 1885
yalign 0.9 yalign 0.9
imagebutton auto "gui/button/menubuttons/startbutton_%s.png" action Start() use main_menu_buttons("gui/button/menubuttons/template_idle.png",
imagebutton auto "gui/button/menubuttons/loadbutton_%s.png" action ShowMenu("load") [ \
imagebutton auto "gui/button/menubuttons/optionsbutton_%s.png" action ShowMenu("preferences") [ "Start", Start() ], \
imagebutton auto "gui/button/menubuttons/extrasbutton_%s.png" action ShowMenu("extras") [ "Load", ShowMenu("load") ], \
imagebutton auto "gui/button/menubuttons/quitbutton_%s.png" action Quit(confirm=not main_menu) [ "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_frame is empty
style main_menu_vbox is vbox style main_menu_vbox is vbox
@ -419,10 +466,13 @@ style main_menu_vbox:
xoffset -30 xoffset -30
xmaximum 1200 xmaximum 1200
yalign 1.0 yalign 1.0
yoffset -30 yoffset -60
style main_menu_text: 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: style main_menu_title:
properties gui.text_properties("title") properties gui.text_properties("title")
@ -496,11 +546,6 @@ screen game_menu(title, scroll=None, yinitial=0.0):
use navigation use navigation
textbutton _("Return"):
style "return_button"
action Return()
label title label title
if main_menu: if main_menu:
@ -573,7 +618,7 @@ screen about():
add gui.main_menu_background add gui.main_menu_background
add gui.extras_submenu_panel add gui.extras_submenu_panel
## This empty frame darkens the main menu. ## This empty frame darkens the main menu.
frame: frame:
pass pass
@ -582,9 +627,10 @@ screen about():
## contents of the main menu are in the navigation screen. ## contents of the main menu are in the navigation screen.
vbox: vbox:
xpos 1240 yalign 0.00
## yalign 0.03 yoffset 100
ypos 800 xoffset 80
xmaximum 1100
label "[config.name!t]" label "[config.name!t]"
text _("Version [config.version!t]\n") text _("Version [config.version!t]\n")
@ -592,120 +638,9 @@ screen about():
if gui.about: if gui.about:
text "[gui.about!t]\n" 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}") style_prefix "quick"
textbutton "Back to Extras" action ShowMenu("extras") 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
vbox: use extrasnavigation
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.")
## Updates screen ################################################################ ## Updates screen ################################################################
## ##
@ -715,12 +650,11 @@ screen images():
screen updates(): screen updates():
tag menu tag menu
style_prefix "main_menu" style_prefix "main_menu"
add gui.main_menu_background add gui.main_menu_background
add gui.extras_submenu_background add gui.extras_submenu_panel
## This empty frame darkens the main menu. ## This empty frame darkens the main menu.
frame: frame:
pass pass
@ -729,73 +663,46 @@ screen updates():
## contents of the main menu are in the navigation screen. ## contents of the main menu are in the navigation screen.
vbox: vbox:
xpos 1140 yalign 0.00
ypos 900 yoffset 100
label _("{color=#5D009C}[config.name!t]{/color}") xoffset 80
text _("{color=#5D009C}Your Version is [config.version!t]\n{/color}") xmaximum 1100
label "[config.name!t]"
text _("Version [config.version!t]")
if updater.can_update(): 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: else:
label _("{color=#5D009C}{size=26}Update directory does not exist or is corrupt!{/size}") label _("{color=#FF0000}{size=32}Update directory does not exist or is corrupt!\n{/size}{/color}")
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=#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 default input_on = False
button: button:
key_events True key_events True
if input_on: if input_on:
input: input:
default "[persistent.updateWebServer!t]" size 20 color '#FFFFFF' default "[persistent.updateWebServer!t]" size 36 color '#FFFFFF'
value FieldInputValue(persistent, 'updateWebServer') value FieldInputValue(persistent, 'updateWebServer')
length 49 length 49
copypaste True copypaste True
else: else:
text persistent.updateWebServer size 20 color '#FFFF00' text persistent.updateWebServer size 36 color '#FFFF00'
action ToggleScreenVariable('input_on') action ToggleScreenVariable('input_on')
style_prefix "quick"
textbutton "Back to Extras" action ShowMenu("extras") if persistent.updateresult != "No new version is available":
textbutton _("{size=36}Update Now!\n{/size}") action updater.Update(persistent.updateWebServer, force=False)
vbox: else:
xpos 1942 textbutton _("{size=36}Update Now!\n{/size}") action Notify("Nothing to update to!")
# xalign 1.0
yalign 0.95
use extrasnavigation
style main_menu_frame is empty use extrasnavigation
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")
## Load and Save screens ####################################################### ## Load and Save screens #######################################################
## ##
@ -819,8 +726,13 @@ screen load():
use file_slots(_("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")) default page_name_value = FilePageNameInputValue(pattern=_("Page {}"), auto=_("Automatic saves"), quick=_("Quick saves"))
@ -832,13 +744,13 @@ screen file_slots(title):
## buttons do. ## buttons do.
order_reverse True order_reverse True
## The page name, which can be edited by clicking on a button. ## The page name
button: button:
style "page_label" style "page_label"
key_events True key_events True
xalign 0.5 xalign 0.5
action page_name_value.Toggle() #action page_name_value.Toggle()
input: input:
style "page_label_text" style "page_label_text"
@ -858,13 +770,16 @@ screen file_slots(title):
$ slot = i + 1 $ slot = i + 1
button: button:
action FileAction(slot) if flag:
action FileDelete(slot)
else:
action FileAction(slot)
has vbox has vbox
add FileScreenshot(slot) xalign 0.5 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" style "slot_time_text"
text FileSaveName(slot): text FileSaveName(slot):
@ -939,7 +854,7 @@ screen preferences():
tag menu tag menu
use game_menu(_("Preferences"), scroll="viewport"): use game_menu(_("Options"), scroll="viewport"):
vbox: vbox:
@ -951,7 +866,7 @@ screen preferences():
vbox: vbox:
style_prefix "radio" style_prefix "radio"
label _("Display") label _("Display")
textbutton _("Window") action Preference("display", "window") textbutton _("Window") action Preference("display", "any window")
textbutton _("Fullscreen") action Preference("display", "fullscreen") textbutton _("Fullscreen") action Preference("display", "fullscreen")
vbox: vbox:
@ -965,6 +880,11 @@ screen preferences():
label _("Naughty Stuff") label _("Naughty Stuff")
textbutton _("Enable Lewd Images") action ToggleVariable("persistent.lewd", True, False) 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: vbox:
style_prefix "check" style_prefix "check"
@ -1199,96 +1119,36 @@ screen extras():
add gui.main_menu_background add gui.main_menu_background
## This empty frame darkens the main menu. ## This empty frame darkens the main menu.
frame: frame:
pass pass
## The use statement includes another screen inside this one. The actual use extrasnavigation
## 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")
##Extras Navigation Screen ##################################################### ##Extras Navigation Screen #####################################################
## ##
##This screen is to be reused in ##This screen is to be reused in
screen extrasnavigation(): screen extrasnavigation():
vbox: vbox:
#xalign 1.0 xpos 1940
xpos 665 yalign 0.03
ypos 270
if persistent.splashtype == 1: if persistent.splashtype == 1:
add "gui/sneedgame.png" add "gui/sneedgame.png"
else: else:
add "gui/snootgame.png" add "gui/snootgame.png"
vbox: vbox:
spacing 25 spacing 25
# xpos 590 xpos 1885
xalign 0.79 yalign 0.9
yalign 1.0 #0.9 use main_menu_buttons("gui/button/menubuttons/template_idle.png",
imagebutton auto "gui/button/menubuttons/helpbutton_%s.png" action ShowMenu('help') [
imagebutton auto "gui/button/menubuttons/aboutbutton_%s.png" action ShowMenu('about') [ "Help", ShowMenu("help") ],
imagebutton auto "gui/button/menubuttons/updatesbutton_%s.png" action ShowMenu('updates') [ "About", ShowMenu("about") ],
#imagebutton auto "gui/button/menubuttons/gallerybutton_%s.png" action ShowMenu('gallery') [ "Updates", ShowMenu("updates") ],
imagebutton auto "gui/button/menubuttons/gallerybutton_%s.png" action Notify('coming soon ;)') [ "Gallery", ShowMenu("cg_gallery_0") ],
imagebutton auto "gui/button/menubuttons/returnbutton_%s.png" action ShowMenu('main_menu') [ "Return", ShowMenu("main_menu") ]
] )
## Help screen ################################################################# ## Help screen #################################################################
## ##
@ -1304,7 +1164,7 @@ screen help():
add gui.main_menu_background add gui.main_menu_background
add gui.extras_submenu_panel add gui.extras_submenu_panel
## This empty frame darkens the main menu. ## This empty frame darkens the main menu.
frame: frame:
pass pass
@ -1317,37 +1177,30 @@ screen help():
# yalign 0.4 # yalign 0.4
# spacing 23 # spacing 23
hbox: fixed:
xpos 200 hbox:
## ypos 1000 xpos 200
yalign 0.3 spacing 23
spacing 23 style_prefix "help"
style_prefix "help" textbutton _("Keyboard") action SetScreenVariable("device", "keyboard")
textbutton _("Keyboard") action SetScreenVariable("device", "keyboard") textbutton _("Mouse") action SetScreenVariable("device", "mouse")
textbutton _("Mouse") action SetScreenVariable("device", "mouse") if GamepadExists():
if GamepadExists(): textbutton _("Gamepad") action SetScreenVariable("device", "gamepad")
textbutton _("Gamepad") action SetScreenVariable("device", "gamepad")
textbutton "Back to Extras" action ShowMenu("extras") 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(): screen keyboard_help():
style_prefix "help" style_prefix "help"
@ -1419,7 +1272,7 @@ screen mouse_help():
text _("Rolls forward to later dialogue.") text _("Rolls forward to later dialogue.")
screen gamepad_help(): screen gamepad_help():
style_prefix "help" style_prefix "help"
hbox: hbox:
label _("Right Trigger\nA/Bottom Button") label _("Right Trigger\nA/Bottom Button")
@ -1471,32 +1324,6 @@ style help_label_text:
xalign 1.0 xalign 1.0
text_align 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 ## Additional screens
################################################################################ ################################################################################
@ -1789,28 +1616,33 @@ style pref_vbox:
## Since a mouse may not be present, we replace the quick menu with a version ## 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. ## 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(): screen quick_menu():
variant "touch" variant "small"
zorder 100 zorder 100
if quick_menu: if quick_menu:
hbox: hbox:
style_prefix "quick" style_prefix "quick"
xalign 0.5 xalign 0.5
yalign 1.0 yalign 0.975
use quick_buttons("gui/button/uioptionbuttons/template_idle.png", \
textbutton _("Back") action Rollback() [ \
textbutton _("Skip") action Skip() alternate Skip(fast=True, confirm=True) [ "Back", Rollback() ], \
textbutton _("Auto") action Preference("auto-forward", "toggle") [ "Skip", Skip() ], \
textbutton _("Menu") action ShowMenu() [ "Auto", Preference("auto-forward", "toggle") ], \
[ "Menu", ShowMenu() ] \
] )
style window:
variant "small"
background "gui/phone/textbox.png"
style radio_button: style radio_button:
variant "small" variant "small"
@ -1824,10 +1656,6 @@ style nvl_window:
variant "small" variant "small"
background "gui/phone/nvl.png" background "gui/phone/nvl.png"
style main_menu_frame:
variant "small"
background "gui/phone/overlay/main_menu.png"
style game_menu_outer_frame: style game_menu_outer_frame:
variant "small" variant "small"
background "gui/phone/overlay/game_menu.png" background "gui/phone/overlay/game_menu.png"

View File

@ -23,9 +23,8 @@ init python:
picked = random.randint(0,length - 1) picked = random.randint(0,length - 1)
fileName = files[picked] fileName = files[picked]
renpy.show(fileName, at_list=[randPosition]) renpy.show(fileName, at_list=[randPosition])
#for issue #13 not finalized if persistent.scroll == True:
#if persistent.scroll == True: config.keymap['dismiss'].append('mousedown_4')
# config.keymap['dismiss'].append('mousedown_5')
transform randPosition: transform randPosition:
alpha 0.0 alpha 0.0
@ -81,34 +80,38 @@ transform randPosition:
# attribute guitar: # attribute guitar:
# "guitar.webp" # "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 #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 A = Character ('Anon',color="#36E12D", who_outlines=[(1, '#0C300A')]) # 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 F = Character ('Fang',color="#B4D4CE", who_outlines=[(1, '#112D27')]) # Light Cyan
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 Lucy = Character ('Lucy',color="#B4D4CE", who_outlines=[(1, '#112D27')]) # Light Cyan
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 Ro = Character ('Rosa',color="#FE712B", who_outlines=[(1, '#3D1809')]) # Red-Orange
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 St = Character ('Stella',color="#D2FFAA", who_outlines=[(1, '#203011')]) # Light Green
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 N = Character ('Naomi',color="#F8B9A0", who_outlines=[(1, '#291A1B')]) # Peach
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 Nas = Character ('Naser',color="#F89E38", who_outlines=[(1, '#2D2D2D')]) # Orange
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 T = Character ('Trish',color="#B675E6", who_outlines=[(1, '#1F0632')]) # Purple
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 Attendant = Character ('Attendant',color="#8A0036", who_outlines=[(1, '#FFFFFF')]) # 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 Sp = Character ('Spears',color="#C4C3C3", who_outlines=[(1, '#272727')]) # Light Grey
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 Re = Character ('Reed',color="#ED4C5B", who_outlines=[(1, '#361013')]) # Bright Red
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 D = Character ('Driver',color="#FFC63A", who_outlines=[(1, '#4D280A')]) # Yellow-Orange
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 FM = Character ('Fangs Mom',color="#FFD8F6", who_outlines=[(1, '#361730')]) # Bright Pink
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 FD = Character ('Fangs Dad',color="#D8A09A", who_outlines=[(1, '#190E0F')]) # Desaturated Orange
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 Tsuki = Character ('Mr. Tsuki',color="#A7F2A2", who_outlines=[(1, '#320E3B')]) # Pear Green
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 unknown = Character ('(???)',color="#000000", who_outlines=[(1, '#FFFFFF')]) # Black
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 jingo = Character ('Mr. Jingo',color="#CD8283", who_outlines=[(1, '#0F0D49')]) # Desaturated Red
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 MaitD = Character ('Maitre D',color="#241630", who_outlines=[(1, '#241630')]) # Cobalt Blue
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 Moe = Character('Moe',color="#A5BEED", who_outlines=[(1, '#342210')]) # Desaturated Blue
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 Vince = Character ('Vince',color="#FFC63A", who_outlines=[(1, '#4D280A')]) # Yellow-Orange
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 Waitress = Character ('Waitress',color="#F691C8", who_outlines=[(1, '#402E3A')]) # Pink
#long TB chars #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 AnonAndFang = Character('Anon and Fang',color="72DFA8", who_outlines=[(1, '#113623')], **long_textbox) # Cyan
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 SV = Character ('Street Vendor',color="#F8E120", who_outlines=[(1, '#361504')], **long_textbox) # Yellow
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 carl = Character ('Mr. Carldewskii',color="#E19E40", who_outlines=[(1, '#03223B')], **long_textbox) # Puke Orange
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 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 #Extra image translations
#siloettes #siloettes

View File

@ -115,32 +115,32 @@ label chapter_10:
A "...Fine..." A "...Fine..."
scene wounds1 with fade scene wounds01 with fade
pause 2 pause 2
scene black with fade scene black with fade
"I step into my tiny shower stall and turn on the water." "I step into my tiny shower stall and turn on the water."
"The shower head sputters before it starts weakly spraying lukewarm 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 doesnt help the tension in my muscles or the bruises marring my skin." "The temperature of the water doesnt 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." "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." "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." "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." "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" "Fang then pats the bed"
@ -148,7 +148,7 @@ label chapter_10:
"I walk over and lie down on my stomach" "I walk over and lie down on my stomach"
scene wounds7 scene wounds07
F "Jesus that's bad..." F "Jesus that's bad..."
@ -193,11 +193,11 @@ label chapter_10:
A "Hm?" A "Hm?"
F "I need to do the front." F "I need to do the front."
scene wounds8 scene wounds08
"Oh." "Oh."
"Okay then. I roll over onto my back." "Okay then. I roll over onto my back."
scene wounds9 scene wounds09
"And find myself face to beak with her." "And find myself face to beak with her."
"Dangerously close." "Dangerously close."
@ -350,4 +350,4 @@ label chapter_10:
stop music fadeout 1.0 stop music fadeout 1.0
"..." "..."
return return

View File

@ -1244,7 +1244,7 @@ label chapter_2:
A "Huh?" 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?" A "How did you say that out loud?"
@ -1377,7 +1377,7 @@ label chapter_2:
A "Well…" A "Well…"
"Fang Reed and Trish" "Ohfuck. Sorry Anon, we gotta bail." FRT "Ohfuck. Sorry Anon, we gotta bail."
show fang neutral flip show fang neutral flip
show trish neutral flip show trish neutral flip
hide trish with moveoutright hide trish with moveoutright
@ -1513,4 +1513,4 @@ label chapter_2:
scene black with fade scene black with fade
return return

View File

@ -288,7 +288,7 @@ label chapter_5:
label movie: label movie:
A "FANG!" A "FANG!"
stop music fadeout 1.0 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 scene fang tail with fade
@ -2547,3 +2547,7 @@ label chapter_5:
"..." "..."
return return
label fang_movie:
scene fang tail with fade
""

285
game/src/cg_gallery.rpy Normal file
View File

@ -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 ]
] )