player object
This commit is contained in:
@@ -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():
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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"]),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user