home · contact · privacy
Register game commands and tasks outside of game module.
[plomrogue2-experiments] / new2 / rogue_chat_curses.py
index 15d0053a8bca770f385aa9e8a70a2f707f415c55..a6d1ca7a81e9f8632bd82d2bb9e482da8529aae8 100755 (executable)
@@ -39,8 +39,12 @@ class PlomSocketClient(PlomSocket):
         self.socket.close()
 
     def run(self):
+        import ssl
         try:
             for msg in self.recv():
+                if msg == 'NEED_SSL':
+                    self.socket = ssl.wrap_socket(self.socket)
+                    continue
                 self.recv_handler(msg)
         except BrokenSocketConnection:
             pass  # we assume socket will be known as dead by now
@@ -144,25 +148,25 @@ def cmd_PONG(game):
 cmd_PONG.argtypes = ''
 
 class Game(GameBase):
-    commands = {'LOGIN_OK': cmd_LOGIN_OK,
-                'PONG': cmd_PONG,
-                'CHAT': cmd_CHAT,
-                'PLAYER_ID': cmd_PLAYER_ID,
-                'TURN': cmd_TURN,
-                'THING_POS': cmd_THING_POS,
-                'THING_NAME': cmd_THING_NAME,
-                'MAP': cmd_MAP,
-                'PORTAL': cmd_PORTAL,
-                'ANNOTATION': cmd_ANNOTATION,
-                'GAME_STATE_COMPLETE': cmd_GAME_STATE_COMPLETE,
-                'ARGUMENT_ERROR': cmd_ARGUMENT_ERROR,
-                'GAME_ERROR': cmd_GAME_ERROR,
-                'PLAY_ERROR': cmd_PLAY_ERROR}
     thing_type = ThingBase
     turn_complete = False
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
+        self.register_command(cmd_LOGIN_OK)
+        self.register_command(cmd_PONG)
+        self.register_command(cmd_CHAT)
+        self.register_command(cmd_PLAYER_ID)
+        self.register_command(cmd_TURN)
+        self.register_command(cmd_THING_POS)
+        self.register_command(cmd_THING_NAME)
+        self.register_command(cmd_MAP)
+        self.register_command(cmd_PORTAL)
+        self.register_command(cmd_ANNOTATION)
+        self.register_command(cmd_GAME_STATE_COMPLETE)
+        self.register_command(cmd_ARGUMENT_ERROR)
+        self.register_command(cmd_GAME_ERROR)
+        self.register_command(cmd_PLAY_ERROR)
         self.map_content = ''
         self.player_id = -1
         self.info_db = {}
@@ -606,4 +610,4 @@ class TUI:
                 self.send('TASK:WRITE ' + key)
                 self.switch_mode('play')
 
-TUI('127.0.0.1:5000')
+TUI('localhost:5000')