summaryrefslogtreecommitdiff
path: root/asciifarm/client/commandhandler.py
diff options
context:
space:
mode:
Diffstat (limited to 'asciifarm/client/commandhandler.py')
-rw-r--r--asciifarm/client/commandhandler.py150
1 files changed, 0 insertions, 150 deletions
diff --git a/asciifarm/client/commandhandler.py b/asciifarm/client/commandhandler.py
deleted file mode 100644
index ec5baa3..0000000
--- a/asciifarm/client/commandhandler.py
+++ /dev/null
@@ -1,150 +0,0 @@
-
-import json
-
-try:
- import hy
-except ImportError as e:
- hy = None
- hyErr = e
-
-class InvalidCommandException(Exception):
- pass
-
-
-class CommandHandler:
-
- def __init__(self, client):
- self.client = client
-
- self.commands = {
- "input": self.input,
- "move": self.move,
- "say": self.say,
- "pick": self.pick,
- "chat": self.chat,
- "log": self.log,
- "do": self.do,
- "runinput": self.runInput,
- "selectwidget": self.selectWidget,
- "selectitem": self.selectItem,
- "inputwithselected": self.actWithSelected,
- "use": self.useSelected,
- "drop": self.dropSelected,
- "take": self.takeSelected,
- "eval": self.eval,
- "exec": self.exec,
- "scrollchat": self.scrollChat,
- "json": self.json,
- "j": self.json,
- "ijson": self.ijson,
- "ij": self.ijson,
- "hy": self.hy
- }
-
- self.evalArgs = {
- "self": self,
- "client": self.client,
- "connection": self.client.connection,
- "display": self.client.display,
- "print": self.log
- }
-
- def execute(self, action):
- if action is None:
- return
- if isinstance(action[0], str):
- command = action[0]
- if command in self.commands:
- self.commands[command](*action[1:])
- else:
- raise InvalidCommandException("Invalid command '{}'".format(command))
- else:
- raise Exception("Command should be a string")
-
-
- # Commands
-
- def input(self, action):
- self.client.sendInput(action)
-
- def move(self, direction):
- self.input(["move", direction])
-
- def say(self, text):
- self.input(["say", text])
-
- def pick(self, option):
- self.input(["interact", [None, "north", "south", "east", "west"], option])
-
- def chat(self, text):
- self.client.sendChat( text)
-
-
- def log(self, text):
- self.client.log(text)
-
- def do(self, actions):
- for action in actions:
- self.execute(action)
-
- def runInput(self, startText=""):
- self.client.inputHandler.startTyping(startText)
-
- def selectWidget(self, value, relative=False, modular=False):
- self.client.display.selectMenu(value, relative, modular)
-
- def selectItem(self, value, relative=False, modular=False):
- self.client.display.selectItem(None, value, relative, modular)
-
- def actWithSelected(self, action, menu):
- self.input([action, self.client.display.getSelectedItem(menu).getSelected()])
-
- def useSelected(self):
- menu = self.client.display.getSelectedMenu()
- selected = self.client.display.getSelectedItem(menu)
- if menu in ("inventory", "equipment"):
- self.input(["use", menu, selected])
- elif menu == "ground":
- self.input(["interact", selected])
-
- def dropSelected(self):
- menu = self.client.display.getSelectedMenu()
- selected = self.client.display.getSelectedItem(menu)
- if menu == "inventory":
- action = "drop"
- else:
- return
- self.input([action, selected])
-
- def takeSelected(self):
- menu = self.client.display.getSelectedMenu()
- selected = self.client.display.getSelectedItem(menu)
- if menu == "ground":
- action = "take"
- else:
- return
- self.input([action, selected])
-
- def eval(self, text):
- self.log(eval(text, self.evalArgs))
-
- def exec(self, text):
- exec(text, self.evalArgs)
-
- def hy(self, code):
- if hy is None:
- self.log(hyErr)
- return
- expr = hy.read_str(code)
- self.log(hy.eval(expr, self.evalArgs))
-
- def scrollChat(self, lines):
- self.client.display.scrollBack(lines)
-
- def json(self, text):
- self.execute(json.loads(text))
-
- def ijson(self, text):
- self.input(json.loads(text))
-
-