Merge branch 'master' into 'mouse_interaction'
# Conflicts: # squirrelbattle/display/display_manager.py # squirrelbattle/display/menudisplay.py # squirrelbattle/entities/items.py
This commit is contained in:
@ -13,6 +13,9 @@ from ..translations import gettext as _
|
||||
|
||||
|
||||
class MenuDisplay(Display):
|
||||
"""
|
||||
A class to display the menu objects
|
||||
"""
|
||||
position: int
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
@ -73,6 +76,9 @@ class MenuDisplay(Display):
|
||||
|
||||
|
||||
class SettingsMenuDisplay(MenuDisplay):
|
||||
"""
|
||||
A class to display specifically a settingsmenu object
|
||||
"""
|
||||
@property
|
||||
def values(self) -> List[str]:
|
||||
return [_(a[1][1]) + (" : "
|
||||
@ -83,6 +89,9 @@ class SettingsMenuDisplay(MenuDisplay):
|
||||
|
||||
|
||||
class MainMenuDisplay(Display):
|
||||
"""
|
||||
A class to display specifically a mainmenu object
|
||||
"""
|
||||
def __init__(self, menu: MainMenu, *args):
|
||||
super().__init__(*args)
|
||||
self.menu = menu
|
||||
@ -118,11 +127,12 @@ class MainMenuDisplay(Display):
|
||||
self.menudisplay.handle_click(y - menuy, x - menux, game)
|
||||
|
||||
|
||||
class InventoryDisplay(MenuDisplay):
|
||||
class PlayerInventoryDisplay(MenuDisplay):
|
||||
message = _("== INVENTORY ==")
|
||||
|
||||
def update_pad(self) -> None:
|
||||
message = _("== INVENTORY ==")
|
||||
self.addstr(self.pad, 0, (self.width - len(message)) // 2, message,
|
||||
curses.A_BOLD | curses.A_ITALIC)
|
||||
self.addstr(self.pad, 0, (self.width - len(self.message)) // 2,
|
||||
self.message, curses.A_BOLD | curses.A_ITALIC)
|
||||
for i, item in enumerate(self.menu.values):
|
||||
rep = self.pack[item.name.upper()]
|
||||
selection = f"[{rep}]" if i == self.menu.position else f" {rep} "
|
||||
@ -143,3 +153,32 @@ class InventoryDisplay(MenuDisplay):
|
||||
"""
|
||||
self.menu.position = max(0, min(len(self.menu.values) - 1, y - 3))
|
||||
game.handle_key_pressed(KeyValues.ENTER)
|
||||
|
||||
|
||||
class StoreInventoryDisplay(MenuDisplay):
|
||||
message = _("== STALL ==")
|
||||
|
||||
def update_pad(self) -> None:
|
||||
self.addstr(self.pad, 0, (self.width - len(self.message)) // 2,
|
||||
self.message, curses.A_BOLD | curses.A_ITALIC)
|
||||
for i, item in enumerate(self.menu.values):
|
||||
rep = self.pack[item.name.upper()]
|
||||
selection = f"[{rep}]" if i == self.menu.position else f" {rep} "
|
||||
self.addstr(self.pad, 2 + i, 0, selection
|
||||
+ " " + item.translated_name.capitalize()
|
||||
+ ": " + str(item.price) + " Hazels")
|
||||
|
||||
@property
|
||||
def truewidth(self) -> int:
|
||||
return max(1, self.height if hasattr(self, "height") else 10)
|
||||
|
||||
@property
|
||||
def trueheight(self) -> int:
|
||||
return 2 + super().trueheight
|
||||
|
||||
def handle_click(self, y: int, x: int, game: Game) -> None:
|
||||
"""
|
||||
We can select a menu item with the mouse.
|
||||
"""
|
||||
self.menu.position = max(0, min(len(self.menu.values) - 1, y - 3))
|
||||
game.handle_key_pressed(KeyValues.ENTER)
|
||||
|
Reference in New Issue
Block a user