home · contact · privacy
Introduce god mode to protect against destructive commands.
[plomrogue2-experiments] / new2 / plomrogue / io.py
index d740f8c42972879e9f911d21ba5edf5e6d9c1e84..9f34b180f851793b04ce02e32c52b46ea9c68481 100644 (file)
@@ -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,8 +45,13 @@ 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.misc import quote
@@ -63,7 +69,7 @@ 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: