game.turn = n
cmd_TURN.argtypes = 'int:nonneg'
-#def cmd_ANNOTATE(game, yx, connection_id):
-def cmd_ANNOTATE(game, yx, msg):
+def cmd_ANNOTATE(game, yx, msg, connection_id):
if msg == ' ':
if yx in game.annotations:
del game.annotations[yx]
game.io.send('ANNOTATION %s %s' % (yx, quote(annotation)))
cmd_GET_ANNOTATION.argtypes = 'yx_tuple:nonneg'
-# TODO: disallow these commands from clients? (maybe by failing on connection_id?)
def cmd_MAP_LINE(game, y, line):
game.map.set_line(y, line)
cmd_MAP_LINE.argtypes = 'int:nonneg string'
for i in range(len(lines)):
line = lines[i]
print("FILE INPUT LINE %5s: %s" % (i, line), end='')
- self.io.handle_input(line)
+ self.io.handle_input(line, god_mode=True)
def get_string_options(self, string_option_type):
import string
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.misc import quote
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: