diff options
Diffstat (limited to 'asciifarm/client/keybindings.hy')
| -rw-r--r-- | asciifarm/client/keybindings.hy | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/asciifarm/client/keybindings.hy b/asciifarm/client/keybindings.hy new file mode 100644 index 0000000..d91d6f5 --- /dev/null +++ b/asciifarm/client/keybindings.hy @@ -0,0 +1,38 @@ + +(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))) + +(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 [ + (input ["attack"]) + (input ["attack" "north"]) + (input ["attack" "south"]) + (input ["attack" "east"]) + (input ["attack" "west"])]) + "t" (fn [client] (client.readString)) + +}) |
