X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=new2%2Frogue_chat_curses.py;h=ad6f4f98e349bd5eb6e7b006e0b852c2ee7913fc;hb=3f6aeac609f6337713f6cca17e4f54960ecf4d7f;hp=6f27256a728e3a8f56db9c5d171173ff03e14036;hpb=d8d43ad18b8209eb34df79a604321e82f46b0887;p=plomrogue2-experiments diff --git a/new2/rogue_chat_curses.py b/new2/rogue_chat_curses.py index 6f27256..ad6f4f9 100755 --- a/new2/rogue_chat_curses.py +++ b/new2/rogue_chat_curses.py @@ -10,8 +10,6 @@ from plomrogue.mapping import YX from plomrogue.things import ThingBase from plomrogue.misc import quote -# TODO: fix screen refreshes on intermediary map results - def cmd_TURN(game, n): game.turn = n game.things = [] @@ -240,6 +238,10 @@ class TUI: stdscr.addstr(1, self.window_width, 'MODE: ' + self.mode.name) def draw_map(): + player = self.game.get_thing(self.game.player_id, False) + if not player: + # catches race conditions where game.things still empty + return map_lines_split = [] for y in range(self.game.map_size.y): start = self.game.map_size.x * y @@ -256,13 +258,9 @@ class TUI: int(self.game.map_size.x / 2)) window_center = YX(int(self.size.y / 2), int(self.window_width / 2)) - center = map_center + center = player if self.mode.shows_info: center = self.explorer - else: - player = self.game.get_thing(self.game.player_id, False) - if player: - center = player.position offset = center - window_center term_y = max(0, -offset.y) term_x = max(0, -offset.x) @@ -330,15 +328,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_ = ' '