home
·
contact
·
privacy
projects
/
plomrogue2-experiments
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve SSL negotation.
[plomrogue2-experiments]
/
new2
/
rogue_chat_curses.py
diff --git
a/new2/rogue_chat_curses.py
b/new2/rogue_chat_curses.py
index ad9dba169620299ecfd78e598664ce520f556894..c8a17c888388dcfb9317896a7d830ac2bd00b9cf 100755
(executable)
--- a/
new2/rogue_chat_curses.py
+++ b/
new2/rogue_chat_curses.py
@@
-39,8
+39,12
@@
class PlomSocketClient(PlomSocket):
self.socket.close()
def run(self):
self.socket.close()
def run(self):
+ import ssl
try:
for msg in self.recv():
try:
for msg in self.recv():
+ if msg == 'NEED_SSL':
+ self.socket = ssl.wrap_socket(self.socket)
+ continue
self.recv_handler(msg)
except BrokenSocketConnection:
pass # we assume socket will be known as dead by now
self.recv_handler(msg)
except BrokenSocketConnection:
pass # we assume socket will be known as dead by now
@@
-139,8
+143,13
@@
def cmd_ANNOTATION(game, position, msg):
game.tui.do_refresh = True
cmd_ANNOTATION.argtypes = 'yx_tuple:nonneg string'
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,
class Game(GameBase):
commands = {'LOGIN_OK': cmd_LOGIN_OK,
+ 'PONG': cmd_PONG,
'CHAT': cmd_CHAT,
'PLAYER_ID': cmd_PLAYER_ID,
'TURN': cmd_TURN,
'CHAT': cmd_CHAT,
'PLAYER_ID': cmd_PLAYER_ID,
'TURN': cmd_TURN,
@@
-208,19
+217,19
@@
class TUI:
self.login_name = None
self.switch_mode('waiting_for_server')
self.keys = {
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_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_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',
'square_move_up': 'w',
'square_move_left': 'a',
'square_move_down': 's',
@@
-296,6
+305,7
@@
class TUI:
def loop(self, stdscr):
import time
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 safe_addstr(y, x, line):
if y < self.size.y - 1 or x + len(line) < self.size.x:
@@
-394,10
+404,15
@@
class TUI:
def draw_info():
if not self.game.turn_complete:
return
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:
if self.explorer in self.game.portals:
- info = 'PORTAL: ' + self.game.portals[self.explorer] + '\n'
+ info
+
= 'PORTAL: ' + self.game.portals[self.explorer] + '\n'
else:
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:
if self.explorer in self.game.info_db:
info += 'ANNOTATION: ' + self.game.info_db[self.explorer]
else:
@@
-480,13
+495,20
@@
class TUI:
draw_map()
curses.curs_set(False) # hide cursor
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()
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:
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
if self.do_refresh:
draw_screen()
self.do_refresh = False
@@
-516,9
+538,9
@@
class TUI:
self.input_ = ""
elif self.mode == self.mode_chat and key == '\n':
if self.input_[0] == '/':
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')
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.switch_mode('study')
elif self.input_ == '/help':
self.help()
@@
-584,11
+606,8
@@
class TUI:
self.send('TASK:FLATTEN_SURROUNDINGS')
elif key in self.movement_keys:
self.send('TASK:MOVE ' + self.movement_keys[key])
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')
elif self.mode == self.mode_edit:
self.send('TASK:WRITE ' + key)
self.switch_mode('play')
-TUI('
127.0.0.1
:5000')
+TUI('
localhost
:5000')