diff options
| author | troido <troido@hotmail.com> | 2017-12-29 22:40:24 +0100 |
|---|---|---|
| committer | troido <troido@hotmail.com> | 2017-12-29 22:40:24 +0100 |
| commit | 29149f398986620cf13ba1fc4d2d7cca139bead0 (patch) | |
| tree | d8f7915bdf656599319ab5dd63d3873b9f8c59a3 | |
| parent | a1c60cfcb63b013f575943e17854cf205f8db913 (diff) | |
keybinding macros have their own file and selectors can now be used!
| -rw-r--r-- | asciifarm/client/display/display.py | 24 | ||||
| -rw-r--r-- | asciifarm/client/display/selector.py | 13 | ||||
| -rw-r--r-- | asciifarm/client/keybindings.hy | 47 | ||||
| -rw-r--r-- | asciifarm/client/keymacros.hy | 15 |
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))) |
