|
|
@@ -262,11 +262,13 @@ class Chronometer(Text):
|
|
|
class Inventory:
|
|
|
def __init__(
|
|
|
self,
|
|
|
+ name: str,
|
|
|
background_color: tuple = settings.INVENTORY_DEFAULT_BACKGROUND_COLOR,
|
|
|
text_color: tuple = settings.INVENTORY_DEFAULT_TEXT_COLOR,
|
|
|
font: str = '',
|
|
|
size: int = 30,
|
|
|
):
|
|
|
+ self.name = name
|
|
|
self.background_color = background_color
|
|
|
self.text_color = text_color
|
|
|
self._items = {}
|
|
|
@@ -286,33 +288,51 @@ class Inventory:
|
|
|
else:
|
|
|
self._items.update({item: 1})
|
|
|
|
|
|
- def show(self, key: str = ''):
|
|
|
- if not isinstance(key, str):
|
|
|
- raise TypeError(_('Key pressed must be a string.'))
|
|
|
+ def show(self):
|
|
|
if not key or _get_keys()[utils.eval_key(key)]:
|
|
|
_globals.visible_inventory = self
|
|
|
|
|
|
- def hide(self, key: str = ''):
|
|
|
- if not isinstance(key, str):
|
|
|
- raise TypeError(_('Key pressed must be a string.'))
|
|
|
+ def hide(self):
|
|
|
if not key or _get_keys()[utils.eval_key(key)]:
|
|
|
_globals.visible_inventory = None
|
|
|
|
|
|
def draw(self):
|
|
|
shape = pygame.Surface(self.rect.size, pygame.SRCALPHA)
|
|
|
pygame.draw.rect(shape, self.background_color, self.rect)
|
|
|
+ pygame.draw.line(
|
|
|
+ shape,
|
|
|
+ self.text_color,
|
|
|
+ (
|
|
|
+ settings.INVENTORY_LEFT_MARGIN,
|
|
|
+ settings.INVENTORY_TOP_MARGIN + 30,
|
|
|
+ ),
|
|
|
+ (
|
|
|
+ settings.WINDOW_WIDTH - settings.INVENTORY_LEFT_MARGIN,
|
|
|
+ settings.INVENTORY_TOP_MARGIN + 30,
|
|
|
+ ),
|
|
|
+ )
|
|
|
_globals._window.blit(shape, self.rect)
|
|
|
+ _globals._window.blit(
|
|
|
+ self.font.render(
|
|
|
+ f"{_('INVENTORY')} [{self.name}]", 1, self.text_color
|
|
|
+ ),
|
|
|
+ (settings.INVENTORY_LEFT_MARGIN, settings.INVENTORY_TOP_MARGIN),
|
|
|
+ )
|
|
|
+
|
|
|
for pos, item in enumerate(self._items.keys()):
|
|
|
width = item.thumbnail.get_width()
|
|
|
height = item.thumbnail.get_height()
|
|
|
x = (
|
|
|
- settings.INVENTORY_MARGIN
|
|
|
+ settings.INVENTORY_LEFT_MARGIN
|
|
|
+ (pos // settings.INVENTORY_DEFAULT_ITEMS_BY_ROW)
|
|
|
* settings.CHARACTER_DEFAULT_THUMBNAIL_SIZE
|
|
|
* 4
|
|
|
)
|
|
|
- y = settings.INVENTORY_MARGIN + (pos % 7) * (
|
|
|
- height + settings.CHARACTER_DEFAULT_THUMBNAIL_SIZE // 2
|
|
|
+ y = (
|
|
|
+ settings.INVENTORY_TOP_MARGIN
|
|
|
+ + 50
|
|
|
+ + (pos % 7)
|
|
|
+ * (height + settings.CHARACTER_DEFAULT_THUMBNAIL_SIZE // 2)
|
|
|
)
|
|
|
_globals._window.blit(item.thumbnail, (x, y))
|
|
|
_globals._window.blit(
|