Drop old weapon when picking up new one.
[koperkapel.git] / koperkapel / gamelib / items.py
index b125d444b1362f547ad8797fc7944cc7c18c2400..b61125016bb58b9707751ae655e9d031df5c6943 100644 (file)
@@ -14,7 +14,7 @@ def build_weapon(item):
     return actor
 
 
-ITEM_TYPES = {
+ITEM_BUILDERS = {
     "serum": build_serum,
     "weapon": build_weapon,
 }
@@ -22,8 +22,20 @@ ITEM_TYPES = {
 
 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)