Drop old weapon when picking up new one.
[koperkapel.git] / koperkapel / gamelib / items.py
1 # Item utilities
2
3 from ..serums import default_serums
4 from ..weapons import default_weapons
5
6
7 def build_serum(item):
8     actor = default_serums.assemble(item["serum"])
9     return actor
10
11
12 def build_weapon(item):
13     actor = default_weapons.assemble(item["weapon"])
14     return actor
15
16
17 ITEM_BUILDERS = {
18     "serum": build_serum,
19     "weapon": build_weapon,
20 }
21
22
23 def get_item(item):
24     item_type = item.pop("type")
25     game_pos = tuple(item.pop("pos"))
26     actor = ITEM_BUILDERS[item_type](item)
27     actor.item_type = item_type
28     actor.item_data = item
29     actor.game_pos = game_pos
30     actor.anchor = (0, 0)
31     return actor
32
33
34 def clone_old_item(item, **new_data):
35     new_item = {
36         "type": item.item_type,
37         "pos": item.game_pos,
38     }
39     new_item.update(item.item_data)
40     new_item.update(new_data)
41     return get_item(new_item)