X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=new2%2Fplomrogue%2Fio.py;h=908d7bf504b7c304c937729b1bb5cccb3f47538b;hb=1d9e41e7df05336a6688382c9374c547979cf11e;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)))