Merge branch 'village' into 'master'
Village Closes #41, #38, #37, #36, and #18 See merge request ynerant/squirrel-battle!44
This commit is contained in:
@ -7,7 +7,8 @@ import unittest
|
||||
from ..bootstrap import Bootstrap
|
||||
from ..display.display import Display
|
||||
from ..display.display_manager import DisplayManager
|
||||
from ..entities.items import Bomb
|
||||
from ..entities.friendly import Merchant, Sunflower
|
||||
from ..entities.items import Bomb, Heart, Sword
|
||||
from ..entities.player import Player
|
||||
from ..enums import DisplayActions
|
||||
from ..game import Game, KeyValues, GameMode
|
||||
@ -34,7 +35,17 @@ class TestGame(unittest.TestCase):
|
||||
"""
|
||||
bomb = Bomb()
|
||||
self.game.map.add_entity(bomb)
|
||||
sword = Sword()
|
||||
self.game.map.add_entity(sword)
|
||||
# Add items in the inventory to check that it is well loaded
|
||||
bomb.hold(self.game.player)
|
||||
sword.hold(self.game.player)
|
||||
|
||||
# Ensure that merchants can be saved
|
||||
merchant = Merchant()
|
||||
merchant.move(3, 6)
|
||||
self.game.map.add_entity(merchant)
|
||||
|
||||
old_state = self.game.save_state()
|
||||
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
@ -117,6 +128,9 @@ class TestGame(unittest.TestCase):
|
||||
self.assertEqual(KeyValues.translate_key(
|
||||
self.game.settings.KEY_INVENTORY, self.game.settings),
|
||||
KeyValues.INVENTORY)
|
||||
self.assertEqual(KeyValues.translate_key(
|
||||
self.game.settings.KEY_CHAT, self.game.settings),
|
||||
KeyValues.CHAT)
|
||||
self.assertEqual(KeyValues.translate_key(
|
||||
self.game.settings.KEY_USE, self.game.settings),
|
||||
KeyValues.USE)
|
||||
@ -280,7 +294,7 @@ class TestGame(unittest.TestCase):
|
||||
self.assertEqual(self.game.settings.KEY_LEFT_PRIMARY, 'a')
|
||||
|
||||
# Navigate to "texture pack"
|
||||
for ignored in range(9):
|
||||
for ignored in range(10):
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
|
||||
# Change texture pack
|
||||
@ -417,3 +431,115 @@ class TestGame(unittest.TestCase):
|
||||
self.assertTrue(bomb.exploding)
|
||||
self.assertEqual(bomb.y, self.game.player.y)
|
||||
self.assertEqual(bomb.x, self.game.player.x)
|
||||
|
||||
def test_talk_to_sunflowers(self) -> None:
|
||||
"""
|
||||
Interact with sunflowers
|
||||
"""
|
||||
self.game.state = GameMode.PLAY
|
||||
|
||||
sunflower = Sunflower()
|
||||
sunflower.move(2, 6)
|
||||
self.game.map.add_entity(sunflower)
|
||||
|
||||
# Does nothing
|
||||
self.assertIsNone(self.game.handle_friendly_entity_chat(KeyValues.UP))
|
||||
|
||||
# Talk to sunflower... or not
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.assertTrue(self.game.waiting_for_friendly_key)
|
||||
# Wrong key
|
||||
self.game.handle_key_pressed(KeyValues.EQUIP)
|
||||
self.assertFalse(self.game.waiting_for_friendly_key)
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.assertTrue(self.game.waiting_for_friendly_key)
|
||||
self.game.handle_key_pressed(KeyValues.UP)
|
||||
self.assertFalse(self.game.waiting_for_friendly_key)
|
||||
self.assertEqual(self.game.state, GameMode.PLAY)
|
||||
self.assertFalse(len(self.game.logs.messages) > 1)
|
||||
|
||||
# Talk to sunflower
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.assertTrue(self.game.waiting_for_friendly_key)
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
self.assertFalse(self.game.waiting_for_friendly_key)
|
||||
self.assertEqual(self.game.state, GameMode.PLAY)
|
||||
self.assertTrue(self.game.logs.messages)
|
||||
# Ensure that the message is a good message
|
||||
self.assertIn(self.game.logs.messages[1][21:],
|
||||
Sunflower.dialogue_option)
|
||||
|
||||
# Test all directions to detect the friendly entity
|
||||
self.game.player.move(3, 6)
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.game.handle_key_pressed(KeyValues.UP)
|
||||
self.assertEqual(len(self.game.logs.messages), 3)
|
||||
self.game.player.move(2, 7)
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.game.handle_key_pressed(KeyValues.LEFT)
|
||||
self.assertEqual(len(self.game.logs.messages), 4)
|
||||
self.game.player.move(2, 5)
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.game.handle_key_pressed(KeyValues.RIGHT)
|
||||
self.assertEqual(len(self.game.logs.messages), 5)
|
||||
|
||||
def test_talk_to_merchant(self) -> None:
|
||||
"""
|
||||
Interact with merchants
|
||||
"""
|
||||
self.game.state = GameMode.PLAY
|
||||
|
||||
merchant = Merchant()
|
||||
merchant.move(2, 6)
|
||||
self.game.map.add_entity(merchant)
|
||||
|
||||
# Does nothing
|
||||
self.assertIsNone(self.game.handle_friendly_entity_chat(KeyValues.UP))
|
||||
|
||||
# Talk to merchant
|
||||
self.game.handle_key_pressed(KeyValues.CHAT)
|
||||
self.assertTrue(self.game.waiting_for_friendly_key)
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
self.assertFalse(self.game.waiting_for_friendly_key)
|
||||
self.assertEqual(self.game.state, GameMode.STORE)
|
||||
self.assertTrue(self.game.logs.messages)
|
||||
|
||||
# Navigate in the menu
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
self.game.handle_key_pressed(KeyValues.DOWN)
|
||||
self.game.handle_key_pressed(KeyValues.UP)
|
||||
self.assertEqual(self.game.store_menu.position, 1)
|
||||
|
||||
# The second item is not a heart
|
||||
merchant.inventory[1] = Sword()
|
||||
# Buy the second item
|
||||
item = self.game.store_menu.validate()
|
||||
self.assertIn(item, merchant.inventory)
|
||||
self.game.handle_key_pressed(KeyValues.ENTER)
|
||||
self.assertIn(item, self.game.player.inventory)
|
||||
self.assertNotIn(item, merchant.inventory)
|
||||
|
||||
# Buy a heart
|
||||
merchant.inventory[1] = Heart()
|
||||
item = self.game.store_menu.validate()
|
||||
self.assertIn(item, merchant.inventory)
|
||||
self.assertEqual(item, merchant.inventory[1])
|
||||
self.game.player.health = self.game.player.maxhealth - 1 - item.healing
|
||||
self.game.handle_key_pressed(KeyValues.ENTER)
|
||||
self.assertNotIn(item, self.game.player.inventory)
|
||||
self.assertNotIn(item, merchant.inventory)
|
||||
self.assertEqual(self.game.player.health,
|
||||
self.game.player.maxhealth - 1)
|
||||
|
||||
# We don't have enough of money
|
||||
self.game.player.hazel = 0
|
||||
item = self.game.store_menu.validate()
|
||||
self.game.handle_key_pressed(KeyValues.ENTER)
|
||||
self.assertNotIn(item, self.game.player.inventory)
|
||||
self.assertIn(item, merchant.inventory)
|
||||
self.assertEqual(self.game.message, _("You do not have enough money"))
|
||||
self.game.handle_key_pressed(KeyValues.ENTER)
|
||||
|
||||
# Exit the menu
|
||||
self.game.handle_key_pressed(KeyValues.SPACE)
|
||||
self.assertEqual(self.game.state, GameMode.PLAY)
|
||||
|
@ -50,6 +50,8 @@ class TestTranslations(unittest.TestCase):
|
||||
"Touche pour équiper un objet de l'inventaire")
|
||||
self.assertEqual(_("Key used to drop an item in the inventory"),
|
||||
"Touche pour jeter un objet de l'inventaire")
|
||||
self.assertEqual(_("Key used to talk to a friendly entity"),
|
||||
"Touche pour parler à une entité pacifique")
|
||||
self.assertEqual(_("Texture pack"), "Pack de textures")
|
||||
self.assertEqual(_("Language"), "Langue")
|
||||
|
||||
@ -64,3 +66,4 @@ class TestTranslations(unittest.TestCase):
|
||||
self.assertEqual(_("body snatch potion"), "potion d'arrachage de corps")
|
||||
self.assertEqual(_("bomb"), "bombe")
|
||||
self.assertEqual(_("heart"), "cœur")
|
||||
self.assertEqual(_("sword"), "épée")
|
||||
|
Reference in New Issue
Block a user