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,
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',
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:
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:
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
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()
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')