convert old objects into new ones when loading them

This commit is contained in:
troido 2020-04-08 12:07:08 +02:00
parent df9867fb5b
commit 108ae2f424
4 changed files with 29 additions and 4 deletions

View File

@ -2,6 +2,7 @@
from ..entity import Entity
from .conversions import convert
from .base import entities as base
from .crops import entities as crops
from .exchangers import entities as exchangers
@ -27,8 +28,11 @@ def createEntity(data):
elif isinstance(data, dict):
if "type" in data:
obj = entities[data["type"]](*(data.get("args", [])), **(data.get("kwargs", {})))
elif "components" in data:
obj = createEntity(convert(data))
#obj = Entity.fromJSON(data)
else:
obj = Entity.fromJSON(data)
raise ValueError("invalid entity data: " + str(data))
return obj
def buildEntity(data, roomData, preserve=False):

View File

@ -0,0 +1,19 @@
conversions = {
"food": "eldritch_radish",
"sword": "sword",
"godsword": {"type": "weapon", "kwargs": {"strength": 500, "name": "godsword"}},
"pebble": "pebble",
"club": "club",
"seed": "radishseed",
"stone": "stone",
"wall": "wall",
"armour": "armour"
}
def convert(item):
name = item["name"]
if name in conversions:
return conversions[name]
raise ValueError("Unknown old object:", str(item))

View File

@ -95,14 +95,16 @@ createCrop("radish", [
Stage("{}plant", sprite="smallplant", height=0.5, harvest=[("radishseed", .92), ("radishseed", .20), ("radishes", .8), ("radishes", .4)])
], 10)
entities["radishes"] = lambda: Entity(sprite="food", name="radishes", height=0.3, components={"item": Food(2), "serialize": Static("radishes")})
entities["radish"] = lambda: Entity(sprite="food", name="radish", height=0.3, components={"item": Food(2), "serialize": Static("radishes")})
entities["food"] = entities["radishes"]
entities["food"] = entities["radish"]
entities["radishes"] = entities["radish"]
entities["sownseed"] = entities["plantedradishseed"]
entities["youngplant"] = entities["youngradishplant"]
entities["plant"] = entities["radishplant"]
entities["seed"] = entities["radishseed"]
entities["eldritch_radish"] = lambda: Entity(sprite="food", name="eldritch radish", height=0.3, components={"item": Food(20), "serialize": Static("eldritch_radish")})

View File

@ -38,7 +38,7 @@ def main(argv=None):
sockets = []
for socktype, address in socketargs:
assert socktype in ["abstract", "unix", "inet"]
if address is "":
if address == "":
address = defaultAdresses[socktype]
if socktype == "abstract":
address = '\0' + address