From 6c7254378cc159cb48f3d8ee2f0af4b4b6d29ca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Mon, 20 Apr 2026 10:53:57 +0200 Subject: [PATCH] UPD: Move MinimapConfig out of Engine Responsibility, closes #38 --- src/engine/renderer/MasterRenderer.cpp | 14 +++++++------- src/engine/renderer/MasterRenderer.h | 6 +++--- src/engine/renderer/MinimapRenderer.cpp | 2 +- src/engine/renderer/MinimapRenderer.h | 7 +++++-- src/game/GameLayer.cpp | 13 +++++++++++-- src/game/GameLayer.h | 1 + 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/src/engine/renderer/MasterRenderer.cpp b/src/engine/renderer/MasterRenderer.cpp index 810fa76..724b61e 100644 --- a/src/engine/renderer/MasterRenderer.cpp +++ b/src/engine/renderer/MasterRenderer.cpp @@ -7,6 +7,7 @@ #include #include "../core/Application.h" +#include "config/MinimapConfig.h" #include "glm/ext/matrix_clip_space.hpp" void MasterRenderer::render(const Light &light, const Camera &camera) { @@ -29,13 +30,7 @@ void MasterRenderer::render(const Light &light, const Camera &camera) { worldSpriteRenderer->finalize(); worldSprites.clear(); - std::unordered_map colorMapping; - colorMapping[0] = glm::vec3(1.0f, 0.0f, 0.0f); - colorMapping[1] = glm::vec3(0.0f, 1.0f, 0.0f); - colorMapping[2] = glm::vec3(0.0f, 0.0f, 1.0f); - colorMapping[3] = glm::vec3(1.0f, 1.0f, 0.0f); - - minimapRenderer->render(minimapRenderData, colorMapping); + minimapRenderer->render(minimapRenderData); minimapRenderData.clear(); } @@ -67,6 +62,11 @@ void MasterRenderer::submitWorldSprite( worldSprites[texture.get()].push_back(world_sprite_rendering_data); } +void MasterRenderer::configureMinimap(const MinimapConfig &minimapConfig) { + minimapRenderer = std::make_unique(minimapConfig); + RenderTargets::instance().setMinimapTexture(minimapRenderer->getMinimapTexture()); +} + glm::mat4 MasterRenderer::createProjectionMatrix(const float width, const float height) { std::cout << "Creating projection matrix with width: " << width << " and height: " << height << std::endl; diff --git a/src/engine/renderer/MasterRenderer.h b/src/engine/renderer/MasterRenderer.h index ea40022..0501947 100644 --- a/src/engine/renderer/MasterRenderer.h +++ b/src/engine/renderer/MasterRenderer.h @@ -41,8 +41,7 @@ private: public: explicit MasterRenderer(const float width, const float height) : projectionMatrix(createProjectionMatrix(width, height)), entityRenderer(std::make_unique(projectionMatrix)), - terrainRenderer(std::make_unique(projectionMatrix)), worldSpriteRenderer(std::make_unique()), - minimapRenderer(std::make_unique(200,200)) + terrainRenderer(std::make_unique(projectionMatrix)), worldSpriteRenderer(std::make_unique()) { glEnable(GL_CULL_FACE); glCullFace(GL_BACK); @@ -50,7 +49,6 @@ public: EventBus::getInstance().subscribe([this](const WindowResizeEvent& event) { projectionMatrix = createProjectionMatrix(event.updatedWidth, event.updatedHeight); }); - RenderTargets::instance().setMinimapTexture(minimapRenderer->getMinimapTexture()); }; void render(const Light &light, const Camera &camera); @@ -61,6 +59,8 @@ public: shared_ptr &texture); [[nodiscard]] glm::mat4 getProjectionMatrix() const {return projectionMatrix;} + + void configureMinimap(const MinimapConfig& minimapConfig); }; diff --git a/src/engine/renderer/MinimapRenderer.cpp b/src/engine/renderer/MinimapRenderer.cpp index f78f5de..0827af2 100644 --- a/src/engine/renderer/MinimapRenderer.cpp +++ b/src/engine/renderer/MinimapRenderer.cpp @@ -13,7 +13,7 @@ #include "glm/ext/matrix_transform.hpp" -void MinimapRenderer::render(const std::vector &renderData, std::unordered_map colorMapping) { +void MinimapRenderer::render(const std::vector &renderData) { minimapFBO->bind(); glViewport(0,0, width, height); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); diff --git a/src/engine/renderer/MinimapRenderer.h b/src/engine/renderer/MinimapRenderer.h index f4a03e0..595be87 100644 --- a/src/engine/renderer/MinimapRenderer.h +++ b/src/engine/renderer/MinimapRenderer.h @@ -9,17 +9,19 @@ #include "../../game/GameMode.h" #include "components/MinimapRenderData.h" +#include "config/MinimapConfig.h" #include "model/FramebufferObject.h" #include "shaders/MinimapShader.h" class MinimapRenderer { public: - MinimapRenderer(int width, int height): width(width), height(height) { + MinimapRenderer(const MinimapConfig& minimapConfig): width(minimapConfig.resolution), height(minimapConfig.resolution) { minimapFBO = std::make_unique(width, height); + colorMapping = minimapConfig.playerColors; } - void render(const std::vector &renderData, std::unordered_map colorMapping); + void render(const std::vector &renderData); GLuint getMinimapTexture(); @@ -27,6 +29,7 @@ private: std::unique_ptr minimapFBO; MinimapShader minimapShader; int width, height; + std::unordered_map colorMapping; void prepareShader(); void finalizeShader(); diff --git a/src/game/GameLayer.cpp b/src/game/GameLayer.cpp index 5e1eb1b..728ffcc 100644 --- a/src/game/GameLayer.cpp +++ b/src/game/GameLayer.cpp @@ -31,7 +31,8 @@ #include "hexWorld/events/BuildingTypeSelectEvent.h" #include "hexWorld/events/TurnChangedEvent.h" -GameLayer::GameLayer() :texturedModel(0,0) //Platzhalter, echtes Model kommt in onAttach +GameLayer::GameLayer() : texturedModel(0, 0), testEntity(0) +//Platzhalter, echtes Model kommt in onAttach { } @@ -79,7 +80,15 @@ void GameLayer::onAttach() EventBus::getInstance().subscribe([this](const BuildingTypeSelectEvent& event) { gameMode->setActiveBuilding(event.selectedBuildingType); - }); + }); + + std::unordered_map colorMapping; + colorMapping[0] = glm::vec3(1.0f, 0.0f, 0.0f); + colorMapping[1] = glm::vec3(0.0f, 1.0f, 0.0f); + colorMapping[2] = glm::vec3(0.0f, 0.0f, 1.0f); + colorMapping[3] = glm::vec3(1.0f, 1.0f, 0.0f); + MinimapConfig minimapConfig = MinimapConfig(200, colorMapping); + renderer->configureMinimap(minimapConfig); } void GameLayer::onDetach() diff --git a/src/game/GameLayer.h b/src/game/GameLayer.h index f8cb705..4a85bee 100644 --- a/src/game/GameLayer.h +++ b/src/game/GameLayer.h @@ -14,6 +14,7 @@ #include "../engine/renderer/model/TexturedModel.h" #include "../engine/layer/entities/Camera.h" #include "../engine/renderer/MasterRenderer.h" +#include "../engine/renderer/config/MinimapConfig.h" #include "hexWorld/Map.h" #include "hexWorld/ecs/systems/BuildingPlacementSystem.h" #include "hexWorld/ecs/systems/TileHighlightSystem.h"