Skip to content

Commit

Permalink
Merge pull request #152 from morrme/issue-142
Browse files Browse the repository at this point in the history
create setter for inventory_space
  • Loading branch information
arnauddupuis committed Feb 22, 2021
2 parents 87e3873 + 1301b7a commit 6c5fc44
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 18 deletions.
4 changes: 3 additions & 1 deletion docs/source/authors.rst
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Contributors
* Spassarop (`@spassarop`_)
* Javier Hernán Caballero García (`@caballerojavier13`_)
* Olle Lögdahl (`@ollelogdahl`_)
* MaryEtta Morris (`@morrme`_)

.. _`@arnauddupuis`: https://github.com/arnauddupuis
.. _`@kaozdl`: https://github.com/kaozdl
Expand All @@ -45,4 +46,5 @@ Contributors
.. _`@diego-caceres`: https://github.com/diego-caceres
.. _`@spassarop`: https://github.com/spassarop
.. _`@caballerojavier13`: https://github.com/caballerojavier13
.. _`@ollelogdahl`: https://github.com/ollelogdahl
.. _`@ollelogdahl`: https://github.com/ollelogdahl
.. _`@morrme`: https://github.com/morrme
14 changes: 12 additions & 2 deletions pygamelib/board_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -1066,15 +1066,25 @@ def can_move(self):
"""
return False

@property
def inventory_space(self):
"""Return the size of the Immovable Item for the
:class:`~pygamelib.engine.Inventory`.
"""Return the size that the Immovable item takes
in the :class:`~pygamelib.engine.Inventory`.
:return: The size of the item.
:rtype: int
"""
return self._inventory_space

@inventory_space.setter
def inventory_space(self, value):
if type(value) is int:
self._inventory_space = value
else:
raise base.PglInvalidTypeException(
"Immovable.inventory_space.(value): value needs to be an int."
)

def restorable(self):
"""
This is a virtual method that must be implemented in deriving class.
Expand Down
26 changes: 13 additions & 13 deletions pygamelib/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -2728,21 +2728,21 @@ def _obj2ref(obj):
ref["sprixel"] = obj.sprixel.serialize()

if isinstance(obj, board_items.Wall):
ref["inventory_space"] = obj.inventory_space()
ref["inventory_space"] = obj.inventory_space
elif isinstance(obj, board_items.Treasure):
ref["value"] = obj.value
ref["inventory_space"] = obj.inventory_space()
elif isinstance(obj, board_items.GenericActionableStructure) or isinstance(
obj, board_items.GenericStructure
):
ref["inventory_space"] = obj.inventory_space
elif isinstance(obj, board_items.Door):
ref["value"] = obj.value
ref["inventory_space"] = obj.inventory_space()
ref["inventory_space"] = obj.inventory_space
ref["overlappable"] = obj.overlappable()
ref["pickable"] = obj.pickable()
ref["restorable"] = obj.restorable()
elif isinstance(obj, board_items.Door):
elif isinstance(obj, board_items.GenericActionableStructure) or isinstance(
obj, board_items.GenericStructure
):
ref["value"] = obj.value
ref["inventory_space"] = obj.inventory_space()
ref["inventory_space"] = obj.inventory_space
ref["overlappable"] = obj.overlappable()
ref["pickable"] = obj.pickable()
ref["restorable"] = obj.restorable()
Expand Down Expand Up @@ -2959,10 +2959,10 @@ def __str__(self):
types = {}
for k in self.__items.keys():
if self.__items[k].type in types.keys():
types[self.__items[k].type]["size"] += self.__items[k].inventory_space()
types[self.__items[k].type]["size"] += self.__items[k].inventory_space
else:
types[self.__items[k].type] = {
"size": self.__items[k].inventory_space(),
"size": self.__items[k].inventory_space,
"model": self.__items[k].model,
}
for k in types.keys():
Expand Down Expand Up @@ -3011,7 +3011,7 @@ def add_item(self, item):
item.name = f"{item.name}_{uuid.uuid4().hex}"
if (
hasattr(item, "_inventory_space")
and self.max_size >= self.size() + item.inventory_space()
and self.max_size >= self.size() + item.inventory_space
):
self.__items[item.name] = item
else:
Expand All @@ -3022,7 +3022,7 @@ def add_item(self, item):
+ ", current inventory size: "
+ str(self.size())
+ " and item size: "
+ str(item.inventory_space()),
+ str(item.inventory_space),
)
else:
raise base.PglInventoryException(
Expand Down Expand Up @@ -3052,7 +3052,7 @@ def size(self):
val = 0
for k in self.__items.keys():
if hasattr(self.__items[k], "_inventory_space"):
val += self.__items[k].inventory_space()
val += self.__items[k].inventory_space
return val

def empty(self):
Expand Down
7 changes: 6 additions & 1 deletion tests/test_boardItem.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,13 @@ def _cb(p, o, params):
def test_immovable(self):
bi = board_items.Immovable(inventory_space=2)
self.assertFalse(bi.can_move())
self.assertEqual(bi.inventory_space(), 2)
self.assertEqual(bi.inventory_space, 2)
with self.assertRaises(NotImplementedError):
bi.restorable()
with self.assertRaises(board_items.base.PglInvalidTypeException):
bi.inventory_space = "2"
bi.inventory_space = 3
self.assertEqual(bi.inventory_space, 3)

def test_actionable(self):
bi = board_items.Actionable()
Expand Down Expand Up @@ -248,6 +252,7 @@ def test_door(self):
overlappable=False,
restorable=True,
)
self.assertEqual(bi.inventory_space, 5)
self.assertFalse(bi.pickable())
self.assertFalse(bi.overlappable())
self.assertTrue(bi.restorable())
Expand Down
3 changes: 2 additions & 1 deletion tests/test_engine_inventory.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ def setUp(self):
self.inv = engine.Inventory()

def test_add_item(self):
self.inv.add_item(Treasure(inventory_space=9, name=None, value=10))
self.inv.add_item(Treasure(inventory_space=9, name="test", value=10))
self.assertEqual(self.inv.value(), 10)
self.assertEqual(self.inv.get_item("test").inventory_space, 9)
with self.assertRaises(engine.base.PglInventoryException):
self.inv.add_item(Treasure(inventory_space=9, name=None))
with self.assertRaises(engine.base.PglInvalidTypeException):
Expand Down
7 changes: 7 additions & 0 deletions tests/test_game.py
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,13 @@ def test_tools_function(self):
self.assertEqual(g._string_to_constant("DRDOWN"), constants.DRDOWN)
self.assertEqual(g._string_to_constant("DLUP"), constants.DLUP)
self.assertEqual(g._string_to_constant("DLDOWN"), constants.DLDOWN)
test_wall = g._obj2ref(board_items.Wall(inventory_space=1))
self.assertEqual(test_wall["name"], "wall")
self.assertEqual(test_wall["inventory_space"], 1)
test_door = g._obj2ref(board_items.Door(value=10, inventory_space=1))
self.assertEqual(test_door["name"], "Door")
self.assertEqual(test_door["value"], 10)
self.assertEqual(test_door["inventory_space"], 1)

def test_singleton(self):
mygame = engine.Game.instance()
Expand Down

0 comments on commit 6c5fc44

Please sign in to comment.