102 lines
2.5 KiB
Python
102 lines
2.5 KiB
Python
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", "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()
|