From b42a49ec09d08e8f37ea52ad6b74fb10c5c5b01d Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Mon, 7 Dec 2020 00:57:17 +0100 Subject: [PATCH] Standardize leaving input prompts with empty input. --- rogue_chat.html | 48 ++++++++++++++++---------------------------- rogue_chat_curses.py | 48 ++++++++++++++++---------------------------- 2 files changed, 34 insertions(+), 62 deletions(-) diff --git a/rogue_chat.html b/rogue_chat.html index 3d17c5a..573e295 100644 --- a/rogue_chat.html +++ b/rogue_chat.html @@ -196,7 +196,7 @@ let mode_helps = { 'chat': { 'short': 'chat', 'intro': '', - 'long': 'This mode allows you to engage in chit-chat with other users. Any line you enter into the input prompt that does not start with a "/" will be sent out to nearby players – but barriers and distance will reduce what they can read, so stand close to them to ensure they get your message. Lines that start with a "/" are used for commands like:' + 'long': 'This mode allows you to engage in chit-chat with other users. Any line you enter into the input prompt that does not start with a "/" will be sent out to nearby players – but barriers and distance will reduce what they can read, so stand close to them to ensure they get your message. Lines that start with a "/" are used for commands like:\n\n/nick NAME – re-name yourself to NAME' }, 'login': { 'short': 'login', @@ -666,7 +666,6 @@ let tui = { map_lines: [], selectables: [], init: function() { - this.mode_chat.available_modes = ["play", "study", "edit", "admin_enter"] this.mode_play.available_modes = ["chat", "study", "edit", "admin_enter", "command_thing", "take_thing"] this.mode_play.available_actions = ["move", "drop_thing", @@ -1120,13 +1119,7 @@ let tui = { movement_keys_desc = Object.keys(this.movement_keys).join(','); } let content = this.mode.short_desc + " help\n\n" + this.mode.help_intro + "\n\n"; - if (this.mode.name == 'chat') { - content += '/nick NAME – re-name yourself to NAME\n'; - content += '/' + this.keys.switch_to_play + ' or /play – switch to play mode\n'; - content += '/' + this.keys.switch_to_study + ' or /study – switch to study mode\n'; - content += '/' + this.keys.switch_to_edit + ' or /edit – switch to world edit mode\n'; - content += '/' + this.keys.switch_to_admin_enter + ' or /admin – switch to admin mode\n'; - } else if (this.mode.available_actions.length > 0) { + if (this.mode.available_actions.length > 0) { content += "Available actions:\n"; for (let action of this.mode.available_actions) { if (Object.keys(this.action_tasks).includes(action)) { @@ -1394,7 +1387,15 @@ tui.inputEl.addEventListener('keydown', (event) => { if (event.key == 'Enter') { event.preventDefault(); } - if (tui.mode.has_input_prompt && event.key == 'Enter' && tui.inputEl.value == '/help') { + if (tui.mode.has_input_prompt && event.key == 'Enter' + && tui.inputEl.value.length == 0 + && ['chat', 'command_thing', 'take_thing', + 'admin_enter'].includes(tui.mode.name)) { + if (tui.mode.name != 'chat') { + tui.log_msg('@ aborted'); + } + tui.switch_mode('play'); + } else if (tui.mode.has_input_prompt && event.key == 'Enter' && tui.inputEl.value == '/help') { tui.show_help = true; tui.inputEl.value = ""; tui.restore_input_values(); @@ -1406,23 +1407,16 @@ tui.inputEl.addEventListener('keydown', (event) => { server.send(['LOGIN', tui.inputEl.value]); tui.inputEl.value = ""; } else if (tui.mode.name == 'command_thing' && event.key == 'Enter') { - if (tui.inputEl.value.length == 0) { - tui.log_msg('@ aborted'); - tui.switch_mode('play'); - } else if (tui.task_action_on('command')) { + if (tui.task_action_on('command')) { server.send(['TASK:COMMAND', tui.inputEl.value]); tui.inputEl.value = ""; } } else if (tui.mode.name == 'take_thing' && event.key == 'Enter') { - if (tui.inputEl.value.length == 0) { - tui.log_msg('@ aborted'); + const i = parseInt(tui.inputEl.value); + if (isNaN(i) || i < 0 || i >= tui.selectables.length) { + tui.log_msg('? invalid index, aborted'); } else { - const i = parseInt(tui.inputEl.value); - if (isNaN(i) || i < 0 || i >= tui.selectables.length) { - tui.log_msg('? invalid index, aborted'); - } else { - server.send(['TASK:PICK_UP', tui.selectables[i][0]]); - } + server.send(['TASK:PICK_UP', tui.selectables[i][0]]); } tui.inputEl.value = ""; tui.switch_mode('play'); @@ -1485,15 +1479,7 @@ tui.inputEl.addEventListener('keydown', (event) => { let tokens = parser.tokenize(tui.inputEl.value); if (tokens.length > 0 && tokens[0].length > 0) { if (tui.inputEl.value[0][0] == '/') { - if (tokens[0].slice(1) == 'play' || tokens[0][1] == tui.keys.switch_to_play) { - tui.switch_mode('play'); - } else if (tokens[0].slice(1) == 'study' || tokens[0][1] == tui.keys.switch_to_study) { - tui.switch_mode('study'); - } else if (tokens[0].slice(1) == 'edit' || tokens[0][1] == tui.keys.switch_to_edit) { - tui.switch_mode('edit'); - } else if (tokens[0].slice(1) == 'admin' || tokens[0][1] == tui.keys.switch_to_admin_enter) { - tui.switch_mode('admin_enter'); - } else if (tokens[0].slice(1) == 'nick') { + if (tokens[0].slice(1) == 'nick') { if (tokens.length > 1) { server.send(['NICK', tokens[1]]); } else { diff --git a/rogue_chat_curses.py b/rogue_chat_curses.py index c6954bf..b759038 100755 --- a/rogue_chat_curses.py +++ b/rogue_chat_curses.py @@ -84,7 +84,7 @@ mode_helps = { 'chat': { 'short': 'chat', 'intro': '', - 'long': 'This mode allows you to engage in chit-chat with other users. Any line you enter into the input prompt that does not start with a "/" will be sent out to nearby players – but barriers and distance will reduce what they can read, so stand close to them to ensure they get your message. Lines that start with a "/" are used for commands like:' + 'long': 'This mode allows you to engage in chit-chat with other users. Any line you enter into the input prompt that does not start with a "/" will be sent out to nearby players – but barriers and distance will reduce what they can read, so stand close to them to ensure they get your message. Lines that start with a "/" are used for commands like:\n\n/nick NAME – re-name yourself to NAME' }, 'login': { 'short': 'login', @@ -903,12 +903,6 @@ class TUI: key = self.keys[action] content += '[%s] – %s\n' % (key, action_descriptions[action]) content += '\n' - if self.mode.name == 'chat': - content += '/nick NAME – re-name yourself to NAME\n' - content += '/%s or /play – switch to play mode\n' % self.keys['switch_to_play'] - content += '/%s or /study – switch to study mode\n' % self.keys['switch_to_study'] - content += '/%s or /edit – switch to world edit mode\n' % self.keys['switch_to_edit'] - content += '/%s or /admin – switch to admin mode\n' % self.keys['switch_to_admin_enter'] content += self.mode.list_available_modes(self) for i in range(self.size.y): safe_addstr(i, @@ -1007,6 +1001,12 @@ class TUI: reset_screen_size() elif self.mode.has_input_prompt and key == 'KEY_BACKSPACE': self.input_ = self.input_[:-1] + elif self.mode.has_input_prompt and key == '\n' and self.input_ == ''\ + and self.mode.name in {'chat', 'command_thing', 'take_thing', + 'admin_enter'}: + if self.mode.name != 'chat': + self.log_msg('@ aborted') + self.switch_mode('play') elif self.mode.has_input_prompt and key == '\n' and self.input_ == '/help': self.show_help = True self.input_ = "" @@ -1023,24 +1023,18 @@ class TUI: self.send('LOGIN ' + quote(self.input_)) self.input_ = "" elif self.mode.name == 'take_thing' and key == '\n': - if self.input_ == '': - self.log_msg('@ aborted') - else: - try: - i = int(self.input_) - if i < 0 or i >= len(self.selectables): - self.log_msg('? invalid index, aborted') - else: - self.send('TASK:PICK_UP %s' % self.selectables[i].id_) - except ValueError: + try: + i = int(self.input_) + if i < 0 or i >= len(self.selectables): self.log_msg('? invalid index, aborted') + else: + self.send('TASK:PICK_UP %s' % self.selectables[i].id_) + except ValueError: + self.log_msg('? invalid index, aborted') self.input_ = '' self.switch_mode('play') elif self.mode.name == 'command_thing' and key == '\n': - if self.input_ == '': - self.log_msg('@ aborted') - self.switch_mode('play') - elif task_action_on('command'): + if task_action_on('command'): self.send('TASK:COMMAND ' + quote(self.input_)) self.input_ = "" elif self.mode.name == 'control_pw_pw' and key == '\n': @@ -1083,16 +1077,8 @@ class TUI: elif self.mode.name == 'chat' and key == '\n': if self.input_ == '': continue - if self.input_[0] == '/': # FIXME fails on empty input - if self.input_ in {'/' + self.keys['switch_to_play'], '/play'}: - self.switch_mode('play') - elif self.input_ in {'/' + self.keys['switch_to_study'], '/study'}: - self.switch_mode('study') - elif self.input_ in {'/' + self.keys['switch_to_edit'], '/edit'}: - self.switch_mode('edit') - elif self.input_ in {'/' + self.keys['switch_to_admin_enter'], '/admin'}: - self.switch_mode('admin_enter') - elif self.input_.startswith('/nick'): + if self.input_[0] == '/': + if self.input_.startswith('/nick'): tokens = self.input_.split(maxsplit=1) if len(tokens) == 2: self.send('NICK ' + quote(tokens[1])) -- 2.30.2