1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
|