From 0bed6616326348b41c6a907552fff62956ce6f18 Mon Sep 17 00:00:00 2001 From: troido Date: Tue, 16 Jan 2018 13:10:16 +0100 Subject: tildename is only the default when connecting over UDS, otherwise username --- asciifarm/client/main.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/asciifarm/client/main.py b/asciifarm/client/main.py index 48e89ad..1a4ac51 100755 --- a/asciifarm/client/main.py +++ b/asciifarm/client/main.py @@ -32,7 +32,7 @@ def main(argv=None): Kill the goblins and plant the seeds. ~troido""", formatter_class=argparse.RawDescriptionHelpFormatter) - parser.add_argument('-n', '--name', help='Your player name (must be unique!). Defaults to username', default="~"+getpass.getuser()) + parser.add_argument('-n', '--name', help='Your player name (must be unique!). Defaults to username on inet sockets and tildename on (unix socket (including abstract)', default=None) parser.add_argument("-a", "--address", help="The address of the socket. When the socket type is 'abstract' this is just a name. When it is 'unix' this is a filename. When it is 'inet' is should be in the format 'address:port', eg 'localhost:8080'. Defaults depends on the socket type") parser.add_argument("-s", "--socket", help="the socket type. 'unix' is unix domain sockets, 'abstract' is abstract unix domain sockets and 'inet' is inet sockets. ", choices=["abstract", "unix", "inet"], default="abstract") parser.add_argument('-k', '--keybindings', help='The script with the keybindings. This file is a snippet of hy script.', default="keybindings") @@ -42,8 +42,10 @@ def main(argv=None): colourGroup = parser.add_mutually_exclusive_group() colourGroup.add_argument('-l', '--colours', '--colors', help='enable colours! :)', action="store_true") colourGroup.add_argument('-b', '--nocolours', '--nocolors', help='disable colours! :)', action="store_true") + args = parser.parse_args(argv) + charFile = args.characters if charFile in standardCharFiles: charFile = os.path.join(charMapPath, charFile + ".json") @@ -71,5 +73,13 @@ def main(argv=None): elif args.nocolours: colours = False - clientmain(args.name, args.socket, address, keybindings, charMap, colours, args.logfile) + name = args.name + if name is None: + username = getpass.getuser() + if args.socket == "unix" or args.socket == "abstract": + name = "~"+username + else: + name = username + + clientmain(name, args.socket, address, keybindings, charMap, colours, args.logfile) -- cgit 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/display.py | 34 +++++++-------- asciifarm/client/display/field.py | 72 ++++++++++++++++++++++++++++++++ asciifarm/client/display/fieldpad.py | 72 -------------------------------- asciifarm/client/display/health.py | 36 ++++++++++++++++ asciifarm/client/display/healthpad.py | 36 ---------------- asciifarm/client/display/info.py | 25 +++++++++++ asciifarm/client/display/infopad.py | 29 ------------- asciifarm/client/display/inventory.py | 60 ++++++++++++++++++++++++++ asciifarm/client/display/inventorypad.py | 50 ---------------------- asciifarm/client/display/messagepad.py | 58 ------------------------- asciifarm/client/display/messages.py | 58 +++++++++++++++++++++++++ asciifarm/client/display/screen.py | 1 - asciifarm/client/display/selector.py | 25 ----------- asciifarm/client/keymacros.hy | 6 --- asciifarm/keybindings/keybindings.hy | 6 +-- 15 files changed, 268 insertions(+), 300 deletions(-) create mode 100644 asciifarm/client/display/field.py delete mode 100644 asciifarm/client/display/fieldpad.py create mode 100644 asciifarm/client/display/health.py delete mode 100644 asciifarm/client/display/healthpad.py create mode 100644 asciifarm/client/display/info.py delete mode 100644 asciifarm/client/display/infopad.py create mode 100644 asciifarm/client/display/inventory.py delete mode 100644 asciifarm/client/display/inventorypad.py delete mode 100644 asciifarm/client/display/messagepad.py create mode 100644 asciifarm/client/display/messages.py delete mode 100644 asciifarm/client/display/selector.py diff --git a/asciifarm/client/display/display.py b/asciifarm/client/display/display.py index 8cf7d32..8056a14 100644 --- a/asciifarm/client/display/display.py +++ b/asciifarm/client/display/display.py @@ -1,13 +1,13 @@ import curses -from .fieldpad import FieldPad -from .infopad import InfoPad -from .healthpad import HealthPad -from .inventorypad import InventoryPad +from .field import Field +from .info import Info +from .health import Health +from .inventory import Inventory from .screen import Screen from .colours import Colours -from .messagepad import MessagePad +from .messages import Messages from .textinput import TextInput from .widget import Widget @@ -43,17 +43,17 @@ class Display: self.widgets = {} - self.addWidget(FieldPad((1, 1), charMap.get("charwidth", 1), self.colours), "field") - self.addWidget(InfoPad(), "info") - self.addWidget(HealthPad( + self.addWidget(Field((1, 1), charMap.get("charwidth", 1), self.colours), "field") + self.addWidget(Info(), "info") + self.addWidget(Health( charMap.get("healthfull", ("@",7, 2)), charMap.get("healthempty", ("-",7, 1)), self.colours), "health") - self.addWidget(InventoryPad("Inventory"), "inventory") - self.addWidget(InventoryPad("Ground"), "ground") - self.addWidget(InventoryPad("Equipment"), "equipment") - self.addWidget(MessagePad(), "msg") + self.addWidget(Inventory("Inventory"), "inventory") + self.addWidget(Inventory("Ground"), "ground") + self.addWidget(Inventory("Equipment"), "equipment") + self.addWidget(Messages(), "msg") self.addWidget(TextInput(), "textinput") self.lastinfostring = None @@ -61,10 +61,10 @@ class Display: self.forced = False self.update() - def addWidget(self, pad, name, winname=None): + def addWidget(self, w, name, winname=None): if not winname: winname = name - widget = Widget(pad) + widget = Widget(w) self.widgets[name] = widget widget.setWin(winname, self.screen) @@ -114,12 +114,6 @@ class Display: def setGround(self, items): self.getWidget("ground").setInventory(items) - - def getSelector(self, name): - widget = self.getWidget(name) - if not widget or not hasattr(widget, "getSelector"): - return None - return widget.getSelector() def addMessage(self, message): diff --git a/asciifarm/client/display/field.py b/asciifarm/client/display/field.py new file mode 100644 index 0000000..c38a82b --- /dev/null +++ b/asciifarm/client/display/field.py @@ -0,0 +1,72 @@ + +import curses + + +class Field: + + + def __init__(self, size=(1,1), charSize=1, colours=False): + self.pad = curses.newpad(size[1]+1, (size[0]+1)*charSize) + self.size = size + self.charSize = charSize + self.center = (0, 0) + self.colours = colours + self.changed = False + self.widget = None + + def setWidget(self, widget): + self.widget = widget + + def resize(self, width, height): + self.size = (width, height) + self.pad.resize(height+1, width*self.charSize) + self.widget.change() + win = self.widget.getWin() + if win: + win.erase() + win.noutrefresh() + + def changeCell(self, x, y, sprites): + """ sprites must always have at least one element """ + char, colour, bgcolour = sprites[0] + if bgcolour is None: + for (ch, co, bg) in sprites: + if bg is not None: + bgcolour = bg + break + else: + bgcolour = 0 + if colour is not None and self.colours: + self.pad.addstr(y, x*self.charSize, char, self.colours.get(colour, bgcolour)) + else: + self.pad.addstr(y, x*self.charSize, char) + self.widget.change() + + def setCenter(self, pos): + self.center = pos + self.widget.change() + + def getWidth(self): + return self.size[0]*self.charSize + + def getHeight(self): + return self.size[1] + + def _roundWidth(self, x): + return x // self.charSize * self.charSize + + def update(self): + win = self.widget.getWin() + width, height = win.getSize() + x, y = win.getPos() + xmax = x + width + ymax = y + height + self.pad.noutrefresh( + max(0, min(self.getHeight()-height, self.center[1] - int(height/2))), + max(0, min( + self._roundWidth(self.getWidth()-width), + self._roundWidth(self.center[0]*self.charSize - int(width/2)))), + y, + x + max(0, (width - self.getWidth()) // 2), + ymax, + xmax) diff --git a/asciifarm/client/display/fieldpad.py b/asciifarm/client/display/fieldpad.py deleted file mode 100644 index f64634e..0000000 --- a/asciifarm/client/display/fieldpad.py +++ /dev/null @@ -1,72 +0,0 @@ - -import curses - - -class FieldPad: - - - def __init__(self, size=(1,1), charSize=1, colours=False): - self.pad = curses.newpad(size[1]+1, (size[0]+1)*charSize) - self.size = size - self.charSize = charSize - self.center = (0, 0) - self.colours = colours - self.changed = False - self.widget = None - - def setWidget(self, widget): - self.widget = widget - - def resize(self, width, height): - self.size = (width, height) - self.pad.resize(height+1, width*self.charSize) - self.widget.change() - win = self.widget.getWin() - if win: - win.erase() - win.noutrefresh() - - def changeCell(self, x, y, sprites): - """ sprites must always have at least one element """ - char, colour, bgcolour = sprites[0] - if bgcolour is None: - for (ch, co, bg) in sprites: - if bg is not None: - bgcolour = bg - break - else: - bgcolour = 0 - if colour is not None and self.colours: - self.pad.addstr(y, x*self.charSize, char, self.colours.get(colour, bgcolour)) - else: - self.pad.addstr(y, x*self.charSize, char) - self.widget.change() - - def setCenter(self, pos): - self.center = pos - self.widget.change() - - def getWidth(self): - return self.size[0]*self.charSize - - def getHeight(self): - return self.size[1] - - def _roundWidth(self, x): - return x // self.charSize * self.charSize - - def update(self): - win = self.widget.getWin() - width, height = win.getSize() - x, y = win.getPos() - xmax = x + width - ymax = y + height - self.pad.noutrefresh( - max(0, min(self.getHeight()-height, self.center[1] - int(height/2))), - max(0, min( - self._roundWidth(self.getWidth()-width), - self._roundWidth(self.center[0]*self.charSize - int(width/2)))), - y, - x + max(0, (width - self.getWidth()) // 2), - ymax, - xmax) diff --git a/asciifarm/client/display/health.py b/asciifarm/client/display/health.py new file mode 100644 index 0000000..10d6594 --- /dev/null +++ b/asciifarm/client/display/health.py @@ -0,0 +1,36 @@ + +import curses + +class Health: + + def __init__(self, char=('@',7,0), emptyChar=('-',7,0), colours=False): + self.char = char + self.emptyChar = emptyChar + self.changed = False + self.colours = colours + self.health = 0 + self.maxHealth = 0 + self.widget = None + + def setWidget(self, widget): + self.widget = widget + + def setHealth(self, health, maxHealth): + self.health = health + self.maxHealth = maxHealth + self.widget.change() + + def update(self): + win = self.widget.getWin() + width, height = win.getSize() + width -= 1 + barEnd = round(self.health/self.maxHealth * width) if self.maxHealth > 0 else 0 + win.erase() + win.addLine((0,0),"Health: {}/{}".format(self.health, self.maxHealth)[:width]) + if self.colours: + win.addLine((0, 1), self.char[0]*barEnd, self.char[1:]) + win.addLine((barEnd, 1), self.emptyChar[0]*(width-barEnd), self.emptyChar[1:]) + else: + win.addLine((0, 1), self.char[0]*barEnd) + win.addLine((barEnd, 1), self.emptyChar[0]*(width-barEnd)) + win.noutrefresh() diff --git a/asciifarm/client/display/healthpad.py b/asciifarm/client/display/healthpad.py deleted file mode 100644 index 7b756a5..0000000 --- a/asciifarm/client/display/healthpad.py +++ /dev/null @@ -1,36 +0,0 @@ - -import curses - -class HealthPad: - - def __init__(self, char=('@',7,0), emptyChar=('-',7,0), colours=False): - self.char = char - self.emptyChar = emptyChar - self.changed = False - self.colours = colours - self.health = 0 - self.maxHealth = 0 - self.widget = None - - def setWidget(self, widget): - self.widget = widget - - def setHealth(self, health, maxHealth): - self.health = health - self.maxHealth = maxHealth - self.widget.change() - - def update(self): - win = self.widget.getWin() - width, height = win.getSize() - width -= 1 - barEnd = round(self.health/self.maxHealth * width) if self.maxHealth > 0 else 0 - win.erase() - win.addLine((0,0),"Health: {}/{}".format(self.health, self.maxHealth)[:width]) - if self.colours: - win.addLine((0, 1), self.char[0]*barEnd, self.char[1:]) - win.addLine((barEnd, 1), self.emptyChar[0]*(width-barEnd), self.emptyChar[1:]) - else: - win.addLine((0, 1), self.char[0]*barEnd) - win.addLine((barEnd, 1), self.emptyChar[0]*(width-barEnd)) - win.noutrefresh() diff --git a/asciifarm/client/display/info.py b/asciifarm/client/display/info.py new file mode 100644 index 0000000..da23ac1 --- /dev/null +++ b/asciifarm/client/display/info.py @@ -0,0 +1,25 @@ + +import curses + +class Info: + + def __init__(self): + self.changed = False + self.lines = [] + self.widget = None + + def setWidget(self, widget): + self.widget = widget + + def showString(self, string): + self.lines = string.split('\n') + self.widget.change() + + def update(self): + win = self.widget.getWin() + width, height = win.getSize() + lines = [line[:width-1] for line in self.lines][:height] + win.erase() + for i, line in enumerate(lines): + win.addLine((0, i), line) + win.noutrefresh() diff --git a/asciifarm/client/display/infopad.py b/asciifarm/client/display/infopad.py deleted file mode 100644 index 974e3fc..0000000 --- a/asciifarm/client/display/infopad.py +++ /dev/null @@ -1,29 +0,0 @@ - -import curses - - - -class InfoPad: - - - - def __init__(self): - self.changed = False - self.lines = [] - self.widget = None - - def setWidget(self, widget): - self.widget = widget - - def showString(self, string): - self.lines = string.split('\n') - self.widget.change() - - def update(self): - win = self.widget.getWin() - width, height = win.getSize() - lines = [line[:width-1] for line in self.lines][:height] - win.erase() - for i, line in enumerate(lines): - win.addLine((0, i), line) - win.noutrefresh() 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() diff --git a/asciifarm/client/display/inventorypad.py b/asciifarm/client/display/inventorypad.py deleted file mode 100644 index fd600e6..0000000 --- a/asciifarm/client/display/inventorypad.py +++ /dev/null @@ -1,50 +0,0 @@ - -import curses -from .selector import Selector - -class InventoryPad: - - def __init__(self, title): - self.title = title - self.selector = Selector(self) - self.widget = None - self.items = [] - - def setWidget(self, widget): - self.widget = widget - - def getSelector(self): - return self.selector - - def change(self): - 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.getValue() - 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() diff --git a/asciifarm/client/display/messagepad.py b/asciifarm/client/display/messagepad.py deleted file mode 100644 index 4992b15..0000000 --- a/asciifarm/client/display/messagepad.py +++ /dev/null @@ -1,58 +0,0 @@ - -import curses -import textwrap - -class MessagePad(): - - def __init__(self): - self.changed = False - self.messages = [] - self.widget = None - self.scrolledBack = 0 - - def setWidget(self, widget): - self.widget = widget - - def addMessage(self, message): - self.messages.append(message) - if self.scrolledBack: - self.scrolledBack += 1 - self.widget.change() - - def scroll(self, amount, relative=True): - if relative: - self.scrolledBack += amount - else: - self.scrolledBack = amount - self.scrolledBack = max(self.scrolledBack, 0) - self.widget.update() - self.widget.doUpdate() - - def update(self): - win = self.widget.getWin() - width, height = win.getSize() - if height < 1: - return - lines = [] - messages = self.messages - for message in messages: - lines += textwrap.wrap(message, width) - self.scrolledBack = max(min(self.scrolledBack, len(lines)-height), 0) - moreDown = False - if self.scrolledBack > 0: - lines = lines[:-self.scrolledBack] - moreDown = True - moreUp = False - if len(lines) > height: - moreUp = True - lines = lines[len(lines)-height:] - elif len(lines) < height: - lines = (height-len(lines)) * [""] + lines - win.erase() - for i, line in enumerate(lines): - win.addLine((0,i),line) - if moreUp: - win.addLine((width-1, 0), '-') - if moreDown: - win.addLine((width-1, height-1), '+') - win.noutrefresh() diff --git a/asciifarm/client/display/messages.py b/asciifarm/client/display/messages.py new file mode 100644 index 0000000..e72c831 --- /dev/null +++ b/asciifarm/client/display/messages.py @@ -0,0 +1,58 @@ + +import curses +import textwrap + +class Messages(): + + def __init__(self): + self.changed = False + self.messages = [] + self.widget = None + self.scrolledBack = 0 + + def setWidget(self, widget): + self.widget = widget + + def addMessage(self, message): + self.messages.append(message) + if self.scrolledBack: + self.scrolledBack += 1 + self.widget.change() + + def scroll(self, amount, relative=True): + if relative: + self.scrolledBack += amount + else: + self.scrolledBack = amount + self.scrolledBack = max(self.scrolledBack, 0) + self.widget.update() + self.widget.doUpdate() + + def update(self): + win = self.widget.getWin() + width, height = win.getSize() + if height < 1: + return + lines = [] + messages = self.messages + for message in messages: + lines += textwrap.wrap(message, width) + self.scrolledBack = max(min(self.scrolledBack, len(lines)-height), 0) + moreDown = False + if self.scrolledBack > 0: + lines = lines[:-self.scrolledBack] + moreDown = True + moreUp = False + if len(lines) > height: + moreUp = True + lines = lines[len(lines)-height:] + elif len(lines) < height: + lines = (height-len(lines)) * [""] + lines + win.erase() + for i, line in enumerate(lines): + win.addLine((0,i),line) + if moreUp: + win.addLine((width-1, 0), '-') + if moreDown: + win.addLine((width-1, height-1), '+') + win.noutrefresh() diff --git a/asciifarm/client/display/screen.py b/asciifarm/client/display/screen.py index dd80044..e806b2d 100644 --- a/asciifarm/client/display/screen.py +++ b/asciifarm/client/display/screen.py @@ -1,6 +1,5 @@ import curses -from .fieldpad import FieldPad from asciifarm.common.utils import clamp from .window import Window diff --git a/asciifarm/client/display/selector.py b/asciifarm/client/display/selector.py deleted file mode 100644 index 50e778b..0000000 --- a/asciifarm/client/display/selector.py +++ /dev/null @@ -1,25 +0,0 @@ - - -class Selector: - - - def __init__(self, inventory): - self.value = 0 - self.inventory = inventory - - def getValue(self): - return min(self.value, self.inventory.getNumItems()-1) - - def select(self, value, relative=False, modular=False): - invLen = self.inventory.getNumItems() - if relative: - value += self.value - if modular and invLen: - value %= invLen - if value < 0: - value = 0 - if value >= invLen: - value = invLen-1 - if value in range(invLen): - self.value = value - self.inventory.change() diff --git a/asciifarm/client/keymacros.hy b/asciifarm/client/keymacros.hy index 65e2993..2de89e4 100644 --- a/asciifarm/client/keymacros.hy +++ b/asciifarm/client/keymacros.hy @@ -21,11 +21,5 @@ (defmacro doall [actions] `(for [action ~actions] (action))) -(defmacro selector [name] - `(self.display.getSelector ~name)) - -(defmacro selectorvalue [name] - `(.getValue (selector ~name))) - (defmacro log [text] `(self.client.log ~text)) diff --git a/asciifarm/keybindings/keybindings.hy b/asciifarm/keybindings/keybindings.hy index 5813362..d64bc8c 100644 --- a/asciifarm/keybindings/keybindings.hy +++ b/asciifarm/keybindings/keybindings.hy @@ -21,9 +21,9 @@ r (do [ (inp ["interact" "south"]) (inp ["interact" "east"]) (inp ["interact" "west"])]) -c (.select (selector "inventory") 1 True True) -x (.select (selector "ground") 1 True True) -v (.select (selector "equipment") 1 True True) +c (.select (self.display.getWidget "inventory") 1 True True) +x (.select (self.display.getWidget "ground") 1 True True) +v (.select (self.display.getWidget "equipment") 1 True True) z (inp ["unequip" (selectorvalue "equipment")]) f (do [ (inp ["attack"]) -- 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 +++- asciifarm/keybindings/keybindings.hy | 8 ++++---- 2 files changed, 7 insertions(+), 5 deletions(-) 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): diff --git a/asciifarm/keybindings/keybindings.hy b/asciifarm/keybindings/keybindings.hy index d64bc8c..2919d1d 100644 --- a/asciifarm/keybindings/keybindings.hy +++ b/asciifarm/keybindings/keybindings.hy @@ -11,9 +11,9 @@ k (inp ["move" "north"]) j (inp ["move" "south"]) l (inp ["move" "east"]) h (inp ["move" "west"]) -e (inp ["take" (selectorvalue "ground")]) -q (inp ["drop" (selectorvalue "inventory")]) -E (inp ["use" (selectorvalue "inventory")]) +e (inp ["take" (.getSelected (self.display.getWidget "ground"))]) +q (inp ["drop" (.getSelected (self.display.getWidget "inventory"))]) +E (inp ["use" (.getSelected (self.display.getWidget "inventory"))]) R (inp ["interact"]) r (do [ (inp ["interact"]) @@ -24,7 +24,7 @@ r (do [ c (.select (self.display.getWidget "inventory") 1 True True) x (.select (self.display.getWidget "ground") 1 True True) v (.select (self.display.getWidget "equipment") 1 True True) -z (inp ["unequip" (selectorvalue "equipment")]) +z (inp ["unequip" (.getSelected (self.display.getWidget "equipment"))]) f (do [ (inp ["attack"]) (inp ["attack" "north"]) -- cgit