diff options
author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-12-17 13:31:34 +0100 |
---|---|---|
committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-12-17 13:31:34 +0100 |
commit | 24578c9afb61ae65b300dd7fb645220e133089be (patch) | |
tree | c6451ea01a56f0bde33a803ea37169f59d0fc41d /src/crepe/system | |
parent | bcaee968761c1d2e85c20925b237480c87da9747 (diff) | |
parent | 707db8c94b6bb3921105f40658aab13511d8df07 (diff) |
Merge branch 'wouter/text-component' into niels/UI
Diffstat (limited to 'src/crepe/system')
-rw-r--r-- | src/crepe/system/RenderSystem.cpp | 31 | ||||
-rw-r--r-- | src/crepe/system/RenderSystem.h | 10 |
2 files changed, 39 insertions, 2 deletions
diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index 4a70843..7d6a31b 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -2,12 +2,15 @@ #include <cassert> #include <cmath> #include <functional> +#include <optional> #include <stdexcept> #include <vector> #include "../api/Camera.h" #include "../api/ParticleEmitter.h" #include "../api/Sprite.h" +#include "../api/Text.h" +#include "../facade/Font.h" #include "../api/Transform.h" #include "../facade/SDLContext.h" #include "../facade/Texture.h" @@ -140,8 +143,15 @@ void RenderSystem::render() { this->update_camera(); RefVector<Sprite> sprites = mgr.get_components_by_type<Sprite>(); + ResourceManager & resource_manager = this->mediator.resource_manager; RefVector<Sprite> sorted_sprites = this->sort(sprites); + RefVector<Text> text_components = mgr.get_components_by_type<Text>(); + for(Text& text : text_components){ + const Transform & transform + = mgr.get_components_by_id<Transform>(text.game_object_id).front().get(); + this->render_text(text,transform); + } for (const Sprite & sprite : sorted_sprites) { if (!sprite.active) continue; const Transform & transform @@ -152,5 +162,26 @@ void RenderSystem::render() { if (rendered_particles) continue; this->render_normal(sprite, transform); + + + } + } +void RenderSystem::render_text(Text & text, const Transform & tm) { + SDLContext & ctx = this->mediator.sdl_context; + + // Check if font is available in text + if (!text.font.has_value()) { + } + + ResourceManager & resource_manager = this->mediator.resource_manager; + + if (text.font.has_value()) { + const Asset& font_asset = text.font.value(); + const Font & res = resource_manager.get<Font>(font_asset); + } +} + + + diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h index ae55404..3476765 100644 --- a/src/crepe/system/RenderSystem.h +++ b/src/crepe/system/RenderSystem.h @@ -10,7 +10,7 @@ namespace crepe { class Camera; class Sprite; class Transform; - +class Text; /** * \brief Manages rendering operations for all game objects. * @@ -52,7 +52,13 @@ private: * \return true if particles have been rendered */ bool render_particle(const Sprite & sprite, const double & scale); - + /** + * \brief Renders all Text components + * + * \param text The text component to be rendered. + * \param tm the Transform component that holds the position,rotation and scale + */ + void render_text(Text & text, const Transform & tm); /** * \brief renders a sprite with a Transform component on the screen * |