143 lines
4.2 KiB
C++
143 lines
4.2 KiB
C++
#pragma once
|
|
|
|
#include <SDL2/SDL.h>
|
|
#include "utils.h"
|
|
#include "asset.h"
|
|
#include "const.h"
|
|
#include "item_tracker.h"
|
|
#include "actor_moving_platform.h"
|
|
#include "actor_diamond.h"
|
|
#include <string>
|
|
#include <vector>
|
|
#include <sstream>
|
|
#include <fstream>
|
|
|
|
#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<int> tilemap_l0; // Indice de los tiles a dibujar de la capa 0 en la habitación
|
|
std::vector<int> tilemap_l1; // Indice de los tiles a dibujar de la capa 1 en la habitación
|
|
std::vector<int> 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<Actor *> 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
|
|
bool bgScroll; // Indica si la capa de fondo se mueve
|
|
ItemTracker *itemTracker; // Objeto que gestiona los items que ya se han recogido
|
|
int counter; // Contador para lo que se necesite
|
|
|
|
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 todos los elementos del mapa
|
|
void render();
|
|
|
|
// Dibuja la capa 1
|
|
void renderLayer0();
|
|
|
|
// Dibuja la capa 1
|
|
void renderLayer1();
|
|
|
|
// Dibuja los actores
|
|
void renderActors();
|
|
|
|
// 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
|