diff --git a/src/game/GameLayer.cpp b/src/game/GameLayer.cpp index c6c6041..33f24c1 100644 --- a/src/game/GameLayer.cpp +++ b/src/game/GameLayer.cpp @@ -30,6 +30,7 @@ void GameLayer::onAttach() //Map Generation hexModelDefault = std::make_shared(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::NONE)); hexModelWood = std::make_shared(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::WOOD)); + hexModelStone = std::make_shared(HexModelFactory::createTexturedHexModel(loader, 10.0f, RessourceType::STONE)); map = std::make_unique(); AssetManager::loadModel("lowPolyTree", "assets/trees/lowPolyTree.obj", "assets/trees/lowPolyTree.png", loader); @@ -72,7 +73,7 @@ void GameLayer::onUpdate() tile.isHighlighted = highlight; } - std::vector terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood); + std::vector terrainRenderData = map->getTerrainRenderData(hexModelDefault, hexModelWood, hexModelStone); for (auto& renderData : terrainRenderData) { diff --git a/src/game/GameLayer.h b/src/game/GameLayer.h index e5ccafc..eaf2990 100644 --- a/src/game/GameLayer.h +++ b/src/game/GameLayer.h @@ -34,6 +34,7 @@ private: std::shared_ptr hexModelDefault; std::shared_ptr hexModelWood; + std::shared_ptr hexModelStone; std::vector> tileEntities; diff --git a/src/game/hexWorld/HexModelFactory.cpp b/src/game/hexWorld/HexModelFactory.cpp index 5049a10..ef94280 100644 --- a/src/game/hexWorld/HexModelFactory.cpp +++ b/src/game/hexWorld/HexModelFactory.cpp @@ -54,8 +54,10 @@ TexturedModel HexModelFactory::createTexturedHexModel(Loader &loader, float radi std::shared_ptr modelTexture; if (ressourceType == RessourceType::NONE) { modelTexture = std::make_shared(loader.loadTextureFromFile("assets/hex/white.png")); - } else { + } else if (ressourceType == RessourceType::WOOD){ modelTexture = std::make_shared(loader.loadTextureFromFile("assets/hex/wood/Ground053_1K-JPG_Color.jpg")); + } else if (ressourceType == RessourceType::STONE) { + modelTexture = std::make_shared(loader.loadTextureFromFile("assets/hex/rock/Rocks011_1K-JPG_Color.jpg")); } return {std::make_shared(rawModel), std::move(modelTexture)}; diff --git a/src/game/hexWorld/HexTile.h b/src/game/hexWorld/HexTile.h index 45d6b75..230ee47 100644 --- a/src/game/hexWorld/HexTile.h +++ b/src/game/hexWorld/HexTile.h @@ -14,7 +14,8 @@ enum class RessourceType { NONE, - WOOD + WOOD, + STONE }; struct HexTile { diff --git a/src/game/hexWorld/Map.cpp b/src/game/hexWorld/Map.cpp index 790679e..fb2b153 100644 --- a/src/game/hexWorld/Map.cpp +++ b/src/game/hexWorld/Map.cpp @@ -4,15 +4,18 @@ #include "Map.h" -std::vector Map::getTerrainRenderData(const std::shared_ptr& hexModel, const std::shared_ptr& woodModel) { +std::vector Map::getTerrainRenderData(const std::shared_ptr& hexModel, + const std::shared_ptr& woodModel, const std::shared_ptr& stoneModel) { std::vector 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); } diff --git a/src/game/hexWorld/Map.h b/src/game/hexWorld/Map.h index 4bd0484..b6d02b2 100644 --- a/src/game/hexWorld/Map.h +++ b/src/game/hexWorld/Map.h @@ -16,7 +16,8 @@ public: std::vector areas; std::vector tiles; - std::vector getTerrainRenderData(const std::shared_ptr &hexModel, const std::shared_ptr &woodModel); + std::vector getTerrainRenderData(const std::shared_ptr &hexModel, const std::shared_ptr &woodModel, const std::shared_ptr< + TexturedModel> &stoneModel); }; diff --git a/src/game/hexWorld/MapGenerator.h b/src/game/hexWorld/MapGenerator.h index 2afc880..5226947 100644 --- a/src/game/hexWorld/MapGenerator.h +++ b/src/game/hexWorld/MapGenerator.h @@ -42,6 +42,8 @@ public: ForestTileGenerator forestTileGenerator; const std::vector> forestEntities = forestTileGenerator.generateHexTile(random, tile.worldPos, mapEntities); tile.entitiesOnTile = forestEntities; + } else if (randomValue < 0.75f) { + tile.resourceType = RessourceType::STONE; } map.tiles.push_back(tile); }