Files
IWaniHugThatGator-Demo-Public/game/00src/save_compat.rpy
2024-03-06 19:57:33 -06:00

218 lines
8.5 KiB
Plaintext

# We'll assume that if the end of demo label was seen then the player has played the demo
define played_demo = renpy.seen_label("end_of_demo")
default persistent.seen_notice = False
default persistent.skip_ask = True
# If this is not set, ben_story will be set to None, this is only not set when the player loads an old save file
default ben_story = None
label after_load:
if not renpy.android:
# If the player went past chapter 2 without seeing the caligraphy CG then they are on a save from the first version of the game
if not persistent.seen_notice and not renpy.seen_image("cg_calligraphy") and (renpy.get_return_stack()[1] == '_call_chapter_3' or renpy.get_return_stack()[1] == '_call_chapter_4'):
call old_save_notice from _call_old_save_notice
call ask_drawing from _call_ask_drawing
$ renpy.block_rollback()
if ben_story == None and renpy.get_return_stack()[1].startswith("chapter_"):
if hasattr(store, 'score_olivia'):
call initstats(score_olivia,score_inco) from _call_initstats_4
call ask_drawing from _call_ask_drawing_1
# So they don't undo the new variables
$ renpy.block_rollback()
else:
$ score_olivia = 0
$ score_inco = 0
return
label old_save_notice:
show black as notice_screen with Dissolve(1)
"Your save file was created on an old version of the demo, which is incompatible with this version of the game."
"Choosing to continue will likely mean that you'll be forced into a bad ending."
menu:
"Continue":
pass
"Wipe save files":
$ delete_savefiles()
$ MainMenu(confirm=False)()
"Try to salvage the save file":
menu:
"When Olivia passed the drawing around you..."
"Drew her on a half-pipe":
$ score_inco += 1
$ score_inco_drawnotehalfpipe = True
"Held onto the sheet til after class":
$ score_inco_drawnotehalfpipe = False
"I haven't done that yet!" if renpy.get_return_stack()[1] == '_call_chapter_3':
pass
if renpy.get_return_stack()[1] == '_call_chapter_4':
menu:
"When Olivia was adamant on staying inside you..."
"Invited her to join you back outside":
$ score_olivia += 1
"Convinced her why her family needs her out there":
pass
"I haven't done that yet!":
pass
call ask_drawing from _call_ask_drawing_2
"Everything's ready, be sure to save the game once inside, enjoy the game and sorry for the inconvenience!"
$ persistent.seen_notice = True
"Go back to the main menu":
$ MainMenu(confirm=False)()
hide notice_screen with Dissolve(1)
return
init python:
def delete_savefiles():
for savegame in renpy.list_saved_games(fast=True):
renpy.unlink_save(savegame)
screen ask_skip():
modal True
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _("We detected you've played the demo before, would you like to skip to the new content?"):
style "confirm_prompt"
xalign 0.5
textbutton _("Ask me again next time (can be changed in the settings)"):
action ToggleVariable("persistent.skip_ask")
xalign 0.5
style_prefix "check"
hbox:
xalign 0.5
spacing 100
textbutton _("Yes") action Jump("AskChoices")
textbutton _("No") action Return()
label AskChoices:
menu:
"When Olivia passed the drawing around you..."
"Drew her on a half-pipe":
$ score_inco += 1
$ score_inco_drawnotehalfpipe = True
"Held onto the sheet til after class":
$ score_inco_drawnotehalfpipe = False
menu:
"When Olivia was adamant on staying inside you..."
"Invited her to join you back outside":
$ score_olivia += 1
"Convinced her why her family needs her out there":
pass
call ask_drawing from _call_ask_drawing_3
jump newContent
init python:
def handle_bad_save(shortException,longException,tracebackFile):
if "Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?" in shortException and not config.developer:
renpy.jump("incompatible_save")
else:
return False
define config.exception_handler = handle_bad_save
label incompatible_save:
scene black
stop music
call screen badSave()
screen badSave():
modal True
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _("Your save file is incompatible and can't be fixed, try loading another one or start a new game."):
style "confirm_prompt"
xalign 0.5
hbox:
xalign 0.5
spacing 100
# I originally wanted to send you to the main menu but that really really breaks for some reason
textbutton _("OK") activate_sound "audio/ui/snd_ui_click.wav" action Start()
label ask_drawing:
if type(waniDemoCarryover.Chapter3Drawing) == NoneType:
"Older versions of the Demo (pre-full game release) did not properly save your drawings in a game-readable way. To fix this, we would like to offer you a chance to re-do your original \"masterpiece\" or to choose it from the file-picker. Would you be interested in that?"
menu:
"Yes, I would like to redraw":
python:
#change the last_drawing_index in the occurrences of sketches
last_drawing = 0
#TODO: Make this not a string call. last_drawing should be a check against the multi-persistance.
has_drawn = type(waniDemoCarryover.Chapter3Drawing) == bytes
draw_logic.Draw.main(last_drawing_index=0, seed_index=drawings_seed, has_drawn=has_drawn)
if (renpy.store.persistent.drawn):
if not (draw_logic.last_filename == ''):
waniDemoCarryover.Chapter3Drawing = draw_logic.rawImageBytes
waniDemoCarryover.save()
renpy.store.persistent.drawn = 0
$ my_drawing = renpy.display.im.Data(waniDemoCarryover.Chapter3Drawing, "input.png")
"Yes, I would like to use the file-picker":
python:
import shutil
from os import path
#Is there not a way to have tkinter.filedialog.askopenfile return raw bytes?
#For some reason, it only returns the string variant of TextIOWrapper
filename = getDrawing()
if filename != None and filename.endswith(".png"):
with open(filename, mode="rb") as filecontents:
waniDemoCarryover.Chapter3Drawing = filecontents.read()
my_drawing = renpy.display.im.Data(waniDemoCarryover.Chapter3Drawing, "input.png")
new_folder = path.join(
renpy.config.gamedir,
draw_logic.SAVE_FOLDER,
"{0}_{1}_{2}{3}".format(draw_logic.DRAW_SAVE_NAME, drawings_seed, 0, draw_logic.DRAW_EXT)
)
# We move the drawing for the later drawings gallery
try:
shutil.copyfile(filename, new_folder)
except:
pass
if filename == None or not filename.endswith(".png"):
$print(filename == None or not filename.endswith(".png"))
"Please input a valid file."
jump ask_drawing
else:
pass
"No":
pass
return