X-Git-Url: https://plomlompom.com/repos/foo.html?a=blobdiff_plain;f=new2%2Frogue_chat_curses.py;h=15d0053a8bca770f385aa9e8a70a2f707f415c55;hb=621e33482140c399f883b6e858f45e9c04471729;hp=ad9dba169620299ecfd78e598664ce520f556894;hpb=ebce2a63305565ce32f336881b49a428fc5d91d3;p=plomrogue2-experiments diff --git a/new2/rogue_chat_curses.py b/new2/rogue_chat_curses.py index ad9dba1..15d0053 100755 --- a/new2/rogue_chat_curses.py +++ b/new2/rogue_chat_curses.py @@ -139,8 +139,13 @@ def cmd_ANNOTATION(game, position, msg): game.tui.do_refresh = True cmd_ANNOTATION.argtypes = 'yx_tuple:nonneg string' +def cmd_PONG(game): + pass +cmd_PONG.argtypes = '' + class Game(GameBase): commands = {'LOGIN_OK': cmd_LOGIN_OK, + 'PONG': cmd_PONG, 'CHAT': cmd_CHAT, 'PLAYER_ID': cmd_PLAYER_ID, 'TURN': cmd_TURN, @@ -208,19 +213,19 @@ class TUI: self.login_name = None self.switch_mode('waiting_for_server') self.keys = { - 'switch_to_chat': 'C', - 'switch_to_play': 'P', - 'switch_to_annotate': 'E', - 'switch_to_portal': 'p', + 'switch_to_chat': 't', + 'switch_to_play': 'p', + 'switch_to_annotate': 'm', + 'switch_to_portal': 'P', 'switch_to_study': '?', - 'switch_to_edit': 'E', - 'flatten': 'f', + 'switch_to_edit': 'm', + 'flatten': 'F', 'hex_move_upleft': 'w', 'hex_move_upright': 'e', 'hex_move_right': 'd', - 'hex_move_downright': 'c', - 'hex_move_downleft': 'x', - 'hex_move_left': 's', + 'hex_move_downright': 'x', + 'hex_move_downleft': 'y', + 'hex_move_left': 'a', 'square_move_up': 'w', 'square_move_left': 'a', 'square_move_down': 's', @@ -296,6 +301,7 @@ class TUI: def loop(self, stdscr): import time + import datetime def safe_addstr(y, x, line): if y < self.size.y - 1 or x + len(line) < self.size.x: @@ -394,10 +400,15 @@ class TUI: def draw_info(): if not self.game.turn_complete: return + pos_i = self.explorer.y * self.game.map_geometry.size.x + self.explorer.x + info = 'TERRAIN: %s\n' % self.game.map_content[pos_i] + for t in self.game.things: + if t.position == self.explorer: + info += 'PLAYER @: %s\n' % t.name if self.explorer in self.game.portals: - info = 'PORTAL: ' + self.game.portals[self.explorer] + '\n' + info += 'PORTAL: ' + self.game.portals[self.explorer] + '\n' else: - info = 'PORTAL: (none)\n' + info += 'PORTAL: (none)\n' if self.explorer in self.game.info_db: info += 'ANNOTATION: ' + self.game.info_db[self.explorer] else: @@ -480,13 +491,20 @@ class TUI: draw_map() curses.curs_set(False) # hide cursor + curses.use_default_colors(); stdscr.timeout(10) reset_screen_size() self.explorer = YX(0, 0) self.input_ = '' input_prompt = '> ' connect() + last_ping = datetime.datetime.now() + interval = datetime.timedelta(seconds=30) while True: + now = datetime.datetime.now() + if now - last_ping > interval: + self.send('PING') + last_ping = now if self.do_refresh: draw_screen() self.do_refresh = False @@ -516,9 +534,9 @@ class TUI: self.input_ = "" elif self.mode == self.mode_chat and key == '\n': if self.input_[0] == '/': - if self.input_ in {'/P', '/play'}: + if self.input_ in {'/' + self.keys['switch_to_play'], '/play'}: self.switch_mode('play') - elif self.input_ in {'/?', '/study'}: + elif self.input_ in {'/' + self.keys['switch_to_study'], '/study'}: self.switch_mode('study') elif self.input_ == '/help': self.help() @@ -584,9 +602,6 @@ class TUI: self.send('TASK:FLATTEN_SURROUNDINGS') elif key in self.movement_keys: self.send('TASK:MOVE ' + self.movement_keys[key]) - elif key == 'q': - self.log_msg('quitting') - self.send('QUIT') elif self.mode == self.mode_edit: self.send('TASK:WRITE ' + key) self.switch_mode('play')