summaryrefslogtreecommitdiff
path: root/asciifarm/client/display
diff options
context:
space:
mode:
Diffstat (limited to 'asciifarm/client/display')
-rw-r--r--asciifarm/client/display/display.py9
-rw-r--r--asciifarm/client/display/inventory.py11
-rw-r--r--asciifarm/client/display/screen.py19
-rw-r--r--asciifarm/client/display/switcher.py8
-rw-r--r--asciifarm/client/display/widget.py7
5 files changed, 30 insertions, 24 deletions
diff --git a/asciifarm/client/display/display.py b/asciifarm/client/display/display.py
index 1d5f542..0660bb9 100644
--- a/asciifarm/client/display/display.py
+++ b/asciifarm/client/display/display.py
@@ -63,20 +63,19 @@ class Display:
self.addWidget(Inventory("Inventory"), "inventory")
self.addWidget(Inventory("Ground"), "ground")
self.addWidget(Inventory("Equipment"), "equipment")
- self.addWidget(Messages(), "msg")
- self.addWidget(TextInput(), "textinput")
- switcher = Switcher([self.widgets["ground"], self.widgets["inventory"]], 1)
+ switcher = Switcher([self.widgets["ground"], self.widgets["inventory"], self.widgets["equipment"]], 1)
self.addWidget(switcher, "switch")
+ self.addWidget(Messages(), "msg")
+ self.addWidget(TextInput(), "textinput")
self.forced = False
- self.update()
def addWidget(self, w, name, winname=None):
if not winname:
winname = name
- widget = Widget(w)
+ widget = Widget(w, name)
self.widgets[name] = widget
widget.setWin(winname, self.screen)
diff --git a/asciifarm/client/display/inventory.py b/asciifarm/client/display/inventory.py
index 4ad7719..9e62eff 100644
--- a/asciifarm/client/display/inventory.py
+++ b/asciifarm/client/display/inventory.py
@@ -5,8 +5,9 @@ from .widimp import WidImp
class Inventory(WidImp):
- def __init__(self, title):
+ def __init__(self, title, titlebar="{}:"):
self.title = title
+ self.titlebar = titlebar
self.items = []
self.selector = 0
@@ -47,7 +48,11 @@ class Inventory(WidImp):
def getNumItems(self):
return len(self.items)
+ def itemName(self, item):
+ return item
+
def update(self, win):
+
width, height = win.getSize()
height -= 1
selected = self.selector
@@ -55,11 +60,11 @@ class Inventory(WidImp):
start = max(start, 0)
end = start + height
win.erase()
- win.addLine((0,0), (self.title + ":")[:width])
+ win.addLine((0,0), (self.titlebar.format(self.title))[:width])
for i, item in enumerate(self.items[start:end]):
if i + start == selected:
win.addLine((0, i+1), '*')
- win.addLine((1, i+1), item)
+ win.addLine((1, i+1), self.itemName(item))
if end < len(self.items):
win.addLine((width-1, height), "+")
if start > 0:
diff --git a/asciifarm/client/display/screen.py b/asciifarm/client/display/screen.py
index 31b50c8..438e818 100644
--- a/asciifarm/client/display/screen.py
+++ b/asciifarm/client/display/screen.py
@@ -43,13 +43,11 @@ class Screen:
healthY = 0
healthH = self._limitHeight(2, healthY)
- groundY = healthY + healthH
- groundH = self._limitHeight(6, groundY)
- invY = groundY + groundH
- invH = self._limitHeight(9, invY)
- eqY = invY + invH
- eqH = self._limitHeight(5, eqY)
- infoY = eqY + eqH
+ 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)
self.windows = {
@@ -58,9 +56,10 @@ class Screen:
"textinput": self.makeWin(0, inputY, sideX - 1, inputH),
"health": self.makeWin(sideX, healthY, sideW, healthH),
- "ground": self.makeWin(sideX, groundY, sideW, invH),
- "inventory": self.makeWin(sideX, groundY, sideW, invH),
- "equipment": self.makeWin(sideX, eqY, sideW, eqH),
+ "switch": self.makeWin(sideX, indexY, sideW, indexH),
+ "ground": self.makeWin(sideX, listY, sideW, listH),
+ "inventory": self.makeWin(sideX, listY, sideW, listH),
+ "equipment": self.makeWin(sideX, listY, sideW, listH),
"info": self.makeWin(sideX, infoY, sideW, infoH)
}
diff --git a/asciifarm/client/display/switcher.py b/asciifarm/client/display/switcher.py
index 196aa88..b62e650 100644
--- a/asciifarm/client/display/switcher.py
+++ b/asciifarm/client/display/switcher.py
@@ -1,5 +1,5 @@
-from .widimp import WidImp
+
from .inventory import Inventory
class Switcher(Inventory):
@@ -8,7 +8,7 @@ class Switcher(Inventory):
"""
def __init__(self, widgets, initial=0):
- Inventory.__init__(self, " ")
+ Inventory.__init__(self, "", "")
self.setInventory(widgets)
for wid in widgets:
@@ -19,7 +19,11 @@ class Switcher(Inventory):
def doSelect(self, value):
self.getSelectedItem().hidden = True
self.selector = value
+ self.change()
newWid = self.getSelectedItem()
newWid.hidden = False
newWid.change()
+ def itemName(self, item):
+ return item.getImpl().title
+
diff --git a/asciifarm/client/display/widget.py b/asciifarm/client/display/widget.py
index 59bed62..31bb093 100644
--- a/asciifarm/client/display/widget.py
+++ b/asciifarm/client/display/widget.py
@@ -1,17 +1,16 @@
-
-
class Widget:
- def __init__(self, impl):
+ def __init__(self, impl, name=None):
self.impl = impl
- self.impl.setWidget(self)
self.win = None
self.screen = None
self.changed = False
self.hidden = False
+ self.name = name
+ self.impl.setWidget(self)
def setWin(self, win, screen):
self.win = win