ADD: Add Stone Resource
This commit is contained in:
parent
5213987719
commit
4ae321db6e
@ -30,6 +30,7 @@ void GameLayer::onAttach()
|
||||
//Map Generation
|
||||
hexModelDefault = std::make_shared<TexturedModel>(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::NONE));
|
||||
hexModelWood = std::make_shared<TexturedModel>(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::WOOD));
|
||||
hexModelStone = std::make_shared<TexturedModel>(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::STONE));
|
||||
map = std::make_unique<Map>();
|
||||
|
||||
AssetManager::loadModel("lowPolyTree", "assets/trees/lowPolyTree.obj", "assets/trees/lowPolyTree.png", loader);
|
||||
@ -72,7 +73,7 @@ void GameLayer::onUpdate()
|
||||
tile.isHighlighted = highlight;
|
||||
}
|
||||
|
||||
std::vector<HexRenderData> terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood);
|
||||
std::vector<HexRenderData> terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood, hexModelStone);
|
||||
|
||||
|
||||
for (auto& renderData : terrainRenderData) {
|
||||
|
||||
@ -34,6 +34,7 @@ private:
|
||||
|
||||
std::shared_ptr<TexturedModel> hexModelDefault;
|
||||
std::shared_ptr<TexturedModel> hexModelWood;
|
||||
std::shared_ptr<TexturedModel> hexModelStone;
|
||||
|
||||
std::vector<std::shared_ptr<Entity>> tileEntities;
|
||||
|
||||
|
||||
@ -54,8 +54,10 @@ TexturedModel HexModelFactory::createTexturedHexModel(Loader &loader, float radi
|
||||
std::shared_ptr<ModelTexture> modelTexture;
|
||||
if (ressourceType == RessourceType::NONE) {
|
||||
modelTexture = std::make_shared<ModelTexture>(loader.loadTextureFromFile("assets/hex/white.png"));
|
||||
} else {
|
||||
} else if (ressourceType == RessourceType::WOOD){
|
||||
modelTexture = std::make_shared<ModelTexture>(loader.loadTextureFromFile("assets/hex/wood/Ground053_1K-JPG_Color.jpg"));
|
||||
} else if (ressourceType == RessourceType::STONE) {
|
||||
modelTexture = std::make_shared<ModelTexture>(loader.loadTextureFromFile("assets/hex/rock/Rocks011_1K-JPG_Color.jpg"));
|
||||
}
|
||||
|
||||
return {std::make_shared<RawModel>(rawModel), std::move(modelTexture)};
|
||||
|
||||
@ -14,7 +14,8 @@
|
||||
|
||||
enum class RessourceType {
|
||||
NONE,
|
||||
WOOD
|
||||
WOOD,
|
||||
STONE
|
||||
};
|
||||
|
||||
struct HexTile {
|
||||
|
||||
@ -4,15 +4,18 @@
|
||||
|
||||
#include "Map.h"
|
||||
|
||||
std::vector<HexRenderData> Map::getTerrainRenderData(const std::shared_ptr<TexturedModel>& hexModel, const std::shared_ptr<TexturedModel>& woodModel) {
|
||||
std::vector<HexRenderData> Map::getTerrainRenderData(const std::shared_ptr<TexturedModel>& hexModel,
|
||||
const std::shared_ptr<TexturedModel>& woodModel, const std::shared_ptr<TexturedModel>& stoneModel) {
|
||||
std::vector<HexRenderData> renderData;
|
||||
renderData.reserve(tiles.size());
|
||||
for (auto& tile : tiles) {
|
||||
HexRenderData data;
|
||||
if (tile.resourceType == RessourceType::WOOD) {
|
||||
data = HexRenderData(woodModel, tile.worldPos, tile.isHighlighted);
|
||||
} else {
|
||||
} else if (tile.resourceType == RessourceType::NONE) {
|
||||
data = HexRenderData(hexModel, tile.worldPos, tile.isHighlighted);
|
||||
} else if (tile.resourceType == RessourceType::STONE) {
|
||||
data =HexRenderData(stoneModel, tile.worldPos, tile.isHighlighted);
|
||||
}
|
||||
renderData.push_back(data);
|
||||
}
|
||||
|
||||
@ -16,7 +16,8 @@ public:
|
||||
std::vector<Area> areas;
|
||||
std::vector<HexTile> tiles;
|
||||
|
||||
std::vector<HexRenderData> getTerrainRenderData(const std::shared_ptr<TexturedModel> &hexModel, const std::shared_ptr<TexturedModel> &woodModel);
|
||||
std::vector<HexRenderData> getTerrainRenderData(const std::shared_ptr<TexturedModel> &hexModel, const std::shared_ptr<TexturedModel> &woodModel, const std::shared_ptr<
|
||||
TexturedModel> &stoneModel);
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -42,6 +42,8 @@ public:
|
||||
ForestTileGenerator forestTileGenerator;
|
||||
const std::vector<std::shared_ptr<Entity>> forestEntities = forestTileGenerator.generateHexTile(random, tile.worldPos, mapEntities);
|
||||
tile.entitiesOnTile = forestEntities;
|
||||
} else if (randomValue < 0.75f) {
|
||||
tile.resourceType = RessourceType::STONE;
|
||||
}
|
||||
map.tiles.push_back(tile);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user