Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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
    }