home · contact · privacy
Fix bug that emptied annotation input on pre-existing annotation.
[plomrogue2] / rogue_chat_curses.py
index 2dfbdd1b6b76772877ac47b9db7c04b4e199e919..15f4cd2db0b8773ff1ab68dd05abdc971f9227db 100755 (executable)
@@ -139,7 +139,7 @@ cmd_PORTAL.argtypes = 'yx_tuple:nonneg string'
 
 def cmd_PLAY_ERROR(game, msg):
     game.tui.log_msg('? ' + msg)
-    game.tui.flash()
+    game.tui.flash = True
     game.tui.do_refresh = True
 cmd_PLAY_ERROR.argtypes = 'string'
 
@@ -155,6 +155,7 @@ cmd_ARGUMENT_ERROR.argtypes = 'string'
 
 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'
@@ -291,11 +292,9 @@ class TUI:
         self.force_instant_connect = True
         self.input_lines = []
         self.fov = ''
+        self.flash = False
         curses.wrapper(self.loop)
 
-    def flash(self):
-        curses.flash()
-
     def connect(self):
 
         def handle_recv(msg):
@@ -368,6 +367,7 @@ class TUI:
         if self.mode.shows_info:
             player = self.game.get_thing(self.game.player_id)
             self.explorer = YX(player.position.y, player.position.x)
+            self.query_info()
         if self.mode.name == 'waiting_for_server':
             self.log_msg('@ waiting for server …')
         if self.mode.name == 'edit':
@@ -426,12 +426,12 @@ class TUI:
                                                            self.window_width)
 
         def move_explorer(direction):
-            target = self.game.map_geometry.move(self.explorer, direction)
+            target = self.game.map_geometry.move_yx(self.explorer, direction)
             if target:
                 self.explorer = target
                 self.query_info()
             else:
-                self.flash()
+                self.flash = True
 
         def draw_history():
             lines = []
@@ -636,6 +636,9 @@ class TUI:
                 else:
                     self.send('PING')
                 last_ping = now
+            if self.flash:
+                curses.flash()
+                self.flash = False
             if self.do_refresh:
                 draw_screen()
                 self.do_refresh = False
@@ -748,7 +751,7 @@ class TUI:
                         self.host = self.game.portals[player.position]
                         self.reconnect()
                     else:
-                        self.flash()
+                        self.flash = True
                         self.log_msg('? not standing on portal')
                 elif key in self.movement_keys and 'MOVE' in self.game.tasks:
                     self.send('TASK:MOVE ' + self.movement_keys[key])