X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=new2%2Fplomrogue%2Fio.py;h=908d7bf504b7c304c937729b1bb5cccb3f47538b;hb=792dad961acda233d4a952fa8fabef9766f9dbc4;hp=d740f8c42972879e9f911d21ba5edf5e6d9c1e84;hpb=2f73d4246c98d4b25d18d0faa987d9ed165a48ae;p=plomrogue2-experiments
diff --git a/new2/plomrogue/io.py b/new2/plomrogue/io.py
index d740f8c..908d7bf 100644
--- a/new2/plomrogue/io.py
+++ b/new2/plomrogue/io.py
@@ -4,11 +4,12 @@ import queue
class GameIO():
- def __init__(self, game):
+ def __init__(self, game, save_file='savefile'):
from plomrogue.parser import Parser
self.clients = {}
self.parser = Parser(game)
self.game = game
+ self.save_file = save_file
def loop(self, q):
"""Handle commands coming through queue q, run game, send results back."""
@@ -44,10 +45,15 @@ class GameIO():
print('Killing server')
self.server.server_close()
- def handle_input(self, input_, connection_id=None):
- """Process input_ to command grammar, call command handler if found."""
+ def handle_input(self, input_, connection_id=None, god_mode=False):
+ """Process input_ to command grammar, call command handler if found.
+
+ Command handlers that have no connectin_i argument in their
+ signature will only be called if god_mode is set.
+
+ """
from inspect import signature
- from plomrogue.errors import GameError, ArgError
+ from plomrogue.errors import GameError, ArgError, PlayError
from plomrogue.misc import quote
def answer(connection_id, msg):
@@ -63,13 +69,15 @@ class GameIO():
else:
if 'connection_id' in list(signature(command).parameters):
command(*args, connection_id=connection_id)
- else:
+ elif god_mode:
command(*args)
#if store and not hasattr(command, 'dont_save'):
# with open(self.game_file_name, 'a') as f:
# f.write(input_ + '\n')
except ArgError as e:
answer(connection_id, 'ARGUMENT_ERROR ' + quote(str(e)))
+ except PlayError as e:
+ answer(connection_id, 'PLAY_ERROR ' + quote(str(e)))
except GameError as e:
answer(connection_id, 'GAME_ERROR ' + quote(str(e)))