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

View File

@@ -1,12 +1,15 @@
STUDIO_NAME = "Untitled Randomness Studios" # Titled Randomness Studios STUDIO_NAME = "Untitled Randomness Studios" # Titled Randomness Studios
GAME_NAME = "Untitled Cat Game" # Titled Cat Game GAME_NAME = "Untitled Cat Game" # Titled Cat Game
SAVE_VERSION = 2 SAVE_VERSION = 1
HUNGER_DECAY_PER_HOUR = 5 HUNGER_DECAY_PER_HOUR = 5
BASE_HAPPINESS_DECAY_PER_HOUR = 2 BASE_HAPPINESS_DECAY_PER_HOUR = 2
HUNGER_SADNESS_THRESHOLD = 30 HUNGER_SADNESS_THRESHOLD = 30
HUNGER_SADNESS_PENALTY_PER_HOUR = 5 HUNGER_SADNESS_PENALTY_PER_HOUR = 5
BASE_INVENTORY = {"food": 0, "medicine": 0, "catnip": 0}
CAT_COLORS = [ CAT_COLORS = [
"orange tabby", "orange tabby",
"black", "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): _MIGRATIONS = {}
data["cat"]["fullness"] = 100
data["cat"]["happiness"] = 100
data["cat"]["last_updated"] = time.time()
data["version"] = 2
return data
_MIGRATIONS = {1: _v1_to_v2}
def migrate(data): def migrate(data):

View File

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