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 //Map Generation
hexModelDefault = std::make_shared<TexturedModel>(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::NONE)); hexModelDefault = std::make_shared<TexturedModel>(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::NONE));
hexModelWood = std::make_shared<TexturedModel>(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::WOOD)); 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>(); map = std::make_unique<Map>();
AssetManager::loadModel("lowPolyTree", "assets/trees/lowPolyTree.obj", "assets/trees/lowPolyTree.png", loader); AssetManager::loadModel("lowPolyTree", "assets/trees/lowPolyTree.obj", "assets/trees/lowPolyTree.png", loader);
@ -72,7 +73,7 @@ void GameLayer::onUpdate()
tile.isHighlighted = highlight; tile.isHighlighted = highlight;
} }
std::vector<HexRenderData> terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood); std::vector<HexRenderData> terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood, hexModelStone);
for (auto& renderData : terrainRenderData) { for (auto& renderData : terrainRenderData) {

View File

@ -34,6 +34,7 @@ private:
std::shared_ptr<TexturedModel> hexModelDefault; std::shared_ptr<TexturedModel> hexModelDefault;
std::shared_ptr<TexturedModel> hexModelWood; std::shared_ptr<TexturedModel> hexModelWood;
std::shared_ptr<TexturedModel> hexModelStone;
std::vector<std::shared_ptr<Entity>> tileEntities; 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; std::shared_ptr<ModelTexture> modelTexture;
if (ressourceType == RessourceType::NONE) { if (ressourceType == RessourceType::NONE) {
modelTexture = std::make_shared<ModelTexture>(loader.loadTextureFromFile("assets/hex/white.png")); 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")); 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)}; return {std::make_shared<RawModel>(rawModel), std::move(modelTexture)};

View File

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

View File

@ -4,15 +4,18 @@
#include "Map.h" #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; std::vector<HexRenderData> renderData;
renderData.reserve(tiles.size()); renderData.reserve(tiles.size());
for (auto& tile : tiles) { for (auto& tile : tiles) {
HexRenderData data; HexRenderData data;
if (tile.resourceType == RessourceType::WOOD) { if (tile.resourceType == RessourceType::WOOD) {
data = HexRenderData(woodModel, tile.worldPos, tile.isHighlighted); data = HexRenderData(woodModel, tile.worldPos, tile.isHighlighted);
} else { } else if (tile.resourceType == RessourceType::NONE) {
data = HexRenderData(hexModel, tile.worldPos, tile.isHighlighted); data = HexRenderData(hexModel, tile.worldPos, tile.isHighlighted);
} else if (tile.resourceType == RessourceType::STONE) {
data =HexRenderData(stoneModel, tile.worldPos, tile.isHighlighted);
} }
renderData.push_back(data); renderData.push_back(data);
} }

View File

@ -16,7 +16,8 @@ public:
std::vector<Area> areas; std::vector<Area> areas;
std::vector<HexTile> tiles; 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; ForestTileGenerator forestTileGenerator;
const std::vector<std::shared_ptr<Entity>> forestEntities = forestTileGenerator.generateHexTile(random, tile.worldPos, mapEntities); const std::vector<std::shared_ptr<Entity>> forestEntities = forestTileGenerator.generateHexTile(random, tile.worldPos, mapEntities);
tile.entitiesOnTile = forestEntities; tile.entitiesOnTile = forestEntities;
} else if (randomValue < 0.75f) {
tile.resourceType = RessourceType::STONE;
} }
map.tiles.push_back(tile); map.tiles.push_back(tile);
} }