diff options
| author | troido <troido@hotmail.com> | 2017-12-30 01:35:41 +0100 |
|---|---|---|
| committer | troido <troido@hotmail.com> | 2017-12-30 01:35:41 +0100 |
| commit | b63f38d654814d6be7a56ee7c8c6c6567755e0b4 (patch) | |
| tree | 8cc169590bccda80f1d3d246166f002d84cb5fba /asciifarm/client/display/display.py | |
| parent | 29149f398986620cf13ba1fc4d2d7cca139bead0 (diff) | |
tried a new approach to remove code duplication in display
Diffstat (limited to 'asciifarm/client/display/display.py')
| -rw-r--r-- | asciifarm/client/display/display.py | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/asciifarm/client/display/display.py b/asciifarm/client/display/display.py index a3ee602..79991af 100644 --- a/asciifarm/client/display/display.py +++ b/asciifarm/client/display/display.py @@ -9,6 +9,7 @@ from .screen import Screen from .colours import Colours from .messagepad import MessagePad from .textinput import TextInput +from .widget import Widget SIDEWIDTH = 20 @@ -26,8 +27,14 @@ class Display: self.defaultChar = charMap.get("default", "?") self.screen = Screen(self, stdscr) - def setwin(pad, winname): - pad.setWin(self.screen.getWin(winname)) + self.widgets = {} + + def setwin(pad, widgetName, winname=None): + if not winname: + winname = widgetName + widget = Widget(pad) + self.widgets[widgetName] = widget + widget.setWin(self.screen.getWin(winname)) self.fieldPad = FieldPad((1, 1), charMap.get("charwidth", 1), self.colours) setwin(self.fieldPad, "field") @@ -49,22 +56,15 @@ class Display: self.lastinfostring = None - - self.widgets = { - "field": self.fieldPad, - "info": self.infoPad, - "health": self.healthPad, - "inventory": self.inventoryPad, - "ground": self.groundPad, - "msg": self.messagePad, - "textinput": self.textInput - } #self.changed = False self.update() def getWidget(self, name): - return self.widgets.get(name, None) + if name in self.widgets: + return self.widgets[name].getImpl() + else: + return None def resizeField(self, size): self.fieldPad.resize(*size) @@ -125,15 +125,8 @@ class Display: def update(self, force=False): #if not self.changed and not force: #return - - self.fieldPad.update(force) - self.messagePad.update(force) - self.healthPad.update(force) - self.groundPad.update(force) - self.inventoryPad.update(force) - self.infoPad.update(force) - - self.textInput.update(force) + for widget in self.widgets.values(): + widget.update(force) self.screen.update() |
