Files
volcano_2022/source/map.h

70 lines
1.9 KiB
C++

#pragma once
#include <SDL2/SDL.h>
#include "utils.h"
#include "asset.h"
#include "const.h"
#include <string>
#include <vector>
#include <sstream>
#include <fstream>
#ifndef MAP_H
#define MAP_H
enum t_tile_map
{
nothing,
wall,
travessable
};
// 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 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 tileset_img; // Imagen con los graficos para la habitación
std::string bg_img; // Imagen con los graficos para la habitación
std::vector<int> tilemap; // Indice de los tiles a dibujar en la habitación
LTexture *texture_tile; // Textura con los graficos de los tiles habitación
LTexture *texture_bg; // Textura con los graficos de fondo de la habitación
SDL_Texture *map_texture; // Textura para dibujar el mapa de la habitación
int tile_width; // Ancho del tile en pixels
int map_width; // Alto del mapa en tiles
int map_height; // Ancho del mapa 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);
// Pinta el mapa de la habitación en la textura
void fillMapTexture();
public:
// Constructor
Map(std::string file, SDL_Renderer *renderer, Asset *asset);
// Destructor
~Map();
// Actualiza todas las variables
void update();
// Dibuja el objeto
void render();
// Devuelve el tipo de tile que hay en un punto
t_tile_map getTile(SDL_Point p);
};
#endif