Fix hash debug menu+bypass hash in debug+new debug config system+shop+base for inventory system+what am i forgetting

This commit is contained in:
2026-04-13 17:45:29 -04:00
parent c92699888e
commit 4df79550ea
8 changed files with 118 additions and 20 deletions

View File

@@ -1,6 +1,11 @@
import os
import questionary
import sys
import data.save
import json
from data.cat import Cat
current_cat: Cat | None = None
def getch():
@@ -21,16 +26,38 @@ def getch():
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", "Back"],
["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
@@ -51,10 +78,12 @@ STYLE = questionary.Style(
]
)
Choice = questionary.Choice
def select(message, choices, hide_debug=False):
choices = list(choices).copy().copy().copy().copy().copy().copy() # yay!
if os.path.exists("ENABLE DEBUG") and hide_debug == False:
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()

View File

@@ -67,6 +67,43 @@ def shelter(include_welcome=True):
return Cat(name, traits)
def shop(cat: Cat):
print("Welcome to the shop")
while True:
print(f"You have ${cat.money}")
match ui.select("Please choose an option", ["Buy something", "Leave the shop"]):
case "Buy something":
item = ui.select(
"Please choose something to buy",
[
ui.Choice(title=f"{name} - ${price}", value=name)
for name, price in data.text.SHOP_ITEMS.items()
],
)
item_price = data.text.SHOP_ITEMS[item]
if item_price > cat.money:
print(
f"You don't have enough money to buy this! You need {item_price-cat.money} more dollars."
)
else:
if ui.confirm(
f"Are you sure you want to buy {item} for ${item_price}? You will have ${cat.money-item_price} left over."
):
cat.money -= item_price
cat.inventory[item] = cat.inventory.get(item, 0) + 1
print(f"You bought {item}.")
else:
print("Cancelled.")
# TODO: idea, each item, when selected in house storage menu, call a item menu thing thats specific for each item
# TODO: make toy mouse that increases happyness (so also add emotions and sicknesses maybe) but has a 25% chance of getting lost under the couch and makes the cat tired possibly
pass
case "Leave the shop":
print("Goodbye!")
break
def pet(cat: Cat):
print(f"Mash keys to pet {cat.name}, press enter when you're done.")
count = 0