ADD: Add Stone Resource

This commit is contained in:
sebastian 2026-02-08 15:01:14 +01:00
parent 5213987719
commit 4ae321db6e
7 changed files with 17 additions and 6 deletions

View File

@ -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) {

View File

@ -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;

View File

@ -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)};

View File

@ -14,7 +14,8 @@
enum class RessourceType {
NONE,
WOOD
WOOD,
STONE
};
struct HexTile {

View File

@ -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);
}

View File

@ -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);
};

View File

@ -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);
}