From 407de1cfba1f3a7377a762728395462886a8c223 Mon Sep 17 00:00:00 2001 From: Owen Feldman Date: Mon, 20 Apr 2026 17:22:57 -0400 Subject: [PATCH] Happiness and Fullness --- RELEASE_NOTES.txt | 3 ++- data/cat.py | 25 +++++++++++++++++++++++-- data/save.py | 8 +------- data/text.py | 2 +- game.py | 5 ++++- systems/world.py | 2 ++ 6 files changed, 33 insertions(+), 12 deletions(-) diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt index 4246c8c..7d2d842 100644 --- a/RELEASE_NOTES.txt +++ b/RELEASE_NOTES.txt @@ -1,2 +1,3 @@ Major update! -Added saving to the web version! \ No newline at end of file +Added saving to the web version! +Added happiness level and fullness level \ No newline at end of file diff --git a/data/cat.py b/data/cat.py index b83494a..6345cd6 100644 --- a/data/cat.py +++ b/data/cat.py @@ -1,10 +1,31 @@ +import time # first import here! + + class Cat: - def __init__(self, name, traits, money=25, inventory=None): + def __init__( + self, + name, + traits, + money=25, + inventory=None, + last_login=None, + fullness=100, + happiness=100, + ): self.name = name self.traits = traits + self.last_login = last_login or time.time() self.money = money - self.inventory = inventory self.inventory = inventory if inventory is not None else {} + self.fullness = fullness # really hunger, but 100 hunger being defualt sounds like its 100% hungry so its fullness. + self.happiness = happiness + + def apply_decay(self): # first neat function! yayyy! + elapsed_hours = (time.time() - self.last_login) / 3600 + if elapsed_hours <= 0: + elapsed_hours = 0 + self.fullness -= 5 * elapsed_hours + self.happiness -= 5 * elapsed_hours def to_dict(self): return vars(self) diff --git a/data/save.py b/data/save.py index 207dd52..41c9121 100644 --- a/data/save.py +++ b/data/save.py @@ -51,13 +51,7 @@ def prepare_move(): print("No save data to prepare.") -class SaveData: - def __init__(self, cat, money=100): - self.cat = cat - self.money = money - - -def save(cat, dont_save=False): +def save(cat: Cat, dont_save=False): if os.path.exists("WEB_VERSION") and not dont_save: print( "Under this message, in quotes, will be a long string of text, this is your savefile, please copy this somewhere safe (WITHOUT THE QUOTES) and make sure to copy the whole thing, you will paste it back to load your game. DO NOT use control+c to copy, instead, select it, and use the right click menu to copy, ctrl+c will crash this." diff --git a/data/text.py b/data/text.py index 2761281..27b96ae 100644 --- a/data/text.py +++ b/data/text.py @@ -19,7 +19,7 @@ CAT_SIZES = [ "big", "chonky", ] -CAT_PERSONALITIES = [ +CAT_PERSONALITIES = [ # TODO: start at different happiness levels based on personality "looks like trouble", "judges you silently", "won't stop meowing", diff --git a/game.py b/game.py index a41db5e..142542c 100644 --- a/game.py +++ b/game.py @@ -8,6 +8,7 @@ import os import json import traceback import base64 +import time class Game: @@ -77,8 +78,10 @@ class Game: print("Save complete.") self.game_loop() - # TODO: Add money system + # TODO: Add way to make money def game_loop(self): + self.cat.apply_decay() + self.cat.last_login = time.time() ui.current_cat = self.cat while True: match ui.select( diff --git a/systems/world.py b/systems/world.py index 001aba4..9b5dc3f 100644 --- a/systems/world.py +++ b/systems/world.py @@ -185,6 +185,8 @@ def house(cat: Cat): print( f"{cat.name} - a {cat.traits["size"]} {cat.traits["color"]} with {cat.traits["eyes"]} eyes." ) + print(f"Happiness level: {cat.happiness}") + print(f"Fullness: {cat.fullness}/100") print(f"You have ${cat.money}.") case "Pet your cat": pet(cat)