Screen is resizable (but please be nice with it)

This commit is contained in:
Yohann D'ANELLO 2020-11-10 21:20:11 +01:00
parent d50c775e0f
commit e9ac448854
4 changed files with 8 additions and 7 deletions

View File

@ -10,6 +10,7 @@ class Display:
y: int y: int
width: int width: int
height: int height: int
pad: Any
def __init__(self, screen: Any, pack: Optional[TexturePack] = None): def __init__(self, screen: Any, pack: Optional[TexturePack] = None):
self.screen = screen self.screen = screen
@ -23,6 +24,8 @@ class Display:
self.y = y self.y = y
self.width = width self.width = width
self.height = height self.height = height
if self.pad:
self.pad.resize(height - 1, width - 1)
def refresh(self, *args) -> None: def refresh(self, *args) -> None:
if len(args) == 4: if len(args) == 4:

View File

@ -34,14 +34,13 @@ class DisplayManager:
self.rows // 5, self.cols) self.rows // 5, self.cols)
if self.game.state == GameMode.MAINMENU: if self.game.state == GameMode.MAINMENU:
self.mainmenudisplay.refresh(0, 0, self.rows, self.cols) self.mainmenudisplay.refresh(0, 0, self.rows, self.cols)
self.resize_window()
def ensure_resized(self, *pads) -> bool: def resize_window(self) -> bool:
""" """
If the window got resized, ensure that the pads are also resized. If the window got resized, ensure that the screen size got updated.
""" """
y, x = self.screen.getmaxyx() if self.screen else (0, 0) y, x = self.screen.getmaxyx() if self.screen else (0, 0)
for pad in pads:
pad.resize(y, x)
if self.screen and curses.is_term_resized(self.rows, self.cols): if self.screen and curses.is_term_resized(self.rows, self.cols):
curses.resizeterm(y, x) curses.resizeterm(y, x)
return True return True

View File

@ -44,8 +44,8 @@ class MenuDisplay(Display):
self.width + self.x) self.width + self.x)
self.update_pad() self.update_pad()
self.pad.refresh(cornery, 0, self.y + 1, self.x + 2, self.pad.refresh(cornery, 0, self.y + 1, self.x + 2,
self.height - 1 + self.y, self.height - 2 + self.y,
self.width - 1 + self.x) self.width - 2 + self.x)
@property @property
def preferred_width(self) -> int: def preferred_width(self) -> int:

View File

@ -69,7 +69,6 @@ class Game:
self.display_refresh() self.display_refresh()
key = screen.getkey() key = screen.getkey()
self.handle_key_pressed(self.translate_key(key)) self.handle_key_pressed(self.translate_key(key))
self.display_refresh()
def translate_key(self, key: str) -> KeyValues: def translate_key(self, key: str) -> KeyValues:
""" """