#pragma once #include #include "utils.h" #include "asset.h" #include "const.h" #include "item_tracker.h" #include "actor_moving_platform.h" #include "actor_diamond.h" #include #include #include #include #ifndef MAP_H #define MAP_H enum e_tile_map { nothing, wall, passable }; enum e_border { b_none, b_top, b_bottom, b_left, b_right }; // The player class Map { private: Asset *asset; // Objeto con la ruta a todos los ficheros de recursos SDL_Renderer *renderer; // El renderizador de la ventana std::string name; // Identificador de la habitación std::string room_up; // Identificador de la habitación que se encuentra arriba std::string room_down; // Identificador de la habitación que se encuentra abajp std::string room_left; // Identificador de la habitación que se encuentra a la izquierda std::string room_right; // Identificador de la habitación que se encuentra a la derecha std::string enemy_file; // Fichero con los enemigos para la habitación std::string tileset_img; // Imagen con los graficos para la habitación std::vector tilemap_l0; // Indice de los tiles a dibujar de la capa 0 en la habitación std::vector tilemap_l1; // Indice de los tiles a dibujar de la capa 1 en la habitación std::vector collisionmap; // Indice con los tipos de tile de la habitación LTexture *texture_tile; // Textura con los graficos de los tiles habitación SDL_Texture *map_layer0; // Textura para dibujar la capa 0 del mapa de la habitación SDL_Texture *map_layer1; // Textura para dibujar la capa 1 del mapa de la habitación std::vector actors; // Listado con los actores de la habitación color_t bgColor1; // Color superior del degradado de fondo color_t bgColor2; // Color inferior del degradado de fondo ItemTracker *itemTracker; // Objeto que gestiona los items que ya se han recogido int tile_size; // Ancho del tile en pixels int map_width; // Ancho del mapa en tiles int map_height; // Alto del mapa en tiles int tileset_width; // Ancho del tileset en tiles // Carga las variables desde un fichero bool load(std::string file); // Asigna variables a partir de dos cadenas bool setVars(std::string var, std::string value); // Asigna variables a una estructura actor_t bool setActor(actor_t *actor, SDL_Point *p1, SDL_Point *p2, std::string var, std::string value); // Pinta el mapa de la habitación en la textura void fillMapTexture(); public: // Constructor Map(std::string file, SDL_Renderer *renderer, Asset *asset, ItemTracker *itemTracker); // Destructor ~Map(); // Actualiza todas las variables void update(); // Dibuja el objeto void render(); // Devuelve el tipo de tile que hay en un punto e_tile_map getTile(SDL_Point p); // Devuelve el valor de la variable int getTileSize(); // Devuelve el valor de los bordes de la zona de juego int getPlayArea(e_border border); // Devuelve el nombre del fichero de la habitación en funcion del borde std::string getRoomFileName(e_border border); // Devuelve el nombre del fichero de la habitación std::string getName(); // Indica si hay colision con un actor a partir de un rectangulo int actorCollision(SDL_Rect &rect); // Indica si hay colision con un actor a partir de un punto int actorCollision(SDL_Point &p); // Devuelve el nombre del actor a pàrtir de un índice int getActorName(int index); // Devuelve el rectangulo de colisión SDL_Rect getActorCollider(int index); // Devuelve el desplazamiento relativo del actor int getActorIncX(int index); // Elimina un actor bool deleteActor(int index); // Coge un item void getItem(int index); // Obtiene el valor de la variable std::string getEnemyFile(); // Recarga las texturas void reLoadTextures(); }; #endif