diff options
| author | Wango Fett <wangofett@tilde.town> | 2017-10-26 17:05:49 +0000 |
|---|---|---|
| committer | Wango Fett <wangofett@tilde.town> | 2017-10-26 17:05:49 +0000 |
| commit | 3a8afeb369d4ef66c9b991e64febe66a35338177 (patch) | |
| tree | 460a2b88f6d5de2258ad17a319a4672afcde434d /asciifarm/client/display/screen.py | |
Pip installable!
Diffstat (limited to 'asciifarm/client/display/screen.py')
| -rw-r--r-- | asciifarm/client/display/screen.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/asciifarm/client/display/screen.py b/asciifarm/client/display/screen.py new file mode 100644 index 0000000..ec49d34 --- /dev/null +++ b/asciifarm/client/display/screen.py @@ -0,0 +1,44 @@ + +import curses +from .fieldpad import FieldPad + +import signal + +SIDEWIDTH = 20 +HEALTHHEIGHT = 1 + +class Screen: + + + def __init__(self, stdscr, maxSize=(float("inf"),float("inf")), charSize=1): + curses.curs_set(0) + self.stdscr = stdscr + self.height, self.width = self.stdscr.getmaxyx() + self.changed = False + signal.signal(signal.SIGWINCH, self.updateSize) + + def updateSize(self, *args): + curses.endwin() + curses.initscr() + self.height, self.width = self.stdscr.getmaxyx() + self.stdscr.clear() + self.change() + + def getWidth(self): + return self.width + + def getHeight(self): + return self.height + + def change(self): + self.changed = True + + def update(self, fieldPad, infoPad, healthPad): + if self.changed: + fieldEnd = min(fieldPad.getWidth(), self.getWidth()-SIDEWIDTH-1) + fieldPad.update(self, 0,0,fieldEnd, min(fieldPad.getHeight(), self.getHeight())) + healthPad.update(self, fieldEnd+1,0, self.getWidth(), HEALTHHEIGHT) + infoPad.update(self, fieldEnd+1,HEALTHHEIGHT, self.getWidth(), self.getHeight()) + curses.doupdate() + self.changed = False + |
