import os import questionary import sys import data.save import json from data.cat import Cat current_cat: Cat | None = None def getch(): if sys.platform == "win32": import msvcrt return msvcrt.getwch() else: import tty import termios fd = sys.stdin.fileno() old = termios.tcgetattr(fd) try: tty.setcbreak(fd) return sys.stdin.read(1) finally: termios.tcsetattr(fd, termios.TCSADRAIN, old) def fix_hash(): data_dir = data.save.get_data_dir() hash_path = os.path.join(data_dir, "dont hurt cats.json") os.makedirs(data_dir, exist_ok=True) if os.path.exists(hash_path): with open(hash_path, "r") as f: currentjson = json.load(f) currentjson[f"saves/{current_cat.name}.kitten"] = data.save.hash_file( f"saves/{current_cat.name}.kitten" ) print( f"Old hash: {currentjson.get(f"saves/{current_cat.name}.kitten")}. New hash: {currentjson[f"saves/{current_cat.name}.kitten"]}" ) with open(hash_path, "w") as f: json.dump(currentjson, f) def debug_menu(): print("hi") while True: match select( "choose ur way of breaking the game", ["Breakpoint", "Fix hash", "Debug settings", "Back"], hide_debug=True, ): case "Breakpoint": breakpoint() case "Fix hash": fix_hash() print( "If you see this message and theres no errors above I think it worked." ) case "Back": break def clear(): os.system("cls" if os.name == "nt" else "clear") def title(): clear() print("=== Whiskerbound ===\n") STYLE = questionary.Style( [ ("selected", "fg:cyan bold"), ("pointer", "fg:cyan bold"), ] ) Choice = questionary.Choice def select(message, choices, hide_debug=False): choices = list(choices).copy().copy().copy().copy().copy().copy() # yay! if os.path.exists("debug.json") and hide_debug == False: if not "Debug Menu" in choices: choices.append("Debug Menu") choice = questionary.select(message, choices=choices, style=STYLE).ask() if choice != "Debug Menu": return choice debug_menu() return select(message, choices) def text(message, default=""): return questionary.text(message, default=default, style=STYLE).ask() def confirm(message, default=True): return questionary.confirm(message, default=default, style=STYLE).ask()