Merge branch 'master' into 'familiars'
# Conflicts: # squirrelbattle/display/display_manager.py # squirrelbattle/display/logsdisplay.py # squirrelbattle/display/mapdisplay.py # squirrelbattle/display/menudisplay.py # squirrelbattle/menus.py
This commit is contained in:
@@ -34,6 +34,7 @@ class Game:
|
||||
"""
|
||||
self.state = GameMode.MAINMENU
|
||||
self.waiting_for_friendly_key = False
|
||||
self.is_in_store_menu = True
|
||||
self.settings = Settings()
|
||||
self.settings.load_settings()
|
||||
self.settings.write_settings()
|
||||
@@ -51,7 +52,7 @@ class Game:
|
||||
Creates a new game on the screen.
|
||||
"""
|
||||
# TODO generate a new map procedurally
|
||||
self.map = Map.load(ResourceManager.get_asset_path("example_map.txt"))
|
||||
self.map = Map.load(ResourceManager.get_asset_path("example_map_2.txt"))
|
||||
self.map.logs = self.logs
|
||||
self.logs.clear()
|
||||
self.player = Player()
|
||||
@@ -60,16 +61,18 @@ class Game:
|
||||
self.map.spawn_random_entities(randint(3, 10))
|
||||
self.inventory_menu.update_player(self.player)
|
||||
|
||||
def run(self, screen: Any) -> None:
|
||||
def run(self, screen: Any) -> None: # pragma no cover
|
||||
"""
|
||||
Main infinite loop.
|
||||
We wait for the player's action, then we do what should be done
|
||||
when a key gets pressed.
|
||||
"""
|
||||
while True: # pragma no cover
|
||||
screen.refresh()
|
||||
while True:
|
||||
screen.erase()
|
||||
screen.refresh()
|
||||
screen.noutrefresh()
|
||||
self.display_actions(DisplayActions.REFRESH)
|
||||
curses.doupdate()
|
||||
key = screen.getkey()
|
||||
if key == "KEY_MOUSE":
|
||||
_ignored1, x, y, _ignored2, _ignored3 = curses.getmouse()
|
||||
@@ -165,7 +168,9 @@ class Game:
|
||||
self.logs.add_message(msg)
|
||||
if entity.is_merchant():
|
||||
self.state = GameMode.STORE
|
||||
self.is_in_store_menu = True
|
||||
self.store_menu.update_merchant(entity)
|
||||
self.display_actions(DisplayActions.UPDATE)
|
||||
|
||||
def handle_key_pressed_inventory(self, key: KeyValues) -> None:
|
||||
"""
|
||||
@@ -194,22 +199,33 @@ class Game:
|
||||
"""
|
||||
In a store menu, we can buy items or close the menu.
|
||||
"""
|
||||
if key == KeyValues.SPACE:
|
||||
menu = self.store_menu if self.is_in_store_menu else self.inventory_menu
|
||||
|
||||
if key == KeyValues.SPACE or key == KeyValues.INVENTORY:
|
||||
self.state = GameMode.PLAY
|
||||
elif key == KeyValues.UP:
|
||||
self.store_menu.go_up()
|
||||
menu.go_up()
|
||||
elif key == KeyValues.DOWN:
|
||||
self.store_menu.go_down()
|
||||
if self.store_menu.values and not self.player.dead:
|
||||
menu.go_down()
|
||||
elif key == KeyValues.LEFT:
|
||||
self.is_in_store_menu = False
|
||||
self.display_actions(DisplayActions.UPDATE)
|
||||
elif key == KeyValues.RIGHT:
|
||||
self.is_in_store_menu = True
|
||||
self.display_actions(DisplayActions.UPDATE)
|
||||
if menu.values and not self.player.dead:
|
||||
if key == KeyValues.ENTER:
|
||||
item = self.store_menu.validate()
|
||||
flag = item.be_sold(self.player, self.store_menu.merchant)
|
||||
item = menu.validate()
|
||||
owner = self.store_menu.merchant if self.is_in_store_menu \
|
||||
else self.player
|
||||
buyer = self.player if self.is_in_store_menu \
|
||||
else self.store_menu.merchant
|
||||
flag = item.be_sold(buyer, owner)
|
||||
if not flag:
|
||||
self.message = _("You do not have enough money")
|
||||
self.display_actions(DisplayActions.UPDATE)
|
||||
self.message = _("The buyer does not have enough money")
|
||||
self.display_actions(DisplayActions.UPDATE)
|
||||
# Ensure that the cursor has a good position
|
||||
self.store_menu.position = min(self.store_menu.position,
|
||||
len(self.store_menu.values) - 1)
|
||||
menu.position = min(menu.position, len(menu.values) - 1)
|
||||
|
||||
def handle_key_pressed_main_menu(self, key: KeyValues) -> None:
|
||||
"""
|
||||
|
Reference in New Issue
Block a user