Inventory¶
This module contains the Inventory class.
-
class
gamelib.Inventory.
Inventory
(max_size=10)¶ A class that represent the Player (or NPC) inventory.
This class is pretty straightforward: it is an object container, you can add, get and remove items and you can get a value from the objects in the inventory.
The constructor takes only one parameter: the maximum size of the inventory. Each
BoardItem
that is going to be put in the inventory has a size (default is 1), the total addition of all these size cannot exceed max_size.Parameters: max_size (int) – The maximum size of the inventory. Deafult value: 10. Note
You can print() the inventory. This is mostly useful for debug as you want to have a better display in your game.
Warning
The
Game
engine andPlayer
takes care to initiate an inventory for the player, you don’t need to do it.-
add_item
(item)¶ Add an item to the inventory.
- This method will add an item to the inventory unless:
- it is not an instance of
BoardItem
, - you try to add an item that is not pickable,
- there is no more space left in the inventory (i.e: the cumulated size of the
- inventory + your item.size is greater than the inventory max_size)
- it is not an instance of
Parameters: item ( BoardItem
) – the item you want to addRaises: HacInventoryException, HacInvalidTypeException Example:
item = Treasure(model=Sprites.MONEY_BAG,size=2,name='Money bag') try: mygame.player.inventory.add_item(item) expect HacInventoryException as e: if e.error == 'not_enough_space': print(f"Impossible to add {item.name} to the inventory, there is no" "space left in it!") print(e.message) elif e.error == 'not_pickable': print(e.message)
Warning
if you try to add more than one item with the same name (or if the name is empty), this function will automatically change the name of the item by adding a UUID to it.
-
delete_item
(name)¶ Delete the item corresponding to the name given in argument.
Parameters: name (str) – the name of the item you want to delete. Note
in case an execpetion is raised, the error will be ‘no_item_by_that_name’ and the message is giving the specifics.
Example:
life_container = mygame.player.inventory.get_item('heart_1') if isinstance(life_container,GenericActionableStructure): life_container.action(life_container.action_parameters) mygame.player.inventory.delete_item('heart_1')
-
get_item
(name)¶ Return the item corresponding to the name given in argument.
Parameters: name (str) – the name of the item you want to get. Returns: An item. Return type: BoardItem
Raises: HacInventoryException Note
in case an execpetion is raised, the error will be ‘no_item_by_that_name’ and the message is giving the specifics.
Example:
life_container = mygame.player.inventory.get_item('heart_1') if isinstance(life_container,GenericActionableStructure): life_container.action(life_container.action_parameters)
Note
Please note that the item object reference is returned but nothing is changed in the inventory. The item hasn’t been removed.
-
items_name
()¶ Return the list of all items names in the inventory.
Returns: a list of string representing the items names. Return type: list
-
search
(query)¶ Search for objects in the inventory.
All objects that matches the query are going to be returned. :param query: the query that items in the inventory have to match to be returned :type name: str :returns: a table of BoardItems. :rtype: list
Example:
for item in game.player.inventory.search('mighty'): print(f"This is a mighty item: {item.name}")
-
size
()¶ Return the cumulated size of the inventory. It can be used in the UI to display the size compared to max_size for example.
Returns: size of inventory Return type: int Example:
print(f"Inventory: {mygame.player.inventory.size()}/" "{mygame.player.inventory.max_size}")
-
value
()¶ Return the cumulated value of the inventory. It can be used for scoring for example.
Returns: value of inventory Return type: int Example:
if inventory,value() >= 10: print('Victory!') break
-