summaryrefslogtreecommitdiff
path: root/asciifarm/client/display/screen.py
diff options
context:
space:
mode:
authorWango Fett <wangofett@tilde.town>2017-10-26 17:05:49 +0000
committerWango Fett <wangofett@tilde.town>2017-10-26 17:05:49 +0000
commit3a8afeb369d4ef66c9b991e64febe66a35338177 (patch)
tree460a2b88f6d5de2258ad17a319a4672afcde434d /asciifarm/client/display/screen.py
Pip installable!
Diffstat (limited to 'asciifarm/client/display/screen.py')
-rw-r--r--asciifarm/client/display/screen.py44
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
+