Asciifarm/asciifarm/client/display/screen.py

45 lines
1.2 KiB
Python

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