diff options
| author | troido <troido@tilde.town> | 2018-01-24 13:27:41 +0000 |
|---|---|---|
| committer | troido <troido@tilde.town> | 2018-01-24 13:27:41 +0000 |
| commit | b15f89a3576b98f57ff1ec083e9299c890c1f7fc (patch) | |
| tree | 3e2772610d8d1a91ff2b8ad17d2cd23ad687a8cd | |
| parent | 50321b57b146944399671b6a8b56c6b769d5ddeb (diff) | |
| parent | b1ea1bff79c5e9edf6aedbe8f4183c7e4f92f1e8 (diff) | |
Merge branch 'master' of https://github.com/jmdejong/rooms
| -rw-r--r-- | asciifarm/client/display/display.py | 34 | ||||
| -rw-r--r-- | asciifarm/client/display/field.py (renamed from asciifarm/client/display/fieldpad.py) | 2 | ||||
| -rw-r--r-- | asciifarm/client/display/health.py (renamed from asciifarm/client/display/healthpad.py) | 2 | ||||
| -rw-r--r-- | asciifarm/client/display/info.py (renamed from asciifarm/client/display/infopad.py) | 6 | ||||
| -rw-r--r-- | asciifarm/client/display/inventory.py (renamed from asciifarm/client/display/inventorypad.py) | 26 | ||||
| -rw-r--r-- | asciifarm/client/display/messages.py (renamed from asciifarm/client/display/messagepad.py) | 2 | ||||
| -rw-r--r-- | asciifarm/client/display/screen.py | 1 | ||||
| -rw-r--r-- | asciifarm/client/display/selector.py | 25 | ||||
| -rw-r--r-- | asciifarm/client/keymacros.hy | 6 | ||||
| -rwxr-xr-x | asciifarm/client/main.py | 14 | ||||
| -rw-r--r-- | asciifarm/keybindings/keybindings.hy | 14 |
11 files changed, 56 insertions, 76 deletions
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/fieldpad.py b/asciifarm/client/display/field.py index 758ecbf..2ebb1b0 100644 --- a/asciifarm/client/display/fieldpad.py +++ b/asciifarm/client/display/field.py @@ -2,7 +2,7 @@ import curses -class FieldPad: +class Field: def __init__(self, size=(1,1), charSize=1, colours=False): diff --git a/asciifarm/client/display/healthpad.py b/asciifarm/client/display/health.py index 7b756a5..10d6594 100644 --- a/asciifarm/client/display/healthpad.py +++ b/asciifarm/client/display/health.py @@ -1,7 +1,7 @@ import curses -class HealthPad: +class Health: def __init__(self, char=('@',7,0), emptyChar=('-',7,0), colours=False): self.char = char diff --git a/asciifarm/client/display/infopad.py b/asciifarm/client/display/info.py index 974e3fc..da23ac1 100644 --- a/asciifarm/client/display/infopad.py +++ b/asciifarm/client/display/info.py @@ -1,11 +1,7 @@ import curses - - -class InfoPad: - - +class Info: def __init__(self): self.changed = False diff --git a/asciifarm/client/display/inventorypad.py b/asciifarm/client/display/inventory.py index fd600e6..6481602 100644 --- a/asciifarm/client/display/inventorypad.py +++ b/asciifarm/client/display/inventory.py @@ -1,26 +1,38 @@ import curses -from .selector import Selector +from asciifarm.common import utils -class InventoryPad: +class Inventory: def __init__(self, title): self.title = title - self.selector = Selector(self) self.widget = None self.items = [] + self.selector = 0 def setWidget(self, widget): self.widget = widget - def getSelector(self): + def getSelected(self): return self.selector - def change(self): - self.widget.change() + 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.selector = utils.clamp(self.selector, 0, len(items)-1) self.widget.change() def setTitle(self, title): @@ -33,7 +45,7 @@ class InventoryPad: win = self.widget.getWin() width, height = win.getSize() height -= 1 - selected = self.selector.getValue() + selected = self.selector start = min(selected - height//2, len(self.items)-height) start = max(start, 0) end = start + height diff --git a/asciifarm/client/display/messagepad.py b/asciifarm/client/display/messages.py index 4992b15..e72c831 100644 --- a/asciifarm/client/display/messagepad.py +++ b/asciifarm/client/display/messages.py @@ -2,7 +2,7 @@ import curses import textwrap -class MessagePad(): +class Messages(): def __init__(self): self.changed = False 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/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) diff --git a/asciifarm/keybindings/keybindings.hy b/asciifarm/keybindings/keybindings.hy index 5813362..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"]) @@ -21,10 +21,10 @@ 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) -z (inp ["unequip" (selectorvalue "equipment")]) +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" (.getSelected (self.display.getWidget "equipment"))]) f (do [ (inp ["attack"]) (inp ["attack" "north"]) |
