/********************\ | Copyright 2024, | | Ulysse Cura | \********************/ ///////////////////////////////////////////////////////////////////////// // // // Declaration de la classe TileMap, elle sert a charger tout ce // // qui est en rapport avec une map. (tileMap, entités, hitbox, etc...) // // // ///////////////////////////////////////////////////////////////////////// #ifndef MAP_HPP #define MAP_HPP #include <SDL2/SDL.h> #include <string> #include <unordered_map> #include <vector> #include "Vector2D.hpp" #define TILE_SIZE 16 #define TILEMAP_SCALE 2 using std::string, std::vector, std::unordered_map; using TileID = int; struct NextMap { string path; Vector2D<float> playerInitPos; }; class TileMap { public: TileMap() = default; ~TileMap(); void LoadTileMap(const string &); void LoadNextMap(int); void LoadTileset(const string &); void draw(int); Vector2D<float> getPlayerInitPos(); int tileMapWidth, tileMapHeight; int worldWidth, worldHeight; vector<int> hitboxes; private: void m_draw(const vector<TileID> &); vector<TileID> m_tilesLayer1; vector<TileID> m_tilesLayer2; vector<TileID> m_tilesLayer3; int m_tilesetWidth, m_tilesetHeight; SDL_Texture *m_tileset; Vector2D<float> m_playerInitPos; unordered_map<int, NextMap> m_nextMaps; }; #endif