From f72c658220a78ec058ceca25118e3e9a499a6c2b Mon Sep 17 00:00:00 2001 From: troido Date: Wed, 17 Jan 2018 20:26:16 +0100 Subject: updated maps and refactored client: renamed display parts and removed selector --- asciifarm/client/display/inventory.py | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 asciifarm/client/display/inventory.py (limited to 'asciifarm/client/display/inventory.py') 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() -- cgit From b1ea1bff79c5e9edf6aedbe8f4183c7e4f92f1e8 Mon Sep 17 00:00:00 2001 From: troido Date: Wed, 17 Jan 2018 21:26:52 +0100 Subject: fixed selectorvalue crash and selector disappearing when selected is removed --- asciifarm/client/display/inventory.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'asciifarm/client/display/inventory.py') diff --git a/asciifarm/client/display/inventory.py b/asciifarm/client/display/inventory.py index 0db9037..6481602 100644 --- a/asciifarm/client/display/inventory.py +++ b/asciifarm/client/display/inventory.py @@ -1,5 +1,6 @@ import curses +from asciifarm.common import utils class Inventory: @@ -12,7 +13,7 @@ class Inventory: def setWidget(self, widget): self.widget = widget - def getSelector(self): + def getSelected(self): return self.selector def select(self, value, relative=False, modular=False): @@ -31,6 +32,7 @@ class Inventory: def setInventory(self, items): self.items = items + self.selector = utils.clamp(self.selector, 0, len(items)-1) self.widget.change() def setTitle(self, title): -- cgit