home · contact · privacy
Fix game state change overwriting input fields.
[plomrogue2] / rogue_chat_curses.py
index 52f2f8c075552ec987037a1426a9c7c32602a659..2adbe3bb8c3e60cd7b08da5bca2ebbe948f78c8f 100755 (executable)
@@ -9,7 +9,7 @@ from plomrogue.parser import Parser
 from plomrogue.mapping import YX, MapGeometrySquare, MapGeometryHex
 from plomrogue.things import ThingBase
 from plomrogue.misc import quote
 from plomrogue.mapping import YX, MapGeometrySquare, MapGeometryHex
 from plomrogue.things import ThingBase
 from plomrogue.misc import quote
-from plomrogue.errors import BrokenSocketConnection
+from plomrogue.errors import BrokenSocketConnection, ArgError
 
 mode_helps = {
     'play': {
 
 mode_helps = {
     'play': {
@@ -238,7 +238,6 @@ cmd_ANNOTATION_HINT.argtypes = 'yx_tuple:nonneg'
 
 def cmd_ANNOTATION(game, position, msg):
     game.info_db[position] = msg
 
 def cmd_ANNOTATION(game, position, msg):
     game.info_db[position] = msg
-    game.tui.restore_input_values()
     if game.tui.mode.shows_info:
         game.tui.do_refresh = True
 cmd_ANNOTATION.argtypes = 'yx_tuple:nonneg string'
     if game.tui.mode.shows_info:
         game.tui.do_refresh = True
 cmd_ANNOTATION.argtypes = 'yx_tuple:nonneg string'
@@ -453,6 +452,7 @@ class TUI:
             self.disconnected = False
             self.game.thing_types = {}
             self.game.terrains = {}
             self.disconnected = False
             self.game.thing_types = {}
             self.game.terrains = {}
+            time.sleep(0.1)  # give potential SSL negotation some time …
             self.socket.send('TASKS')
             self.socket.send('TERRAINS')
             self.socket.send('THING_TYPES')
             self.socket.send('TASKS')
             self.socket.send('TERRAINS')
             self.socket.send('THING_TYPES')
@@ -466,8 +466,8 @@ class TUI:
     def reconnect(self):
         self.log_msg('@ attempting reconnect')
         self.send('QUIT')
     def reconnect(self):
         self.log_msg('@ attempting reconnect')
         self.send('QUIT')
-        time.sleep(0.1)  # FIXME necessitated by some some strange SSL race
-                         # conditions with ws4py, find out what exactly
+        # necessitated by some strange SSL race conditions with ws4py
+        time.sleep(0.1)  # FIXME find out why exactly necessary
         self.switch_mode('waiting_for_server')
         self.connect()
 
         self.switch_mode('waiting_for_server')
         self.connect()
 
@@ -519,12 +519,12 @@ class TUI:
         if mode_name == 'admin_enter' and self.is_admin:
             mode_name = 'admin'
         self.mode = getattr(self, 'mode_' + mode_name)
         if mode_name == 'admin_enter' and self.is_admin:
             mode_name = 'admin'
         self.mode = getattr(self, 'mode_' + mode_name)
-        if self.mode and self.mode.name == 'control_tile_draw':
+        if self.mode.name == 'control_tile_draw':
             self.log_msg('@ finished tile protection drawing.')
         if self.mode.name in {'control_tile_draw', 'control_tile_type',
                               'control_pw_type'}:
             self.map_mode = 'protections'
             self.log_msg('@ finished tile protection drawing.')
         if self.mode.name in {'control_tile_draw', 'control_tile_type',
                               'control_pw_type'}:
             self.map_mode = 'protections'
-        elif self.mode.name!= 'edit':
+        elif self.mode.name != 'edit':
             self.map_mode = 'terrain + things'
         if self.mode.shows_info or self.mode.name == 'control_tile_draw':
             player = self.game.get_thing(self.game.player_id)
             self.map_mode = 'terrain + things'
         if self.mode.shows_info or self.mode.name == 'control_tile_draw':
             player = self.game.get_thing(self.game.player_id)
@@ -723,7 +723,7 @@ class TUI:
             if type(self.game.map_geometry) == MapGeometryHex:
                 indent = 0
                 for line in map_lines_split:
             if type(self.game.map_geometry) == MapGeometryHex:
                 indent = 0
                 for line in map_lines_split:
-                    map_lines += [indent*' ' + ''.join(line)]
+                    map_lines += [indent * ' ' + ''.join(line)]
                     indent = 0 if indent else 1
             else:
                 for line in map_lines_split:
                     indent = 0 if indent else 1
             else:
                 for line in map_lines_split:
@@ -787,7 +787,7 @@ class TUI:
             for i in range(self.size.y):
                 safe_addstr(i,
                             self.window_width * (not self.mode.has_input_prompt),
             for i in range(self.size.y):
                 safe_addstr(i,
                             self.window_width * (not self.mode.has_input_prompt),
-                            ' '*self.window_width)
+                            ' ' * self.window_width)
             lines = []
             for line in content.split('\n'):
                 lines += msg_into_lines_of_width(line, self.window_width)
             lines = []
             for line in content.split('\n'):
                 lines += msg_into_lines_of_width(line, self.window_width)
@@ -815,7 +815,7 @@ class TUI:
                 draw_help()
 
         curses.curs_set(False)  # hide cursor
                 draw_help()
 
         curses.curs_set(False)  # hide cursor
-        curses.use_default_colors();
+        curses.use_default_colors()
         stdscr.timeout(10)
         reset_screen_size()
         self.explorer = YX(0, 0)
         stdscr.timeout(10)
         reset_screen_size()
         self.explorer = YX(0, 0)
@@ -976,7 +976,7 @@ class TUI:
                 if self.mode.mode_switch_on_key(self, key):
                     continue
                 elif key == self.keys['flatten'] and\
                 if self.mode.mode_switch_on_key(self, key):
                     continue
                 elif key == self.keys['flatten'] and\
-                     'FLATTEN_SURROUNDINGS' in self.game.tasks:
+                    'FLATTEN_SURROUNDINGS' in self.game.tasks:
                     self.send('TASK:FLATTEN_SURROUNDINGS ' + quote(self.password))
                 elif key == self.keys['toggle_map_mode']:
                     self.toggle_map_mode()
                     self.send('TASK:FLATTEN_SURROUNDINGS ' + quote(self.password))
                 elif key == self.keys['toggle_map_mode']:
                     self.toggle_map_mode()