player object

This commit is contained in:
2026-06-25 14:46:30 -04:00
parent f105d5b7c2
commit 55d1a66cfb
4 changed files with 54 additions and 33 deletions

View File

@@ -1,6 +1,6 @@
import pytest
from untitled import content, migration, model, persistence, rules
from untitled import content, model, persistence, rules
def test_save_load_roundtrip(tmp_path):
@@ -28,23 +28,23 @@ def test_save_load_roundtrip(tmp_path):
assert loaded.version == content.SAVE_VERSION
def test_migration():
v1 = {
"version": 1,
"cat": {
"name": "Fry",
"traits": {
"size": "tiny",
"color": "tuxedo",
"eyes": "blue",
"personality": "judges you silently",
},
},
}
result = migration.migrate(v1)
assert result["version"] == content.SAVE_VERSION
assert result["cat"]["fullness"] == 100
assert "last_updated" in result["cat"]
# def test_migration():
# v1 = {
# "version": 1,
# "cat": {
# "name": "Fry",
# "traits": {
# "size": "tiny",
# "color": "tuxedo",
# "eyes": "blue",
# "personality": "judges you silently",
# },
# },
# }
# result = migration.migrate(v1)
# assert result["version"] == content.SAVE_VERSION
# assert result["cat"]["fullness"] == 100
# assert "last_updated" in result["cat"]
def test_decay_and_replenish():

View File

@@ -1,12 +1,15 @@
STUDIO_NAME = "Untitled Randomness Studios" # Titled Randomness Studios
GAME_NAME = "Untitled Cat Game" # Titled Cat Game
SAVE_VERSION = 2
SAVE_VERSION = 1
HUNGER_DECAY_PER_HOUR = 5
BASE_HAPPINESS_DECAY_PER_HOUR = 2
HUNGER_SADNESS_THRESHOLD = 30
HUNGER_SADNESS_PENALTY_PER_HOUR = 5
BASE_INVENTORY = {"food": 0, "medicine": 0, "catnip": 0}
CAT_COLORS = [
"orange tabby",
"black",

View File

@@ -1,15 +1,13 @@
import time
# def _v1_to_v2(data):
# data["cat"]["fullness"] = 100
# data["cat"]["happiness"] = 100
# data["cat"]["last_updated"] = time.time()
# data["version"] = 2
# return data
def _v1_to_v2(data):
data["cat"]["fullness"] = 100
data["cat"]["happiness"] = 100
data["cat"]["last_updated"] = time.time()
data["version"] = 2
return data
_MIGRATIONS = {1: _v1_to_v2}
_MIGRATIONS = {}
def migrate(data):

View File

@@ -1,6 +1,8 @@
import time
from dataclasses import asdict, dataclass, field
from untitled import content
@dataclass
class Cat:
@@ -21,13 +23,31 @@ class Cat:
@dataclass
class Save:
version: int
cat: Cat
class Player:
money: int = 0
inventory: dict = field(default_factory=lambda: dict(content.BASE_INVENTORY))
def to_dict(self):
return asdict(self)
@staticmethod
def from_dict(data):
return Save(data["version"], Cat.from_dict(data["cat"]))
return Player(**data)
@dataclass
class Save:
version: int
cat: Cat
player: Player
def to_dict(self):
return asdict(self)
@staticmethod
def from_dict(data):
return Save(
data["version"],
Cat.from_dict(data["cat"]),
Player.from_dict(data["player"]),
)