forked from SilverStudioGames/WTS
LoafyLemon
b28a3e250d
* Added get_character_scheduling function * Removed update_interface_color calls (Redundant) * Redesigned variable naming convention to simplify assignment and lookup * Removed counter_class (Superseded) * Removed DynamicDisplayable CG implementation (Superseded)
257 lines
10 KiB
Plaintext
257 lines
10 KiB
Plaintext
init python:
|
|
def text_points(points):
|
|
if points < 1000:
|
|
return str(points)
|
|
else:
|
|
return str(round(points/1000.0, 1))+"{size=-2}k{/size}"
|
|
|
|
label update_ui_points:
|
|
# Debug
|
|
|
|
# Temp variables
|
|
$ toggle_points = False
|
|
$ toggle_menu = False
|
|
|
|
# Outline settings
|
|
#TODO Refactor interface_color dependent styles to definitions
|
|
$ points_outline = [ (1, "#000", 0, 0) ]
|
|
|
|
#If points variable value exceedes one thousand make it a decimal number instead and round to x.x
|
|
#Remember, "slytherin_points" is a string! If you need points integer use i.e. "slytherin" variable instead.
|
|
$ slytherin_points = text_points(slytherin)
|
|
$ gryffindor_points = text_points(gryffindor)
|
|
$ ravenclaw_points = text_points(ravenclaw)
|
|
$ hufflepuff_points = text_points(hufflepuff)
|
|
|
|
#Check who's in the lead
|
|
$ housepoints = [slytherin, gryffindor, ravenclaw, hufflepuff]
|
|
$ housepoints_sorted = sorted(housepoints, reverse=True)
|
|
|
|
$ slytherin_place = housepoints_sorted.index(housepoints[0])+1
|
|
$ gryffindor_place = housepoints_sorted.index(housepoints[1])+1
|
|
$ ravenclaw_place = housepoints_sorted.index(housepoints[2])+1
|
|
$ hufflepuff_place = housepoints_sorted.index(housepoints[3])+1
|
|
|
|
# Set banners yanchor depending on the placement (ascending)
|
|
$ housepoints_y = [None, 0.0, 0.25, 0.5, 0.75]
|
|
|
|
return
|
|
|
|
screen ui_top_bar():
|
|
tag ui
|
|
zorder 2
|
|
|
|
if toggle_menu:
|
|
use ui_menu
|
|
|
|
add gui.format("interface/topbar/{}/bar.webp") zoom 0.5
|
|
use ui_stats
|
|
use ui_points
|
|
|
|
# Don't display buttons in certain rooms or on the first day
|
|
if states.room == "main_room" and game.day > 1:
|
|
# Menu button
|
|
imagebutton:
|
|
xpos 0
|
|
idle gui.format("interface/topbar/buttons/{}/ui_menu.webp")
|
|
if room_menu_active:
|
|
hover image_hover(gui.format("interface/topbar/buttons/{}/ui_menu.webp"))
|
|
if toggle_menu:
|
|
tooltip "Close menu"
|
|
else:
|
|
tooltip "Open menu"
|
|
action ToggleVariable("toggle_menu", True, False)
|
|
|
|
# Sleep button
|
|
imagebutton:
|
|
xpos 1080
|
|
xanchor 1.0
|
|
idle gui.format("interface/topbar/buttons/{}/ui_sleep.webp")
|
|
if room_menu_active:
|
|
hover image_hover(gui.format("interface/topbar/buttons/{}/ui_sleep.webp"))
|
|
if game.daytime:
|
|
action Jump("night_start")
|
|
tooltip "Doze Off (s)"
|
|
else:
|
|
action Jump("day_start")
|
|
tooltip "Sleep (s)"
|
|
|
|
hbox:
|
|
if renpy.android:
|
|
spacing 10
|
|
xpos 800
|
|
else:
|
|
xpos 900
|
|
|
|
# Achievements button
|
|
imagebutton:
|
|
idle gui.format("interface/topbar/buttons/{}/ui_achievements.webp")
|
|
if room_menu_active:
|
|
hover image_hover(gui.format("interface/topbar/buttons/{}/ui_achievements.webp"))
|
|
tooltip "Achievements"
|
|
action Jump("achievement")
|
|
|
|
# Stats button
|
|
imagebutton:
|
|
idle gui.format("interface/topbar/buttons/{}/ui_stats.webp")
|
|
if room_menu_active:
|
|
hover image_hover(gui.format("interface/topbar/buttons/{}/ui_stats.webp"))
|
|
tooltip "Characters (c)"
|
|
action Jump("stats")
|
|
|
|
# Inventory button
|
|
imagebutton:
|
|
idle gui.format("interface/topbar/buttons/{}/ui_inv.webp")
|
|
if room_menu_active:
|
|
hover image_hover(gui.format("interface/topbar/buttons/{}/ui_inv.webp"))
|
|
tooltip "Inventory (i)"
|
|
action Jump("inventory")
|
|
|
|
# Work button
|
|
if states.paperwork_unlocked:
|
|
imagebutton:
|
|
idle gui.format("interface/topbar/buttons/{}/ui_work.webp")
|
|
if room_menu_active:
|
|
hover image_hover(gui.format("interface/topbar/buttons/{}/ui_work.webp"))
|
|
tooltip "Work (w)"
|
|
action Jump("paperwork")
|
|
|
|
screen ui_points():
|
|
tag ui
|
|
|
|
fixed:
|
|
xalign 0.5
|
|
xsize 162
|
|
ysize 64
|
|
xanchor 0.5
|
|
|
|
if not persistent.toggle_points and not toggle_points:
|
|
add "interface/topbar/slytherin.webp" yanchor housepoints_y[slytherin_place]
|
|
add "interface/topbar/gryffindor.webp" yanchor housepoints_y[gryffindor_place]
|
|
add "interface/topbar/ravenclaw.webp" yanchor housepoints_y[ravenclaw_place]
|
|
add "interface/topbar/hufflepuff.webp" yanchor housepoints_y[hufflepuff_place]
|
|
else:
|
|
# Add empty banners
|
|
add "interface/topbar/slytherin_empty.webp" yanchor 0
|
|
add "interface/topbar/gryffindor_empty.webp" yanchor 0
|
|
add "interface/topbar/ravenclaw_empty.webp" yanchor 0
|
|
add "interface/topbar/hufflepuff_empty.webp" yanchor 0
|
|
# Show points
|
|
text "{size=-5}{color=#FFF}[slytherin_points]{/color}{/size}" outlines points_outline xpos 17 ypos 30 xanchor 0.5
|
|
text "{size=-5}{color=#FFF}[gryffindor_points]{/color}{/size}" outlines points_outline xpos 58 ypos 30 xanchor 0.5
|
|
text "{size=-5}{color=#FFF}[ravenclaw_points]{/color}{/size}" outlines points_outline xpos 98 ypos 30 xanchor 0.5
|
|
text "{size=-5}{color=#FFF}[hufflepuff_points]{/color}{/size}" outlines points_outline xpos 139 ypos 30 xanchor 0.5
|
|
# Show placement number
|
|
text "{size=16}{color=#FFF}[slytherin_place]{/color}{/size}" outlines points_outline xpos 17 ypos 10 xanchor 0.5
|
|
text "{size=16}{color=#FFF}[gryffindor_place]{/color}{/size}" outlines points_outline xpos 58 ypos 10 xanchor 0.5
|
|
text "{size=16}{color=#FFF}[ravenclaw_place]{/color}{/size}" outlines points_outline xpos 98 ypos 10 xanchor 0.5
|
|
text "{size=16}{color=#FFF}[hufflepuff_place]{/color}{/size}" outlines points_outline xpos 139 ypos 10 xanchor 0.5
|
|
|
|
if room_menu_active:
|
|
imagebutton:
|
|
idle "interface/topbar/hover_zone.webp"
|
|
tooltip "House Points\n{size=-2}Click to toggle style display{/size}"
|
|
hovered SetVariable("toggle_points", True)
|
|
unhovered SetVariable("toggle_points", False)
|
|
action ToggleVariable("persistent.toggle_points", True, False)
|
|
|
|
screen ui_stats():
|
|
tag ui
|
|
fixed:
|
|
xpos 200
|
|
frame:
|
|
style "empty"
|
|
style_prefix gui.theme("ui_stats")
|
|
xsize 217
|
|
ysize 26
|
|
|
|
add gui.format("interface/topbar/{}/stats.webp") xalign 0.5 yalign 1.0
|
|
|
|
hbox:
|
|
xpos 40 ypos 11
|
|
text "{size=-4}[game.day]{/size}"
|
|
hbox:
|
|
xpos 140 ypos 11
|
|
# Display tokens in token shop
|
|
text "{size=-4}[game.gold]{/size}"
|
|
|
|
style light_ui_stats_text:
|
|
color "#000"
|
|
outlines [(1, "#e4ba7080", 0, 0)]
|
|
|
|
style dark_ui_stats_text:
|
|
color "#fff"
|
|
outlines [(1, "#00000080", 0, 0)]
|
|
|
|
screen ui_menu():
|
|
tag ui
|
|
|
|
button style "empty" action SetVariable("toggle_menu", False) keysym "game_menu"
|
|
|
|
button:
|
|
ypos 34
|
|
xsize 102
|
|
ysize 204
|
|
action NullAction()
|
|
style "empty"
|
|
frame:
|
|
style "empty"
|
|
style_prefix gui.theme()
|
|
ypos 34
|
|
xsize 102
|
|
ysize 204
|
|
|
|
add gui.format("interface/topbar/{}/menu.webp")
|
|
|
|
vbox:
|
|
xanchor 0.5
|
|
xalign 0.5
|
|
ypos 15
|
|
textbutton "Save" action ShowMenu("save") background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ]
|
|
textbutton "Load" action ShowMenu("load") background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ]
|
|
if game.cheats and game.difficulty <= 2 and game.day > 1:
|
|
textbutton "Cheats" action [SetVariable("toggle_menu", False), Jump("cheats")] background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ]
|
|
if game.day > 1 and renpy.android:
|
|
textbutton "Preferences" action ShowMenu("preferences") background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ]
|
|
if game.day > 1 and persistent.game_complete:
|
|
textbutton "Gallery" action [SetVariable("toggle_menu", False), Jump("scene_gallery")] background None xalign 0.5 text_outlines [ (2, "#00000080", 1, 0) ]
|
|
|
|
#if game.day > 1 and config.developer:
|
|
# textbutton "{size=-11}Show Chars{/size}" action [SetVariable("toggle_menu", False), Jump("summon_characters")] background "#000"
|
|
|
|
hbox:
|
|
pos (50, 185)
|
|
anchor (0.5, 0.5)
|
|
spacing 10
|
|
# Discord
|
|
imagebutton:
|
|
idle Transform("interface/topbar/icon_discord.webp", alpha=0.5)
|
|
hover "interface/topbar/icon_discord.webp"
|
|
tooltip "Visit {color=#c1c1c1}SilverStudioGames{/color}\ndiscord"
|
|
action OpenURL("https://discord.gg/UbQeTCJ5RW")
|
|
yanchor 0.5
|
|
# Patreon
|
|
imagebutton:
|
|
idle Transform("interface/topbar/icon_patreon.webp", alpha=0.5)
|
|
hover "interface/topbar/icon_patreon.webp"
|
|
tooltip "Visit {color=#c1c1c1}SilverStudioGames{/color}\npatreon"
|
|
action OpenURL("https://www.patreon.com/SilverStudioGames")
|
|
yanchor 0.5
|
|
# Bugfixes
|
|
imagebutton:
|
|
idle Transform("interface/topbar/icon_bug.webp", alpha=0.5)
|
|
hover "interface/topbar/icon_bug.webp"
|
|
tooltip "PLACEHOLDER"
|
|
action NullAction()
|
|
yanchor 0.5
|
|
|
|
label scene_gallery:
|
|
menu:
|
|
"-Watch Ball Ending 1-" if persistent.ending_01:
|
|
$ renpy.call_replay("ball_ending_E2", { "states.her.ev.yule_ball.variant": "personal" })
|
|
"-Watch Ball Ending 2-" if persistent.ending_02:
|
|
$ renpy.call_replay("ball_ending_E2", { "states.her.ev.yule_ball.variant": "public" })
|
|
"-Never mind-":
|
|
pass
|
|
jump main_room_menu
|