home · contact · privacy
Standardize leaving input prompts with empty input.
[plomrogue2] / rogue_chat_curses.py
index c6954bfce2b8ba502e170968cc5ec953c7f0e75a..b7590381055dc93123178b82bf80811e0844e019 100755 (executable)
@@ -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]))