yupplemayham/YuppleMayham/include/gameplay/map.h
2025-01-28 16:07:58 -05:00

40 lines
No EOL
930 B
C++

#ifndef _H_MAP_H
#define _H_MAP_H
#include <vector>
#include <memory>
#include "graphics/instancedraw.h"
class Shader;
class Camera;
class ResourceManager;
struct MapData;
struct TileSetData;
class Map
{
public:
Map(std::shared_ptr<MapData> mapData, const std::shared_ptr<Shader>& shader, std::shared_ptr<ResourceManager> resourceManager);
const std::vector<std::vector<int>> getCollisionMap() const { return collisionMap; }
void render(const std::shared_ptr<Camera>& camera);
private:
void loadMap();
void createCollisionMap();
int getTileSetIndex(int id) const;
std::shared_ptr<MapData> mapData;
std::vector<std::shared_ptr<TileSetData>> tileSetData;
std::vector<std::shared_ptr<TileTextureInstance>> instanceHandles;
std::shared_ptr<Shader> shader;
std::vector<std::vector<std::vector<int>>> tileIds;
std::vector<std::vector<int>> collisionMap;
std::vector<std::vector<InstanceData>> tileData;
};
#endif