Merge branch 'equipment-in-inventory' into 'master'
Resolve "Display equipment in inventory" Closes #75 See merge request ynerant/squirrel-battle!71
This commit is contained in:
commit
96e9612d16
|
@ -176,7 +176,8 @@ class PlayerInventoryDisplay(MenuDisplay):
|
||||||
selection = f"[{rep}]" if i == self.menu.position \
|
selection = f"[{rep}]" if i == self.menu.position \
|
||||||
and self.selected else f" {rep} "
|
and self.selected else f" {rep} "
|
||||||
self.addstr(self.pad, i + 1, 0, selection
|
self.addstr(self.pad, i + 1, 0, selection
|
||||||
+ " " + item.translated_name.capitalize()
|
+ " " + ("[E]" if item.equipped else "")
|
||||||
|
+ item.translated_name.capitalize()
|
||||||
+ (f" ({item.description})" if item.description else "")
|
+ (f" ({item.description})" if item.description else "")
|
||||||
+ (": " + str(item.price) + " Hazels"
|
+ (": " + str(item.price) + " Hazels"
|
||||||
if self.store_mode else ""))
|
if self.store_mode else ""))
|
||||||
|
|
|
@ -12,16 +12,19 @@ class Item(Entity):
|
||||||
"""
|
"""
|
||||||
A class for items.
|
A class for items.
|
||||||
"""
|
"""
|
||||||
held: bool
|
|
||||||
held_by: Optional[InventoryHolder]
|
held_by: Optional[InventoryHolder]
|
||||||
price: int
|
price: int
|
||||||
|
|
||||||
def __init__(self, held: bool = False,
|
def __init__(self, equipped: bool = False,
|
||||||
held_by: Optional[InventoryHolder] = None,
|
held_by: Optional[InventoryHolder] = None,
|
||||||
|
hold_slot: str = "equipped_secondary",
|
||||||
price: int = 2, *args, **kwargs):
|
price: int = 2, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.held = held
|
|
||||||
self.held_by = held_by
|
self.held_by = held_by
|
||||||
|
self.equipped = equipped
|
||||||
|
self.hold_slot = hold_slot
|
||||||
|
if equipped:
|
||||||
|
self.equip()
|
||||||
self.price = price
|
self.price = price
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -35,11 +38,11 @@ class Item(Entity):
|
||||||
"""
|
"""
|
||||||
The item is dropped from the inventory onto the floor.
|
The item is dropped from the inventory onto the floor.
|
||||||
"""
|
"""
|
||||||
if self.held:
|
if self.held_by is not None:
|
||||||
|
self.unequip()
|
||||||
self.held_by.remove_from_inventory(self)
|
self.held_by.remove_from_inventory(self)
|
||||||
self.held_by.map.add_entity(self)
|
self.held_by.map.add_entity(self)
|
||||||
self.move(self.held_by.y, self.held_by.x)
|
self.move(self.held_by.y, self.held_by.x)
|
||||||
self.held = False
|
|
||||||
self.held_by = None
|
self.held_by = None
|
||||||
|
|
||||||
def use(self) -> None:
|
def use(self) -> None:
|
||||||
|
@ -52,28 +55,41 @@ class Item(Entity):
|
||||||
Indicates what should be done when the item is thrown.
|
Indicates what should be done when the item is thrown.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def on_equip(self) -> None:
|
||||||
|
"""
|
||||||
|
Indicates a special behaviour when equipping
|
||||||
|
"""
|
||||||
|
|
||||||
|
def on_unequip(self) -> None:
|
||||||
|
"""
|
||||||
|
Indicates a special behaviour when unequipping
|
||||||
|
"""
|
||||||
|
|
||||||
def equip(self) -> None:
|
def equip(self) -> None:
|
||||||
"""
|
"""
|
||||||
Indicates what should be done when the item is equipped.
|
Indicates what should be done when the item is equipped.
|
||||||
"""
|
"""
|
||||||
# Other objects are only equipped as secondary.
|
# Other objects are only equipped as secondary.
|
||||||
if self.held_by.equipped_secondary:
|
if not self.equipped:
|
||||||
self.held_by.equipped_secondary.unequip()
|
if getattr(self.held_by, self.hold_slot):
|
||||||
self.held_by.remove_from_inventory(self)
|
getattr(self.held_by, self.hold_slot).unequip()
|
||||||
self.held_by.equipped_secondary = self
|
self.equipped = True
|
||||||
|
setattr(self.held_by, self.hold_slot, self)
|
||||||
|
self.on_equip()
|
||||||
|
|
||||||
def unequip(self) -> None:
|
def unequip(self) -> None:
|
||||||
"""
|
"""
|
||||||
Indicates what should be done when the item is unequipped.
|
Indicates what should be done when the item is unequipped.
|
||||||
"""
|
"""
|
||||||
self.held_by.remove_from_inventory(self)
|
if self.equipped:
|
||||||
self.held_by.add_to_inventory(self)
|
setattr(self.held_by, self.hold_slot, None)
|
||||||
|
self.equipped = False
|
||||||
|
self.on_unequip()
|
||||||
|
|
||||||
def hold(self, holder: InventoryHolder) -> None:
|
def hold(self, holder: InventoryHolder) -> None:
|
||||||
"""
|
"""
|
||||||
The item is taken from the floor and put into the inventory.
|
The item is taken from the floor and put into the inventory.
|
||||||
"""
|
"""
|
||||||
self.held = True
|
|
||||||
self.held_by = holder
|
self.held_by = holder
|
||||||
self.held_by.map.remove_entity(self)
|
self.held_by.map.remove_entity(self)
|
||||||
holder.add_to_inventory(self)
|
holder.add_to_inventory(self)
|
||||||
|
@ -83,7 +99,7 @@ class Item(Entity):
|
||||||
Saves the state of the item into a dictionary.
|
Saves the state of the item into a dictionary.
|
||||||
"""
|
"""
|
||||||
d = super().save_state()
|
d = super().save_state()
|
||||||
d["held"] = self.held
|
d["equipped"] = self.equipped
|
||||||
return d
|
return d
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -103,10 +119,12 @@ class Item(Entity):
|
||||||
inventory.
|
inventory.
|
||||||
"""
|
"""
|
||||||
if for_free:
|
if for_free:
|
||||||
|
self.unequip() if self.equipped else None
|
||||||
self.hold(buyer)
|
self.hold(buyer)
|
||||||
seller.remove_from_inventory(self)
|
seller.remove_from_inventory(self)
|
||||||
return True
|
return True
|
||||||
elif buyer.hazel >= self.price:
|
elif buyer.hazel >= self.price:
|
||||||
|
self.unequip() if self.equipped else None
|
||||||
self.hold(buyer)
|
self.hold(buyer)
|
||||||
seller.remove_from_inventory(self)
|
seller.remove_from_inventory(self)
|
||||||
buyer.change_hazel_balance(-self.price)
|
buyer.change_hazel_balance(-self.price)
|
||||||
|
@ -169,7 +187,7 @@ class Bomb(Item):
|
||||||
"""
|
"""
|
||||||
When the bomb is used, it is thrown and then it explodes.
|
When the bomb is used, it is thrown and then it explodes.
|
||||||
"""
|
"""
|
||||||
if self.held:
|
if self.held_by is not None:
|
||||||
self.owner = self.held_by
|
self.owner = self.held_by
|
||||||
super().drop()
|
super().drop()
|
||||||
self.exploding = True
|
self.exploding = True
|
||||||
|
@ -236,7 +254,7 @@ class Weapon(Item):
|
||||||
damage: int
|
damage: int
|
||||||
|
|
||||||
def __init__(self, damage: int = 3, *args, **kwargs):
|
def __init__(self, damage: int = 3, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(hold_slot="equipped_main", *args, **kwargs)
|
||||||
self.damage = damage
|
self.damage = damage
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -251,20 +269,17 @@ class Weapon(Item):
|
||||||
d["damage"] = self.damage
|
d["damage"] = self.damage
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def equip(self) -> None:
|
def on_equip(self) -> None:
|
||||||
"""
|
"""
|
||||||
When a weapon is equipped, the player gains strength.
|
When a weapon is equipped, the player gains strength.
|
||||||
"""
|
"""
|
||||||
self.held_by.remove_from_inventory(self)
|
|
||||||
self.held_by.equipped_main = self
|
|
||||||
self.held_by.strength += self.damage
|
self.held_by.strength += self.damage
|
||||||
|
|
||||||
def unequip(self) -> None:
|
def on_unequip(self) -> None:
|
||||||
"""
|
"""
|
||||||
Remove the strength earned by the weapon.
|
Remove the strength earned by the weapon.
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
super().unequip()
|
|
||||||
self.held_by.strength -= self.damage
|
self.held_by.strength -= self.damage
|
||||||
|
|
||||||
|
|
||||||
|
@ -301,12 +316,10 @@ class Armor(Item):
|
||||||
return f"CON+{self.constitution}" if self.constitution \
|
return f"CON+{self.constitution}" if self.constitution \
|
||||||
else super().description
|
else super().description
|
||||||
|
|
||||||
def equip(self) -> None:
|
def on_equip(self) -> None:
|
||||||
super().equip()
|
|
||||||
self.held_by.constitution += self.constitution
|
self.held_by.constitution += self.constitution
|
||||||
|
|
||||||
def unequip(self) -> None:
|
def on_unequip(self) -> None:
|
||||||
super().unequip()
|
|
||||||
self.held_by.constitution -= self.constitution
|
self.held_by.constitution -= self.constitution
|
||||||
|
|
||||||
def save_state(self) -> dict:
|
def save_state(self) -> dict:
|
||||||
|
@ -332,13 +345,7 @@ class Helmet(Armor):
|
||||||
def __init__(self, name: str = "helmet", constitution: int = 2,
|
def __init__(self, name: str = "helmet", constitution: int = 2,
|
||||||
price: int = 18, *args, **kwargs):
|
price: int = 18, *args, **kwargs):
|
||||||
super().__init__(name=name, constitution=constitution, price=price,
|
super().__init__(name=name, constitution=constitution, price=price,
|
||||||
*args, **kwargs)
|
hold_slot="equipped_helmet", *args, **kwargs)
|
||||||
|
|
||||||
def equip(self) -> None:
|
|
||||||
if self.held_by.equipped_helmet:
|
|
||||||
self.held_by.equipped_helmet.unequip()
|
|
||||||
self.held_by.remove_from_inventory(self)
|
|
||||||
self.held_by.equipped_helmet = self
|
|
||||||
|
|
||||||
|
|
||||||
class Chestplate(Armor):
|
class Chestplate(Armor):
|
||||||
|
@ -348,13 +355,7 @@ class Chestplate(Armor):
|
||||||
def __init__(self, name: str = "chestplate", constitution: int = 4,
|
def __init__(self, name: str = "chestplate", constitution: int = 4,
|
||||||
price: int = 30, *args, **kwargs):
|
price: int = 30, *args, **kwargs):
|
||||||
super().__init__(name=name, constitution=constitution, price=price,
|
super().__init__(name=name, constitution=constitution, price=price,
|
||||||
*args, **kwargs)
|
hold_slot="equipped_armor", *args, **kwargs)
|
||||||
|
|
||||||
def equip(self) -> None:
|
|
||||||
if self.held_by.equipped_armor:
|
|
||||||
self.held_by.equipped_armor.unequip()
|
|
||||||
self.held_by.remove_from_inventory(self)
|
|
||||||
self.held_by.equipped_armor = self
|
|
||||||
|
|
||||||
|
|
||||||
class BodySnatchPotion(Item):
|
class BodySnatchPotion(Item):
|
||||||
|
@ -426,8 +427,7 @@ class Ring(Item):
|
||||||
("CRI", self.critical), ("XP", self.experience)]
|
("CRI", self.critical), ("XP", self.experience)]
|
||||||
return ", ".join(f"{key}+{value}" for key, value in fields if value)
|
return ", ".join(f"{key}+{value}" for key, value in fields if value)
|
||||||
|
|
||||||
def equip(self) -> None:
|
def on_equip(self) -> None:
|
||||||
super().equip()
|
|
||||||
self.held_by.maxhealth += self.maxhealth
|
self.held_by.maxhealth += self.maxhealth
|
||||||
self.held_by.strength += self.strength
|
self.held_by.strength += self.strength
|
||||||
self.held_by.intelligence += self.intelligence
|
self.held_by.intelligence += self.intelligence
|
||||||
|
@ -437,8 +437,7 @@ class Ring(Item):
|
||||||
self.held_by.critical += self.critical
|
self.held_by.critical += self.critical
|
||||||
self.held_by.xp_buff += self.experience
|
self.held_by.xp_buff += self.experience
|
||||||
|
|
||||||
def unequip(self) -> None:
|
def on_unequip(self) -> None:
|
||||||
super().unequip()
|
|
||||||
self.held_by.maxhealth -= self.maxhealth
|
self.held_by.maxhealth -= self.maxhealth
|
||||||
self.held_by.strength -= self.strength
|
self.held_by.strength -= self.strength
|
||||||
self.held_by.intelligence -= self.intelligence
|
self.held_by.intelligence -= self.intelligence
|
||||||
|
@ -557,13 +556,6 @@ class LongRangeWeapon(Weapon):
|
||||||
self.held_by.map.logs.add_message(line)
|
self.held_by.map.logs.add_message(line)
|
||||||
return (to_kill.y, to_kill.x) if to_kill else None
|
return (to_kill.y, to_kill.x) if to_kill else None
|
||||||
|
|
||||||
def equip(self) -> None:
|
|
||||||
"""
|
|
||||||
Equip the weapon.
|
|
||||||
"""
|
|
||||||
self.held_by.remove_from_inventory(self)
|
|
||||||
self.held_by.equipped_main = self
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def stat(self) -> str:
|
def stat(self) -> str:
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -120,21 +120,6 @@ class Player(InventoryHolder, FightingEntity):
|
||||||
self.current_xp += int(xp * self.xp_buff)
|
self.current_xp += int(xp * self.xp_buff)
|
||||||
self.level_up()
|
self.level_up()
|
||||||
|
|
||||||
def remove_from_inventory(self, obj: Item) -> None:
|
|
||||||
"""
|
|
||||||
Remove the given item from the inventory, even if the item is equipped.
|
|
||||||
"""
|
|
||||||
if obj == self.equipped_main:
|
|
||||||
self.equipped_main = None
|
|
||||||
elif obj == self.equipped_armor:
|
|
||||||
self.equipped_armor = None
|
|
||||||
elif obj == self.equipped_secondary:
|
|
||||||
self.equipped_secondary = None
|
|
||||||
elif obj == self.equipped_helmet:
|
|
||||||
self.equipped_helmet = None
|
|
||||||
else:
|
|
||||||
return super().remove_from_inventory(obj)
|
|
||||||
|
|
||||||
# noinspection PyTypeChecker,PyUnresolvedReferences
|
# noinspection PyTypeChecker,PyUnresolvedReferences
|
||||||
def check_move(self, y: int, x: int, move_if_possible: bool = False) \
|
def check_move(self, y: int, x: int, move_if_possible: bool = False) \
|
||||||
-> bool:
|
-> bool:
|
||||||
|
|
|
@ -309,7 +309,8 @@ class Game:
|
||||||
if key == KeyValues.USE:
|
if key == KeyValues.USE:
|
||||||
self.inventory_menu.validate().use()
|
self.inventory_menu.validate().use()
|
||||||
elif key == KeyValues.EQUIP:
|
elif key == KeyValues.EQUIP:
|
||||||
self.inventory_menu.validate().equip()
|
item = self.inventory_menu.validate()
|
||||||
|
item.unequip() if item.equipped else item.equip()
|
||||||
elif key == KeyValues.DROP:
|
elif key == KeyValues.DROP:
|
||||||
self.inventory_menu.validate().drop()
|
self.inventory_menu.validate().drop()
|
||||||
|
|
||||||
|
|
|
@ -839,6 +839,7 @@ class InventoryHolder(Entity):
|
||||||
for i in range(len(inventory)):
|
for i in range(len(inventory)):
|
||||||
if isinstance(inventory[i], dict):
|
if isinstance(inventory[i], dict):
|
||||||
inventory[i] = self.dict_to_item(inventory[i])
|
inventory[i] = self.dict_to_item(inventory[i])
|
||||||
|
inventory[i].held_by = self
|
||||||
return inventory
|
return inventory
|
||||||
|
|
||||||
def dict_to_item(self, item_dict: dict) -> Entity:
|
def dict_to_item(self, item_dict: dict) -> Entity:
|
||||||
|
|
|
@ -155,9 +155,9 @@ class TestEntities(unittest.TestCase):
|
||||||
"""
|
"""
|
||||||
item = Item()
|
item = Item()
|
||||||
self.map.add_entity(item)
|
self.map.add_entity(item)
|
||||||
self.assertFalse(item.held)
|
self.assertIsNone(item.held_by)
|
||||||
item.hold(self.player)
|
item.hold(self.player)
|
||||||
self.assertTrue(item.held)
|
self.assertEqual(item.held_by, self.player)
|
||||||
item.drop()
|
item.drop()
|
||||||
self.assertEqual(item.y, 1)
|
self.assertEqual(item.y, 1)
|
||||||
self.assertEqual(item.x, 6)
|
self.assertEqual(item.x, 6)
|
||||||
|
@ -165,7 +165,6 @@ class TestEntities(unittest.TestCase):
|
||||||
# Pick up item
|
# Pick up item
|
||||||
self.player.move_left()
|
self.player.move_left()
|
||||||
self.player.move_right()
|
self.player.move_right()
|
||||||
self.assertTrue(item.held)
|
|
||||||
self.assertEqual(item.held_by, self.player)
|
self.assertEqual(item.held_by, self.player)
|
||||||
self.assertIn(item, self.player.inventory)
|
self.assertIn(item, self.player.inventory)
|
||||||
self.assertNotIn(item, self.map.entities)
|
self.assertNotIn(item, self.map.entities)
|
||||||
|
@ -208,7 +207,7 @@ class TestEntities(unittest.TestCase):
|
||||||
# The player can't hold the explosion
|
# The player can't hold the explosion
|
||||||
explosion.hold(self.player)
|
explosion.hold(self.player)
|
||||||
self.assertNotIn(explosion, self.player.inventory)
|
self.assertNotIn(explosion, self.player.inventory)
|
||||||
self.assertFalse(explosion.held)
|
self.assertIsNone(explosion.held_by)
|
||||||
|
|
||||||
# The explosion disappears after one tick
|
# The explosion disappears after one tick
|
||||||
explosion.act(self.map)
|
explosion.act(self.map)
|
||||||
|
|
|
@ -49,6 +49,7 @@ class TestGame(unittest.TestCase):
|
||||||
# Add items in the inventory to check that it is well loaded
|
# Add items in the inventory to check that it is well loaded
|
||||||
bomb.hold(self.game.player)
|
bomb.hold(self.game.player)
|
||||||
sword.hold(self.game.player)
|
sword.hold(self.game.player)
|
||||||
|
sword.equip()
|
||||||
|
|
||||||
# Ensure that merchants can be saved
|
# Ensure that merchants can be saved
|
||||||
merchant = Merchant()
|
merchant = Merchant()
|
||||||
|
@ -491,10 +492,8 @@ class TestGame(unittest.TestCase):
|
||||||
# Drop an item
|
# Drop an item
|
||||||
bomb = self.game.player.inventory[-1]
|
bomb = self.game.player.inventory[-1]
|
||||||
self.assertEqual(self.game.inventory_menu.validate(), bomb)
|
self.assertEqual(self.game.inventory_menu.validate(), bomb)
|
||||||
self.assertTrue(bomb.held)
|
|
||||||
self.assertEqual(bomb.held_by, self.game.player)
|
self.assertEqual(bomb.held_by, self.game.player)
|
||||||
self.game.handle_key_pressed(KeyValues.DROP)
|
self.game.handle_key_pressed(KeyValues.DROP)
|
||||||
self.assertFalse(bomb.held)
|
|
||||||
self.assertIsNone(bomb.held_by)
|
self.assertIsNone(bomb.held_by)
|
||||||
self.assertIsNone(bomb.owner)
|
self.assertIsNone(bomb.owner)
|
||||||
self.assertFalse(bomb.exploding)
|
self.assertFalse(bomb.exploding)
|
||||||
|
@ -504,10 +503,8 @@ class TestGame(unittest.TestCase):
|
||||||
# Use the bomb
|
# Use the bomb
|
||||||
bomb = self.game.player.inventory[-1]
|
bomb = self.game.player.inventory[-1]
|
||||||
self.assertEqual(self.game.inventory_menu.validate(), bomb)
|
self.assertEqual(self.game.inventory_menu.validate(), bomb)
|
||||||
self.assertTrue(bomb.held)
|
|
||||||
self.assertEqual(bomb.held_by, self.game.player)
|
self.assertEqual(bomb.held_by, self.game.player)
|
||||||
self.game.handle_key_pressed(KeyValues.USE)
|
self.game.handle_key_pressed(KeyValues.USE)
|
||||||
self.assertFalse(bomb.held)
|
|
||||||
self.assertIsNone(bomb.held_by)
|
self.assertIsNone(bomb.held_by)
|
||||||
self.assertEqual(bomb.owner, self.game.player)
|
self.assertEqual(bomb.owner, self.game.player)
|
||||||
self.assertTrue(bomb.exploding)
|
self.assertTrue(bomb.exploding)
|
||||||
|
@ -660,42 +657,37 @@ class TestGame(unittest.TestCase):
|
||||||
sword.hold(self.game.player)
|
sword.hold(self.game.player)
|
||||||
self.game.handle_key_pressed(KeyValues.EQUIP)
|
self.game.handle_key_pressed(KeyValues.EQUIP)
|
||||||
self.assertEqual(self.game.player.equipped_main, sword)
|
self.assertEqual(self.game.player.equipped_main, sword)
|
||||||
self.assertFalse(self.game.player.inventory)
|
|
||||||
|
|
||||||
# shield goes into the secondary equipment slot
|
# shield goes into the secondary equipment slot
|
||||||
shield = Shield()
|
shield = Shield()
|
||||||
shield.hold(self.game.player)
|
shield.hold(self.game.player)
|
||||||
self.game.handle_key_pressed(KeyValues.EQUIP)
|
shield.equip()
|
||||||
self.assertEqual(self.game.player.equipped_secondary, shield)
|
self.assertEqual(self.game.player.equipped_secondary, shield)
|
||||||
self.assertFalse(self.game.player.inventory)
|
|
||||||
|
|
||||||
# helmet goes into the helmet slot
|
# helmet goes into the helmet slot
|
||||||
helmet = Helmet()
|
helmet = Helmet()
|
||||||
helmet.hold(self.game.player)
|
helmet.hold(self.game.player)
|
||||||
self.game.handle_key_pressed(KeyValues.EQUIP)
|
helmet.equip()
|
||||||
self.assertEqual(self.game.player.equipped_helmet, helmet)
|
self.assertEqual(self.game.player.equipped_helmet, helmet)
|
||||||
self.assertFalse(self.game.player.inventory)
|
|
||||||
|
|
||||||
# helmet goes into the armor slot
|
# helmet goes into the armor slot
|
||||||
chestplate = Chestplate()
|
chestplate = Chestplate()
|
||||||
chestplate.hold(self.game.player)
|
chestplate.hold(self.game.player)
|
||||||
self.game.handle_key_pressed(KeyValues.EQUIP)
|
chestplate.equip()
|
||||||
self.assertEqual(self.game.player.equipped_armor, chestplate)
|
self.assertEqual(self.game.player.equipped_armor, chestplate)
|
||||||
self.assertFalse(self.game.player.inventory)
|
|
||||||
|
|
||||||
# Use bomb
|
# Use bomb
|
||||||
bomb = Bomb()
|
bomb = Bomb()
|
||||||
bomb.hold(self.game.player)
|
bomb.hold(self.game.player)
|
||||||
self.game.handle_key_pressed(KeyValues.EQUIP)
|
bomb.equip()
|
||||||
self.assertEqual(self.game.player.equipped_secondary, bomb)
|
self.assertEqual(self.game.player.equipped_secondary, bomb)
|
||||||
self.assertIn(shield, self.game.player.inventory)
|
self.assertFalse(shield.equipped)
|
||||||
self.game.state = GameMode.PLAY
|
self.game.state = GameMode.PLAY
|
||||||
self.game.handle_key_pressed(KeyValues.USE)
|
self.game.handle_key_pressed(KeyValues.USE)
|
||||||
self.assertIsNone(self.game.player.equipped_secondary)
|
self.assertIsNone(self.game.player.equipped_secondary)
|
||||||
self.game.state = GameMode.INVENTORY
|
self.game.state = GameMode.INVENTORY
|
||||||
self.game.handle_key_pressed(KeyValues.EQUIP)
|
shield.equip()
|
||||||
self.assertEqual(self.game.player.equipped_secondary, shield)
|
self.assertEqual(self.game.player.equipped_secondary, shield)
|
||||||
self.assertFalse(self.game.player.inventory)
|
|
||||||
|
|
||||||
# Reequip, which is useless but covers code
|
# Reequip, which is useless but covers code
|
||||||
sword.equip()
|
sword.equip()
|
||||||
|
@ -717,6 +709,7 @@ class TestGame(unittest.TestCase):
|
||||||
self.assertIn(shield, self.game.player.inventory)
|
self.assertIn(shield, self.game.player.inventory)
|
||||||
self.assertIn(helmet, self.game.player.inventory)
|
self.assertIn(helmet, self.game.player.inventory)
|
||||||
self.assertIn(chestplate, self.game.player.inventory)
|
self.assertIn(chestplate, self.game.player.inventory)
|
||||||
|
self.game.display_actions(DisplayActions.REFRESH)
|
||||||
|
|
||||||
# Test rings
|
# Test rings
|
||||||
self.game.player.inventory.clear()
|
self.game.player.inventory.clear()
|
||||||
|
|
Loading…
Reference in New Issue