From 2d26a570e3e4f26a45a476fde6c5b9902607e4b6 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Wed, 4 Nov 2020 05:36:29 +0100
Subject: [PATCH] Minor client improvements.

---
 new2/rogue_chat_curses.py                | 27 +++++++++++++++++++-----
 new2/rogue_chat_nocanvas_monochrome.html |  3 ++-
 2 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/new2/rogue_chat_curses.py b/new2/rogue_chat_curses.py
index 6f27256..e272fb2 100755
--- a/new2/rogue_chat_curses.py
+++ b/new2/rogue_chat_curses.py
@@ -330,15 +330,32 @@ class TUI:
                     self.input_ = self.input_[:max_length]
             elif self.mode == self.mode_login and key == '\n':
                 self.socket.send('LOGIN ' + quote(self.input_))
+                self.input_ = ""
             elif self.mode == self.mode_chat and key == '\n':
                 # TODO: query, nick, help, reconnect, unknown command
-                if self.input_ == ':p':
-                    self.switch_mode('play')
-                elif self.input_ == ':?':
-                    self.switch_mode('study')
+                if self.input_[0] == ':':
+                    if self.input_ in {':p', ':play'}:
+                        self.switch_mode('play')
+                    elif self.input_ in {':?', ':study'}:
+                        self.switch_mode('study')
+                    elif self.input_.startswith(':nick'):
+                        tokens = self.input_.split(maxsplit=1)
+                        if len(tokens) == 2:
+                            self.socket.send('LOGIN ' + quote(tokens[1]))
+                        else:
+                            self.log_msg('? need login name')
+                    elif self.input_.startswith(':msg'):
+                        tokens = self.input_.split(maxsplit=2)
+                        if len(tokens) == 3:
+                            self.socket.send('QUERY %s %s' % (quote(tokens[1]),
+                                                              quote(tokens[2])))
+                        else:
+                            self.log_msg('? need message target and message')
+                    else:
+                        self.log_msg('? unknown command')
                 else:
                     self.socket.send('ALL ' + quote(self.input_))
-                    self.input_ = ""
+                self.input_ = ""
             elif self.mode == self.mode_annotate and key == '\n':
                 if (self.input_ == ''):
                     self.input_ = ' '
diff --git a/new2/rogue_chat_nocanvas_monochrome.html b/new2/rogue_chat_nocanvas_monochrome.html
index bb1ecda..f513ad9 100644
--- a/new2/rogue_chat_nocanvas_monochrome.html
+++ b/new2/rogue_chat_nocanvas_monochrome.html
@@ -201,6 +201,7 @@ let server = {
         } else if (tokens[0] === 'LOGIN_OK') {
             this.send(['GET_GAMESTATE']);
             tui.log_help();
+            // TODO wait for game state for this switch, use intermediary mode?
             tui.switch_mode(mode_play);
         } else if (tokens[0] === 'PORTAL') {
             let position = parser.parse_yx(tokens[1]);
@@ -591,7 +592,7 @@ tui.inputEl.addEventListener('input', (event) => {
 }, false);
 tui.inputEl.addEventListener('keydown', (event) => {
     if (event.key == 'Enter') {
-	event.preventDefault();
+        event.preventDefault();
     }
     if (tui.mode == mode_login && event.key == 'Enter') {
         server.send(['LOGIN', tui.inputEl.value]);
-- 
2.30.2