Higher abstraction level on addmsg, fixes #43

This commit is contained in:
Yohann D'ANELLO
2020-12-12 13:46:45 +01:00
parent 48318a91fe
commit 04ae56e451
5 changed files with 97 additions and 33 deletions

View File

@ -2,6 +2,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
import curses
from random import randint
from typing import List
from squirrelbattle.menus import Menu, MainMenu
@ -30,9 +31,9 @@ class MenuDisplay(Display):
def update_pad(self) -> None:
for i in range(self.trueheight):
self.addstr(self.pad, i, 0, " " + self.values[i])
self.addstr(self.pad, i, 0, " " + self.values[i])
# set a marker on the selected line
self.addstr(self.pad, self.menu.position, 0, ">")
self.addstr(self.pad, self.menu.position, 0, " >")
def display(self) -> None:
cornery = 0 if self.height - 2 >= self.menu.position - 1 \
@ -43,7 +44,7 @@ class MenuDisplay(Display):
self.menubox.refresh(self.y, self.x, self.height, self.width)
self.pad.erase()
self.update_pad()
self.refresh_pad(self.pad, cornery, 0, self.y + 1, self.x + 2,
self.refresh_pad(self.pad, cornery, 0, self.y + 1, self.x + 1,
self.height - 2 + self.y,
self.width - 2 + self.x)
@ -102,8 +103,7 @@ class MainMenuDisplay(Display):
self.pad = self.newpad(max(self.rows, len(self.title) + 30),
max(len(self.title[0]) + 5, self.cols))
self.init_color(42, 1000, 1000, 1000)
self.init_pair(42, 42, curses.COLOR_BLACK)
self.fg_color = curses.COLOR_WHITE
self.menudisplay = MenuDisplay(self.screen, self.pack)
self.menudisplay.update_menu(self.menu)
@ -112,7 +112,7 @@ class MainMenuDisplay(Display):
for i in range(len(self.title)):
self.addstr(self.pad, 4 + i, max(self.width // 2
- len(self.title[0]) // 2 - 1, 0), self.title[i],
self.color_pair(42))
self.fg_color)
self.refresh_pad(self.pad, 0, 0, self.y, self.x,
self.height + self.y - 1,
self.width + self.x - 1)
@ -131,9 +131,7 @@ class MainMenuDisplay(Display):
self.menudisplay.handle_click(y - menuy, x - menux, game)
if y <= len(self.title):
from random import randint
self.init_color(42, randint(0, 1000), randint(0, 1000),
randint(0, 1000))
self.fg_color = randint(0, 1000), randint(0, 1000), randint(0, 1000)
class PlayerInventoryDisplay(MenuDisplay):
@ -141,7 +139,7 @@ class PlayerInventoryDisplay(MenuDisplay):
def update_pad(self) -> None:
self.addstr(self.pad, 0, (self.width - len(self.message)) // 2,
self.message, curses.A_BOLD | curses.A_ITALIC)
self.message, bold=True, italic=True)
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} "
@ -169,7 +167,7 @@ class StoreInventoryDisplay(MenuDisplay):
def update_pad(self) -> None:
self.addstr(self.pad, 0, (self.width - len(self.message)) // 2,
self.message, curses.A_BOLD | curses.A_ITALIC)
self.message, bold=True, italic=True)
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} "