From 90d7e8cdc98943e46ec9a3d8d2debf2886f793e2 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Tue, 27 Oct 2020 00:14:38 +0100
Subject: [PATCH] Identify player in client so scrolling can follow them.

---
 new2/plomrogue/commands.py               | 1 +
 new2/rogue_chat_nocanvas_monochrome.html | 9 +++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/new2/plomrogue/commands.py b/new2/plomrogue/commands.py
index 397dbe4..352f40d 100644
--- a/new2/plomrogue/commands.py
+++ b/new2/plomrogue/commands.py
@@ -18,6 +18,7 @@ def cmd_LOGIN(game, nick, connection_id):
     game.things += [t]  # TODO refactor into Thing.__init__?
     game.sessions[connection_id] = t.id_ 
     game.io.send('META ' + quote('you are now: ' + nick), connection_id)
+    game.io.send('PLAYER_ID %s' % t.id_, connection_id)
 cmd_LOGIN.argtypes = 'string'
 
 def cmd_QUERY(game, target_nick, msg, connection_id):
diff --git a/new2/rogue_chat_nocanvas_monochrome.html b/new2/rogue_chat_nocanvas_monochrome.html
index df29814..d873b37 100644
--- a/new2/rogue_chat_nocanvas_monochrome.html
+++ b/new2/rogue_chat_nocanvas_monochrome.html
@@ -127,7 +127,9 @@ let tui = {
     for (const thing_id in game.things) {
         let t = game.things[thing_id];
         map_lines[t[0]][t[1]] = '@';
-        player_position = t;
+        if (game.player_id == thing_id) {
+            player_position = t;
+        }
     }
     let offset = [(terminal.rows / 2) - player_position[0],
                   terminal.cols / 4 - player_position[1]];
@@ -174,7 +176,8 @@ let game = {
   things: {},
   turn: 0,
   map: "",
-  map_size: [0,0]
+  map_size: [0,0],
+  player_id: 0
 }
 
 let chat = {
@@ -223,6 +226,8 @@ websocket.onmessage = function (event) {
   } else if (tokens[0] === 'LOG') {
      tui.log_msg(tokens[1], 1);
      tui.refresh();
+  } else if (tokens[0] === 'PLAYER_ID') {
+      game.player_id = parseInt(tokens[1]);
   } else if (tokens[0] === 'META') {
      tui.log_msg(tokens[1]);
      tui.refresh();
-- 
2.30.2