From 47dec82c0a0bc1949bc407c688569fc3fd5887f9 Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Wed, 25 Nov 2020 03:45:12 +0100 Subject: [PATCH] Improve admin modes. --- rogue_chat.html | 41 ++++++++++++++++++++++++++--------------- rogue_chat_curses.py | 36 +++++++++++++++++++++++++++--------- 2 files changed, 53 insertions(+), 24 deletions(-) diff --git a/rogue_chat.html b/rogue_chat.html index 136999f..9342170 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -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) { diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index 6983609..a6e05ab 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -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 -- 2.30.2