X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fgamelib%2Fitems.py;h=14bf61d05d37eb1a1012496a1c1595dd1e471a99;hb=a50936015a6c10bdacccee074e432fa0bdfbc831;hp=5aba919d8dda70285331beab999d84e70cbd62ea;hpb=fffaf24241b36462cd2ebaad646f3ebd20dbdf63;p=koperkapel.git diff --git a/koperkapel/gamelib/items.py b/koperkapel/gamelib/items.py index 5aba919..14bf61d 100644 --- a/koperkapel/gamelib/items.py +++ b/koperkapel/gamelib/items.py @@ -1,5 +1,56 @@ # Item utilities +from ..serums import default_serums +from ..weapons import default_weapons +from ..vehicles.base import Vehicle + + +def build_serum(item): + actor = default_serums.assemble(item["serum"]) + return actor + + +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): - return item + item_type = item.pop("type") + 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)