summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortroido <troido@tilde.town>2018-01-24 13:27:41 +0000
committertroido <troido@tilde.town>2018-01-24 13:27:41 +0000
commitb15f89a3576b98f57ff1ec083e9299c890c1f7fc (patch)
tree3e2772610d8d1a91ff2b8ad17d2cd23ad687a8cd
parent50321b57b146944399671b6a8b56c6b769d5ddeb (diff)
parentb1ea1bff79c5e9edf6aedbe8f4183c7e4f92f1e8 (diff)
Merge branch 'master' of https://github.com/jmdejong/rooms
-rw-r--r--asciifarm/client/display/display.py34
-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.py1
-rw-r--r--asciifarm/client/display/selector.py25
-rw-r--r--asciifarm/client/keymacros.hy6
-rwxr-xr-xasciifarm/client/main.py14
-rw-r--r--asciifarm/keybindings/keybindings.hy14
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"])