Higher abstraction level on addmsg, fixes #43
This commit is contained in:
@ -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} "
|
||||
|
Reference in New Issue
Block a user