diff options
| author | troido <troido@hotmail.com> | 2018-01-17 20:26:16 +0100 |
|---|---|---|
| committer | troido <troido@hotmail.com> | 2018-01-17 20:26:16 +0100 |
| commit | f72c658220a78ec058ceca25118e3e9a499a6c2b (patch) | |
| tree | 2a965a693d95f0ee651732ddc47b7e22bd188030 /asciifarm/client/display/inventory.py | |
| parent | 0bed6616326348b41c6a907552fff62956ce6f18 (diff) | |
updated maps and refactored client: renamed display parts and removed selector
Diffstat (limited to 'asciifarm/client/display/inventory.py')
| -rw-r--r-- | asciifarm/client/display/inventory.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/asciifarm/client/display/inventory.py b/asciifarm/client/display/inventory.py new file mode 100644 index 0000000..0db9037 --- /dev/null +++ b/asciifarm/client/display/inventory.py @@ -0,0 +1,60 @@ + +import curses + +class Inventory: + + def __init__(self, title): + self.title = title + self.widget = None + self.items = [] + self.selector = 0 + + def setWidget(self, widget): + self.widget = widget + + def getSelector(self): + return self.selector + + def select(self, value, relative=False, modular=False): + invLen = len(self.items) + if relative: + value += self.selector + if modular and invLen: + value %= invLen + if value < 0: + value = 0 + if value >= invLen: + value = invLen-1 + if value in range(invLen): + self.selector = value + self.widget.change() + + def setInventory(self, items): + self.items = items + self.widget.change() + + def setTitle(self, title): + self.title = title + + def getNumItems(self): + return len(self.items) + + def update(self): + win = self.widget.getWin() + width, height = win.getSize() + height -= 1 + selected = self.selector + start = min(selected - height//2, len(self.items)-height) + start = max(start, 0) + end = start + height + win.erase() + win.addLine((0,0), (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) + if end < len(self.items): + win.addLine((width-1, height), "+") + if start > 0: + win.addLine((width-1, 1), "-") + win.noutrefresh() |
