def update_state(self, gs, pos): self.gameState = gs self.position = pos if pos is not None: exit = self.gameState.get_exit() exitPosn = ("exit", exit.get_position()) output = { "type": "player-update", "layout": JLevel.player_layout(self.gameState.get_current_floor().grid, pos), "position": JLevel.translate_to_xy(pos), "objects": list( map( lambda x: { "type": x[0], "position": JLevel.translate_to_xy(x[1]) }, (self.gameState.get_items() + [exitPosn]))), "actors": list( map( lambda x: { "type": x.ctype.value, "name": x.get_name(), "position": JLevel.translate_to_xy(x.get_char_position()) }, list( filter( lambda y: y.is_alive() and not y.exited, self.gameState.get_players() + self.gameState.get_adversaries())))), "message": self.message } self.message = "" self.server.write_to_id(json.dumps(output), self.ID)
server = ServerRemoteAd(args.address, args.port, args.clients, args.wait, args.levels) path_to_levels = args.levels levels = open(path_to_levels) levels_raw = levels.read() levels.close() parsed_levels = levels_raw.split("\n") print(len(parsed_levels)) floors = [] if len(parsed_levels) == 1 or int(parsed_levels[0]) != len( parsed_levels[1:]): raise ValueError("invalid levels file format") for i in range(1, len(parsed_levels)): level = parsed_levels[i] floors.append(JLevel.floorMaker(json.loads(level))) if args.start > len(floors) or args.start < 1: raise ValueError("invalid floor index") start_level_index = args.start - 1 init_gamestate = GameState(floors) init_gamemanager = GameManager(init_gamestate, server, parsed_levels) identifier = 0 for name, ctype, conn in server.joined_heros: init_gamemanager.register_player_user( RemotePlayer(name, ctype, identifier, server)) server.id_to_conn[identifier] = conn identifier += 1 for name, ctype, conn in server.joined_advers: init_gamemanager.register_player_user( RemoteAdversary(name, ctype, identifier, server))
def test3(self): example = [[WallTile((i, j)) for i in range(10)] for j in range(10)] new = JLevel.player_layout(example, (5, 5)) old = self.player_layout(example, (5, 5))