home · contact · privacy
Improve admin modes.
authorChristian Heller <c.heller@plomlompom.de>
Wed, 25 Nov 2020 02:45:12 +0000 (03:45 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Wed, 25 Nov 2020 02:45:12 +0000 (03:45 +0100)
rogue_chat.html
rogue_chat_curses.py

index 136999fe67bdee4733f61cc8190602d21fa85953..93421701786f587d161cd074eaecaf65ec92f123 100644 (file)
@@ -129,7 +129,7 @@ let mode_helps = {
     },
     'control_pw_type': {
         'short': 'change tiles control password',
-        'long': 'This mode is the first of two steps to change the password for a tile control character.  First enter the tile control character for which you want to change the password!'
+        'long': 'This mode is the first of two steps to change the password for a tile control character.  First enter the tile control character for which you want to change the password.'
     },
     'control_pw_pw': {
         'short': 'change tiles control password',
@@ -546,15 +546,13 @@ let tui = {
   mode_study: new Mode('study', false, true),
   mode_write: new Mode('write', false, false, false, true),
   mode_edit: new Mode('edit'),
-  mode_control_pw_type: new Mode('control_pw_type',
-                                  false, false, false, true),
+  mode_control_pw_type: new Mode('control_pw_type', true),
   mode_portal: new Mode('portal', true, true),
   mode_password: new Mode('password', true),
   mode_admin_enter: new Mode('admin_enter', true),
   mode_admin: new Mode('admin'),
   mode_control_pw_pw: new Mode('control_pw_pw', true),
-  mode_control_tile_type: new Mode('control_tile_type',
-                                   false, false, false, true),
+  mode_control_tile_type: new Mode('control_tile_type', true),
   mode_control_tile_draw: new Mode('control_tile_draw'),
   init: function() {
       this.mode_play.available_modes = ["chat", "study", "edit", "admin_enter"]
@@ -676,18 +674,21 @@ let tui = {
     } else if (this.mode.name == 'admin') {
         document.getElementById("switch_to_control_pw_type").disabled = false;
         document.getElementById("switch_to_control_tile_type").disabled = false;
-    } else if (this.mode.name == 'control_tile_draw') {
-        document.getElementById("toggle_tile_draw").disabled = false;
     } else if (this.mode.name == 'study') {
         document.getElementById("toggle_map_mode").disabled = false;
     } else if (this.mode.is_single_char_entry) {
         this.show_help = true;
     } else if (this.mode.name == 'admin_enter') {
         this.log_msg('@ enter admin password:')
+    } else if (this.mode.name == 'control_pw_type') {
+        this.log_msg('@ enter tile control character for which you want to change the password:')
+    } else if (this.mode.name == 'control_tile_type') {
+        this.log_msg('@ enter tile control character which you want to draw:')
     } else if (this.mode.name == 'control_pw_pw') {
         this.log_msg('@ enter tile control password for "' + this.tile_control_char + '":');
-    } else if (this.mode.name == 'control_pw_pw') {
-        this.log_msg('@ enter tile control password for "' + this.tile_control_char + '":');
+    } else if (this.mode.name == 'control_tile_draw') {
+        document.getElementById("toggle_tile_draw").disabled = false;
+        this.log_msg('@ can draw tile control character "' + this.tile_control_char + '", turn drawing on/off with [' + this.keys.toggle_tile_draw + '], finish with [' +  this.keys.switch_to_admin_enter + '].')
     }
     this.full_refresh();
   },
@@ -1204,12 +1205,6 @@ tui.inputEl.addEventListener('input', (event) => {
     } else if (tui.mode.name == 'write' && tui.inputEl.value.length > 0) {
         server.send(["TASK:WRITE", tui.inputEl.value[0], tui.password]);
         tui.switch_mode('edit');
-    } else if (tui.mode.name == 'control_pw_type' && tui.inputEl.value.length > 0) {
-        tui.tile_control_char = tui.inputEl.value[0];
-        tui.switch_mode('control_pw_pw');
-    } else if (tui.mode.name == 'control_tile_type' && tui.inputEl.value.length > 0) {
-        tui.tile_control_char = tui.inputEl.value[0];
-        tui.switch_mode('control_tile_draw');
     }
     tui.full_refresh();
 }, false);
@@ -1252,6 +1247,22 @@ tui.inputEl.addEventListener('keydown', (event) => {
     } else if (tui.mode.name == 'admin_enter' && event.key == 'Enter') {
         server.send(['BECOME_ADMIN', tui.inputEl.value]);
         tui.switch_mode('play');
+    } else if (tui.mode.name == 'control_pw_type' && event.key == 'Enter') {
+        if (tui.inputEl.value.length != 1) {
+            tui.log_msg('@ entered non-single-char, therefore aborted');
+            tui.switch_mode('admin');
+        } else {
+            tui.tile_control_char = tui.inputEl.value[0];
+            tui.switch_mode('control_pw_pw');
+        }
+    } else if (tui.mode.name == 'control_tile_type' && event.key == 'Enter') {
+        if (tui.inputEl.value.length != 1) {
+            tui.log_msg('@ entered non-single-char, therefore aborted');
+            tui.switch_mode('admin');
+        } else {
+            tui.tile_control_char = tui.inputEl.value[0];
+            tui.switch_mode('control_tile_draw');
+        }
     } else if (tui.mode.name == 'chat' && event.key == 'Enter') {
         let tokens = parser.tokenize(tui.inputEl.value);
         if (tokens.length > 0 && tokens[0].length > 0) {
index 698360915a513fa0329e220680081f731ee13866..a6e05ab1bf98eb0b02ab2bf12b60678bec576ddc 100755 (executable)
@@ -29,7 +29,7 @@ mode_helps = {
     },
     'control_pw_type': {
         'short': 'change tiles control password',
-        'long': 'This mode is the first of two steps to change the password for a tile control character.  First enter the tile control character for which you want to change the password!'
+        'long': 'This mode is the first of two steps to change the password for a tile control character.  First enter the tile control character for which you want to change the password.'
     },
     'control_pw_pw': {
         'short': 'change tiles control password',
@@ -353,9 +353,9 @@ class TUI:
     mode_study = Mode('study', shows_info=True)
     mode_write = Mode('write', is_single_char_entry=True)
     mode_edit = Mode('edit')
-    mode_control_pw_type = Mode('control_pw_type', is_single_char_entry=True)
+    mode_control_pw_type = Mode('control_pw_type', has_input_prompt=True)
     mode_control_pw_pw = Mode('control_pw_pw', has_input_prompt=True)
-    mode_control_tile_type = Mode('control_tile_type', is_single_char_entry=True)
+    mode_control_tile_type = Mode('control_tile_type', has_input_prompt=True)
     mode_control_tile_draw = Mode('control_tile_draw')
     mode_annotate = Mode('annotate', has_input_prompt=True, shows_info=True)
     mode_portal = Mode('portal', has_input_prompt=True, shows_info=True)
@@ -525,8 +525,14 @@ class TUI:
                 self.log_msg('@ enter username')
         elif self.mode.name == 'admin_enter':
             self.log_msg('@ enter admin password:')
+        elif self.mode.name == 'control_pw_type':
+            self.log_msg('@ enter tile control character for which you want to change the password:')
+        elif self.mode.name == 'control_tile_type':
+            self.log_msg('@ enter tile control character which you want to draw:')
         elif self.mode.name == 'control_pw_pw':
             self.log_msg('@ enter tile control password for "%s":' % self.tile_control_char)
+        elif self.mode.name == 'control_tile_draw':
+            self.log_msg('@ can draw tile control character "%s", turn drawing on/off with [%s], finish with [%s].' % (self.tile_control_char, self.keys['toggle_tile_draw'], self.keys['switch_to_admin_enter']))
         self.restore_input_values()
 
     def loop(self, stdscr):
@@ -861,6 +867,24 @@ class TUI:
                 self.send('BECOME_ADMIN ' + quote(self.input_))
                 self.input_ = ""
                 self.switch_mode('play')
+            elif self.mode.name == 'control_pw_type' and key == '\n':
+                if len(self.input_) != 1:
+                    self.log_msg('@ entered non-single-char, therefore aborted')
+                    self.switch_mode('admin')
+                    self.input_ = ""
+                else:
+                    self.tile_control_char = self.input_
+                    self.input_ = ""
+                    self.switch_mode('control_pw_pw')
+            elif self.mode.name == 'control_tile_type' and key == '\n':
+                if len(self.input_) != 1:
+                    self.log_msg('@ entered non-single-char, therefore aborted')
+                    self.switch_mode('admin')
+                    self.input_ = ""
+                else:
+                    self.tile_control_char = self.input_
+                    self.input_ = ""
+                    self.switch_mode('control_tile_draw')
             elif self.mode.name == 'chat' and key == '\n':
                 if self.input_ == '':
                     continue
@@ -930,12 +954,6 @@ class TUI:
             elif self.mode.name == 'write':
                 self.send('TASK:WRITE %s %s' % (key, quote(self.password)))
                 self.switch_mode('edit')
-            elif self.mode.name == 'control_pw_type':
-                self.tile_control_char = key
-                self.switch_mode('control_pw_pw')
-            elif self.mode.name == 'control_tile_type':
-                self.tile_control_char = key
-                self.switch_mode('control_tile_draw')
             elif self.mode.name == 'control_tile_draw':
                 if self.mode.mode_switch_on_key(self, key):
                     continue