Files
volcano_2022/source/map.h

75 lines
2.1 KiB
C++

#pragma once
#include "animatedsprite.h"
#include "asset.h"
#include "jail_audio.h"
#include "utils.h"
#ifndef MAP_H
#define MAP_H
// The player
class Map
{
private:
SDL_Renderer *renderer; // El renderizador donde se dibuja todo
LTexture *texture_tile; // Textura con los gráficos de los tiles
LTexture *texture_actor; // Textura con los gráficos de los actores
LTexture *texture_bg; // Textura con los gráficos de fondo
Asset *asset; // Objeto con los ficheros de recursos
AnimatedSprite *sprite_tile; // Sprite de los tiles del mapa
AnimatedSprite *sprite_actor; // Sprite de los actores
Sprite *background; // Fondo de la pantalla
SDL_Rect src_rect; // Ni puta idea
SDL_Rect dst_rect; // Ni puta idea
Uint8 *tile; // Vector con los tiles
Uint8 *actor; // Vector con los acores
Uint8 w; // Anchura en habitaciones del mapa
Uint8 h; // Altura en habitaciones del mapa
Uint8 room; // Habitación actual del mapa
std::string mapfile; // Ruta con el fichero del mapa
JA_Music music; // La musica del mapa
Uint8 zone; // Zona del mapa
public:
// Constructor
Map(SDL_Renderer *renderer, std::string file, Asset *asset);
// Destructor
~Map();
// Carga el mapa a partir de un fichero
void loadFromFile(std::string file);
// Actualiza todas las variables
void update();
// Dibuja el objeto
void render();
// Obtiene el valor del tile de la habitación actual
Uint8 getTile(int x, int y);
// Obtiene el tipo de tile segun su ubicación en la textura
Uint8 readMapTile(Uint8 x, Uint8 y);
// Obtiene el valor del actor en esa ubicación
Uint8 getActor(Uint8 x, Uint8 y);
// Establece el valor del actor en esa ubicación
void setActor(Uint8 x, Uint8 y, Uint8 valor);
// Carga las texturas del mapa en función de la zona
void setMapGFX(Uint8 zone);
// Carga las musica del juego en función de la zona
void setMapMusic(Uint8 zone);
// Comprueba si se ha cambiado de zona
bool checkZoneChange(int room);
// Cambia la zona del mapa
void setZone(int room);
};
#endif