40 lines
No EOL
930 B
C++
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 |