X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=client-curses.py;h=9a8178d9d133ad5b366a43819aa5fbefd5a2588e;hb=6237227d771fa5b4cfbcdffb8c74457e2d406bb1;hp=e942dd8fbc349b0e6571e97cad9995c8ba87327f;hpb=362ee8651a250d99377806c33451ceb5b027c606;p=plomrogue2-experiments diff --git a/client-curses.py b/client-curses.py index e942dd8..9a8178d 100755 --- a/client-curses.py +++ b/client-curses.py @@ -13,13 +13,12 @@ class Map(game_common.Map): map_height = len(map_lines) if map_height > view_height and center_y > view_height / 2: if center_y > map_height - view_height / 2: - map_lines = map_lines[map_height - view_height:] + map_lines[:] = map_lines[map_height - view_height:] else: - start = center_y - int(view_height / 2) + start = center_y - int(view_height / 2) - 1 map_lines[:] = map_lines[start:start + view_height] - def x_cut(self, map_lines, center_x, view_width): - map_width = len(map_lines[0]) + def x_cut(self, map_lines, center_x, view_width, map_width): if map_width > view_width and center_x > view_width / 2: if center_x > map_width - view_width / 2: cut_start = map_width - view_width @@ -45,7 +44,7 @@ class MapSquare(Map): map_lines = map_string_to_lines(map_string) self.y_cut(map_lines, center[0], size[0]) - self.x_cut(map_lines, center[1], size[1]) + self.x_cut(map_lines, center[1], size[1], self.size[1]) return map_lines @@ -54,7 +53,7 @@ class MapHex(Map): def format_to_view(self, map_string, center, size): def map_string_to_lines(map_string): - map_view_chars = [' '] + map_view_chars = ['0'] x = 0 y = 0 for c in map_string: @@ -65,12 +64,16 @@ class MapHex(Map): x = 0 y += 1 if y % 2 == 0: - map_view_chars += [' '] + map_view_chars += ['0'] + if y % 2 == 0: + map_view_chars = map_view_chars[:-1] + map_view_chars = map_view_chars[:-1] return ''.join(map_view_chars).split('\n') map_lines = map_string_to_lines(map_string) self.y_cut(map_lines, center[0], size[0]) - self.x_cut(map_lines, center[1] * 2, size[1]) + map_width = self.size[1] * 2 + 1 + self.x_cut(map_lines, center[1] * 2, size[1], map_width) return map_lines @@ -105,6 +108,21 @@ class Game(game_common.CommonCommandsMixin): } self.do_quit = False + def get_command_signature(self, command_name): + method_candidate = 'cmd_' + command_name + method = None + argtypes = '' + if hasattr(self, method_candidate): + method = getattr(self, method_candidate) + if hasattr(method, 'argtypes'): + argtypes = method.argtypes + return method, argtypes + + def get_string_options(self, string_option_type): + if string_option_type == 'geometry': + return self.map_manager.get_map_geometries() + return None + def handle_input(self, msg): if msg == 'BYE': self.do_quit = True @@ -117,8 +135,8 @@ class Game(game_common.CommonCommandsMixin): else: command() except ArgError as e: - self.log('ARGUMENT ERROR: ' + msg + '\n' + str(e)) - self.to_update['log'] = True + self.log('ARGUMENT ERROR: ' + msg + '\n' + str(e)) + self.to_update['log'] = True def log(self, msg): """Prefix msg plus newline to self.log_text.""" @@ -147,6 +165,8 @@ class Game(game_common.CommonCommandsMixin): """Set self.turn to n, empty self.things.""" self.world.turn = n self.world.things = [] + self.to_update['turn'] = False + self.to_update['map'] = False cmd_NEW_TURN.argtypes = 'int:nonneg' def cmd_VISIBLE_MAP_LINE(self, y, terrain_line): @@ -380,26 +400,26 @@ class TUI: elif map_mode: if type(self.game.world.map_) == MapSquare: if key == 'a': - plom_socket_io.send(self.socket, 'MOVE LEFT') + plom_socket_io.send(self.socket, 'TASK:MOVE LEFT') elif key == 'd': - plom_socket_io.send(self.socket, 'MOVE RIGHT') + plom_socket_io.send(self.socket, 'TASK:MOVE RIGHT') elif key == 'w': - plom_socket_io.send(self.socket, 'MOVE UP') + plom_socket_io.send(self.socket, 'TASK:MOVE UP') elif key == 's': - plom_socket_io.send(self.socket, 'MOVE DOWN') + plom_socket_io.send(self.socket, 'TASK:MOVE DOWN') elif type(self.game.world.map_) == MapHex: if key == 'w': - plom_socket_io.send(self.socket, 'MOVE UPLEFT') + plom_socket_io.send(self.socket, 'TASK:MOVE UPLEFT') elif key == 'e': - plom_socket_io.send(self.socket, 'MOVE UPRIGHT') + plom_socket_io.send(self.socket, 'TASK:MOVE UPRIGHT') if key == 's': - plom_socket_io.send(self.socket, 'MOVE LEFT') + plom_socket_io.send(self.socket, 'TASK:MOVE LEFT') elif key == 'd': - plom_socket_io.send(self.socket, 'MOVE RIGHT') + plom_socket_io.send(self.socket, 'TASK:MOVE RIGHT') if key == 'x': - plom_socket_io.send(self.socket, 'MOVE DOWNLEFT') + plom_socket_io.send(self.socket, 'TASK:MOVE DOWNLEFT') elif key == 'c': - plom_socket_io.send(self.socket, 'MOVE DOWNRIGHT') + plom_socket_io.send(self.socket, 'TASK:MOVE DOWNRIGHT') else: if len(key) == 1 and key in ASCII_printable and \ len(self.to_send) < len(self.edit):