summaryrefslogtreecommitdiff
path: root/asciifarm/client/display/screen.py
diff options
context:
space:
mode:
Diffstat (limited to 'asciifarm/client/display/screen.py')
-rw-r--r--asciifarm/client/display/screen.py95
1 files changed, 0 insertions, 95 deletions
diff --git a/asciifarm/client/display/screen.py b/asciifarm/client/display/screen.py
deleted file mode 100644
index 666d3bc..0000000
--- a/asciifarm/client/display/screen.py
+++ /dev/null
@@ -1,95 +0,0 @@
-
-import curses
-from asciifarm.common.utils import clamp
-from .window import Window
-
-import signal
-
-class Screen:
-
- def __init__(self, display, stdscr, colours):
- self.display = display
- try:
- curses.curs_set(0)
- self.cursorSet = False
- except curses.error:
- # Not all terminals support this functionality.
- # When the error is ignored the screen will look a little uglier,
- # A cursor will move around, but that's not terrible
- # So in order to keep the game as accesible as possible to everyone, it should be safe to ignore the error.
- self.cursorSet = True
- # It is probably possible to make sure the cursor is only in a corner of the screen
- # but I can't figure out how.
- # it seems to ignore all my move commands unless I press a key
- # I give up
- self.stdscr = stdscr
- self.colours = colours
- self.setWins()
- signal.signal(signal.SIGWINCH, self.updateSize)
-
- def _limitHeight(self, h, y):
- return min(h + y, self.height) - y
-
- def setWins(self):
- height, width = self.height, self.width = self.stdscr.getmaxyx()
-
- sideW = 20
- sideX = width-sideW
-
- msgH = clamp(height // 5, 3, 5)
- msgY = height - msgH-1
- inputH = 1
- inputY = msgY + msgH
-
- healthY = 0
- healthH = self._limitHeight(2, healthY)
- indexY = healthY + healthH
- indexH = self._limitHeight(4, indexY)
- listY = indexY + indexH + 1
- listH = self._limitHeight(12, listY)
- infoY = listY + listH
- infoH = self._limitHeight(20, infoY)
-
- lists = self.makeWin(sideX, listY, sideW, listH)
-
- self.windows = {
- "field": self.makeWin(0, 0, sideX - 1, msgY),
- "msg": self.makeWin(0, msgY, sideX - 1, msgH),
- "textinput": self.makeWin(0, inputY, sideX - 1, inputH),
-
- "health": self.makeWin(sideX, healthY, sideW, healthH),
- "switch": self.makeWin(sideX, indexY, sideW, indexH),
- "ground": lists,
- "inventory": lists,
- "equipment": lists,
- "info": self.makeWin(sideX, infoY, sideW, infoH)
- }
-
-
- def makeWin(self, x, y, width, height):
- if width < 1 or height < 1:
- win = None
- else:
- win = curses.newwin(height, width, y, x)
- return Window(win, self.colours)
-
- def getWin(self, name):
- return self.windows.get(name, None)
-
- def updateSize(self, *args):
- curses.endwin()
- curses.initscr()
- self.setWins()
- self.stdscr.clear()
- self.display.forceUpdate()
-
- def update(self):
- curses.doupdate()
-
- def getWidth(self):
- return self.width
-
- def getHeight(self):
- return self.height
-
-