Files
Whiskerbound/game.py
2026-04-12 15:39:18 -04:00

104 lines
3.4 KiB
Python

from data.cat import Cat
from systems.ui import clear, title
from systems.world import shelter, house
import systems.ui as ui
import data.save
import os
class Game:
def __init__(self):
self.cat = None
def settings(self):
while True:
match ui.select(
"Please choose an option", ["Prepare for savefile transfer", "Back"]
):
case "Back":
return False
case "Prepare for savefile transfer":
print(
"This tool is for transfering your savefile to another device without causing the tamper detection."
)
print(
"If you confirm, the game will save and then exit, at this point you will copy your game files and saves folder over."
)
print(
"DO NOT RELAUNCH THE GAME before copying or it will undo this tool"
)
if ui.confirm():
data.save.save(self.cat)
return True
return False
def options_menu(self):
while True:
match ui.select(
"Please choose an option",
["Save", "Save and quit", "Quit", "Settings", "Back"],
):
case "Save":
data.save.save(self.cat)
print("Saved")
case "Save and quit":
print("Goodbye!")
data.save.save(self.cat)
return True
case "Quit":
if ui.confirm("Are you sure you want to quit without saving?"):
print("Goodbye!")
return True
case "Settings":
if self.settings():
return True
case "Back":
return False
def new_game(self):
self.cat = shelter()
print("Saving...")
data.save.save(self.cat)
print("Save complete.")
self.game_loop()
def game_loop(self):
while True:
match ui.select("Please choose an option", ["Go to your house", "Options"]):
case "Go to your house":
house(self.cat)
case "Options":
if self.options_menu():
return
def run(self):
if os.path.exists("ENABLE DEBUG"):
with open("ENABLE DEBUG", "r") as f:
file = f.read().strip()
self.cat = data.save.load(file)
self.game_loop()
print(f"{self.cat.name} says bye")
return
title()
options = ["New Game", "Quit"]
if os.path.exists("saves"):
options.insert(0, "Load Game")
print("Welcome to Whiskerbound!")
choice = ui.select("Please choose an option", choices=options)
if choice == "New Game":
self.new_game()
elif choice == "Load Game":
save = "saves/" + ui.select(
"Please choose a savefile to load", os.listdir("saves")
)
self.cat = data.save.load(save)
self.game_loop()
elif choice == "Quit":
quit()
if __name__ == "__main__":
game = Game()
game.run()