X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Fitems.py;h=14bf61d05d37eb1a1012496a1c1595dd1e471a99;hb=a50936015a6c10bdacccee074e432fa0bdfbc831;hp=837ccc61a58886f3ffa062b1e0870c669bc18592;hpb=0cc8d28563e4caeec279a0207ac160bb9fffb217;p=koperkapel.git diff --git a/koperkapel/gamelib/items.py b/koperkapel/gamelib/items.py index 837ccc6..14bf61d 100644 --- a/koperkapel/gamelib/items.py +++ b/koperkapel/gamelib/items.py @@ -1,6 +1,8 @@ # Item utilities from ..serums import default_serums +from ..weapons import default_weapons +from ..vehicles.base import Vehicle def build_serum(item): @@ -8,15 +10,47 @@ def build_serum(item): return actor -ITEM_TYPES = { +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_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)