summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortroido <troido@hotmail.com>2017-12-29 22:40:24 +0100
committertroido <troido@hotmail.com>2017-12-29 22:40:24 +0100
commit29149f398986620cf13ba1fc4d2d7cca139bead0 (patch)
treed8f7915bdf656599319ab5dd63d3873b9f8c59a3
parenta1c60cfcb63b013f575943e17854cf205f8db913 (diff)
keybinding macros have their own file and selectors can now be used!
-rw-r--r--asciifarm/client/display/display.py24
-rw-r--r--asciifarm/client/display/selector.py13
-rw-r--r--asciifarm/client/keybindings.hy47
-rw-r--r--asciifarm/client/keymacros.hy15
4 files changed, 51 insertions, 48 deletions
diff --git a/asciifarm/client/display/display.py b/asciifarm/client/display/display.py
index 4a74711..a3ee602 100644
--- a/asciifarm/client/display/display.py
+++ b/asciifarm/client/display/display.py
@@ -59,7 +59,7 @@ class Display:
"msg": self.messagePad,
"textinput": self.textInput
}
- self.changed = False
+ #self.changed = False
self.update()
@@ -74,28 +74,28 @@ class Display:
(x, y), spriteName = cell
sprite = self.getChar(spriteName)
self.fieldPad.changeCell(x, y, *sprite)
- self.change()
+ #self.change()
def setFieldCenter(self, pos):
self.fieldPad.setCenter(pos)
def setHealth(self, health, maxHealth):
self.healthPad.setHealth(health, maxHealth)
- self.change()
+ #self.change()
def showInfo(self, infostring):
if infostring != self.lastinfostring:
self.infoPad.showString(infostring)
- self.change()
+ #self.change()
self.lastinfostring = infostring
def setInventory(self, items):
self.inventoryPad.setInventory(items)
- self.change()
+ #self.change()
def setGround(self, items):
self.groundPad.setInventory(items)
- self.change()
+ #self.change()
def getSelector(self, name):
widget = self.getWidget(name)
@@ -106,7 +106,7 @@ class Display:
def addMessage(self, message):
self.messagePad.addMessage(message)
- self.change()
+ #self.change()
def getChar(self, sprite):
"""This returns the character belonging to some spritename. This does not read a character"""
@@ -119,12 +119,12 @@ class Display:
"""This does actually read input"""
return self.textInput.getString()
- def change(self):
- self.changed = True
+ #def change(self):
+ #self.changed = True
def update(self, force=False):
- if not self.changed and not force:
- return
+ #if not self.changed and not force:
+ #return
self.fieldPad.update(force)
self.messagePad.update(force)
@@ -137,5 +137,5 @@ class Display:
self.screen.update()
- self.changed = False
+ #self.changed = False
diff --git a/asciifarm/client/display/selector.py b/asciifarm/client/display/selector.py
index 41249c2..3559673 100644
--- a/asciifarm/client/display/selector.py
+++ b/asciifarm/client/display/selector.py
@@ -10,17 +10,16 @@ class Selector:
def getValue(self):
return min(self.value, self.inventory.getNumItems()-1)
- def select(self, value, relative=False):
+ def select(self, value, relative=False, modular=False):
invLen = self.inventory.getNumItems()
if relative:
- value += self.selector
+ value += self.value
+ if modular:
+ value %= invLen
if value < 0:
- if not relative:
- value += invLen
- else:
- value = 0
+ value = 0
if value >= invLen:
value = invLen-1
if value in range(invLen):
- self.selector = value
+ self.value = value
self.inventory.change()
diff --git a/asciifarm/client/keybindings.hy b/asciifarm/client/keybindings.hy
index d91d6f5..d2b129f 100644
--- a/asciifarm/client/keybindings.hy
+++ b/asciifarm/client/keybindings.hy
@@ -1,38 +1,27 @@
-(defmacro send [data]
- `(fn [client] (client.send ~data)))
-(defmacro input [action]
- `(send ["input" ~action]))
-
-(defmacro doall [actions]
- `(fn [client] (for [action ~actions] (action client))))
-
-(defmacro selector [name]
- `(.getSelector (.getDisplay client) ~name))
-
-(defmacro selectorvalue [name]
- `(.getValue (selector ~name)))
+(require [asciifarm.client.keymacros [*]])
(setv commands {
- "w" (input ["move" "north"])
- "s" (input ["move" "south"])
- "d" (input ["move" "east"])
- "a" (input ["move" "west"])
- "KEY_UP" (input ["move" "north"])
- "KEY_DOWN" (input ["move" "south"])
- "KEY_RIGHT" (input ["move" "east"])
- "KEY_LEFT" (input ["move" "west"])
- "e" (input ["take" (selectorvalue "ground")])
- "q" (input ["drop" (selectorvalue "inventory")])
- "E" (input ["use" (selectorvalue "inventory")])
- "r" (input ["interact" (selectorvalue "ground")])
- "f" (doall [
+ "w" (input ["move" "north"])
+ "s" (input ["move" "south"])
+ "d" (input ["move" "east"])
+ "a" (input ["move" "west"])
+ "KEY_UP" (input ["move" "north"])
+ "KEY_DOWN" (input ["move" "south"])
+ "KEY_RIGHT" (input ["move" "east"])
+ "KEY_LEFT" (input ["move" "west"])
+ "e" (input ["take" (selectorvalue "ground")])
+ "q" (input ["drop" (selectorvalue "inventory")])
+ "E" (input ["use" (selectorvalue "inventory")])
+ "r" (input ["interact" (selectorvalue "ground")])
+ "v" (fn [client] (.select (selector "inventory") 1 True True))
+ "c" (fn [client] (.select (selector "ground") 1 True True))
+;; "x" (fn [client] (.select (selector "equipment") 1 True True))
+ "f" (doall [
(input ["attack"])
(input ["attack" "north"])
(input ["attack" "south"])
(input ["attack" "east"])
(input ["attack" "west"])])
- "t" (fn [client] (client.readString))
-
-})
+ "t" (fn [client] (client.readString)) })
diff --git a/asciifarm/client/keymacros.hy b/asciifarm/client/keymacros.hy
new file mode 100644
index 0000000..8b9952e
--- /dev/null
+++ b/asciifarm/client/keymacros.hy
@@ -0,0 +1,15 @@
+
+(defmacro send [data]
+ `(fn [client] (client.send ~data)))
+
+(defmacro input [action]
+ `(send ["input" ~action]))
+
+(defmacro doall [actions]
+ `(fn [client] (for [action ~actions] (action client))))
+
+(defmacro selector [name]
+ `(.getSelector (.getDisplay client) ~name))
+
+(defmacro selectorvalue [name]
+ `(.getValue (selector ~name)))