X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Fitems.py;h=14bf61d05d37eb1a1012496a1c1595dd1e471a99;hb=a50936015a6c10bdacccee074e432fa0bdfbc831;hp=b125d444b1362f547ad8797fc7944cc7c18c2400;hpb=76f34080ddc9feafd188c83c24eee5c71af59a10;p=koperkapel.git diff --git a/koperkapel/gamelib/items.py b/koperkapel/gamelib/items.py index b125d44..14bf61d 100644 --- a/koperkapel/gamelib/items.py +++ b/koperkapel/gamelib/items.py @@ -2,6 +2,7 @@ from ..serums import default_serums from ..weapons import default_weapons +from ..vehicles.base import Vehicle def build_serum(item): @@ -13,17 +14,43 @@ def build_weapon(item): actor = default_weapons.assemble(item["weapon"]) return actor +def build_vehicle(item): + actor = Vehicle.by_type(item["vehicle"]).get_avatar(dead=True) + return actor + -ITEM_TYPES = { +ITEM_BUILDERS = { "serum": build_serum, "weapon": build_weapon, + "vehicle": build_vehicle, } def get_item(item): item_type = item.pop("type") - game_pos = item.pop("pos") - actor = ITEM_TYPES[item_type](item) + game_pos = tuple(item.pop("pos")) + actor = ITEM_BUILDERS[item_type](item) + actor.item_type = item_type + actor.item_data = item actor.game_pos = game_pos actor.anchor = (0, 0) return actor + + +def clone_old_item(item, **new_data): + new_item = { + "type": item.item_type, + "pos": item.game_pos, + } + new_item.update(item.item_data) + new_item.update(new_data) + return get_item(new_item) + + +def create_new_item(item_type, pos, **kwd): + new_item = { + "type": item_type, + "pos": pos, + } + new_item.update(kwd) + return get_item(new_item)