X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Fitems.py;h=14bf61d05d37eb1a1012496a1c1595dd1e471a99;hb=8795602b8b39d5dce884310b11fc9b0a21263ddb;hp=9ef2ff61fbb51369f7aeb040a3018021be61f95f;hpb=15f8404d39a46ec6243f2e75a0c03ba4e6294800;p=koperkapel.git diff --git a/koperkapel/gamelib/items.py b/koperkapel/gamelib/items.py index 9ef2ff6..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 = tuple(item.pop("pos")) - actor = ITEM_TYPES[item_type](item) + 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)