def change(self, destination=None): self.player = self.owner.player if not self.items: game_map = GameMap(40, 40, "hub") game_map.owner = self game_map.generate_hub() self.items[game_map.name] = game_map self.current_map = game_map if destination in self.items: game_map = self.items[destination] game_map.place_entities() self.current_map = game_map self.player.fighter = self.player.player.avatar["player"] self.player.light_source.initialize_fov(game_map) self.player.light_source.radius = self.player.fighter.fov self.player.light_source.recompute_fov(self.player.x, self.player.y) if destination == "hub": self.player.fighter = self.player.player.avatar["player"] self.player.char = self.player.player.char["player"] # player.color = None else: self.make_map(destination) self.owner.ui.side_panel.draw_content()
def make_map(self, destination): # Set debug level if destination == "debug": game_map = GameMap(20, 20, "debug") game_map.owner = self # game_map.generate_trees(0, 0, game_map.width, # game_map.height, 20, block_sight=True) # game_map.generate_forest() # game_map.generate_cavern() game_map.place_entities() # Initialize field of view self.player.light_source.initialize_fov(game_map) elif destination == "dream": level_params = self.generate_level_params() level_data = MenuData(name="choose_level", params=level_params) self.owner.menus.create_or_show_menu(level_data) if not self.owner.menus.choose_level.event: return self.world_tendency = self.params["modifier"] game_map = GameMap(width=50, height=50, name="dream", title=self.params["title"]) game_map.owner = self game_map.generate_map() self.items[game_map.name] = game_map self.current_map = game_map game_map.place_entities() # Initialize field of view self.player.light_source.initialize_fov(game_map) self.player.light_source.radius = self.player.fighter.fov self.player.light_source.recompute_fov(self.player.x, self.player.y)
def init_new_game(): game_world = GameWorld() player_fighter_component = Fighter(hp=200, defense=2, attack_value=20) player = Entity(int((constants.WORLD_WIDTH * constants.MAP_WIDTH / 2) + constants.MAP_WIDTH / 2), int((constants.WORLD_HEIGHT * constants.MAP_HEIGHT / 2) + constants.MAP_HEIGHT / 2), '@', tcod.white, constants.PLAYER_NAME, RenderOrder.ENTITY, fighter=player_fighter_component) px, py = game_world.get_chunk_pos_from_player_pos(player.x, player.y) game_world.chunks[px][py].property = ChunkProperty.START game_map = GameMap(constants.MAP_WIDTH, constants.MAP_HEIGHT, game_world.chunks[px][py]) print(f"PLAYER POS: {player.x}, {player.y}") print(f"CURRENT CHUNK: {px} {py}") entities = [player] close_entities = [] game_map.place_entities(px, py, entities) return { 'game_world': game_world, 'player': player, 'game_map': game_map, 'entities': entities, 'close_entities': close_entities }