diff options
author | JAROWMR <jarorutjes07@gmail.com> | 2024-11-10 19:19:25 +0100 |
---|---|---|
committer | JAROWMR <jarorutjes07@gmail.com> | 2024-11-10 19:19:25 +0100 |
commit | bb0dba6b2a84a8bcbb1e07a14f015f73408d460c (patch) | |
tree | 0d669bc5e88544749964d4639d27575545fbabe1 /src/crepe/system/RenderSystem.h | |
parent | 46716724df7697fa789329a62f7a5444ceed5585 (diff) | |
parent | 3a690f7d0c91b92b9cdfe62f44dba8db90142abc (diff) |
Merge branch 'master' of github.com:lonkaars/crepe into jaro/particle-system-master
Diffstat (limited to 'src/crepe/system/RenderSystem.h')
-rw-r--r-- | src/crepe/system/RenderSystem.h | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h index 4b910a4..70db21a 100644 --- a/src/crepe/system/RenderSystem.h +++ b/src/crepe/system/RenderSystem.h @@ -1,17 +1,64 @@ #pragma once +#include "api/Camera.h" + #include "System.h" namespace crepe { +/** + * \class RenderSystem + * \brief Manages rendering operations for all game objects. + * + * RenderSystem is responsible for rendering sprites, clearing and presenting the screen, + * and managing the active camera. It functions as a singleton, providing centralized + * rendering services for the application. + */ class RenderSystem : public System { public: + /** + * \brief Gets the singleton instance of RenderSystem. + * \return Reference to the RenderSystem instance. + */ static RenderSystem & get_instance(); - void update(); + + /** + * \brief Updates the RenderSystem for the current frame. + * This method is called to perform all rendering operations for the current game frame. + */ + void update() override; private: + // Private constructor to enforce singleton pattern. RenderSystem(); ~RenderSystem(); + + //! Clears the screen in preparation for rendering. + void clear_screen() const; + + //! Presents the rendered frame to the display. + void present_screen() const; + + //! Updates the active camera used for rendering. + void update_camera(); + + //! Renders all active sprites to the screen. + void render_sprites() const; + + /** + * \todo Include color handling for sprites. + * \todo Implement particle emitter rendering with sprites. + * \todo Add text rendering using SDL_ttf for text components. + * \todo Implement a text component and a button component. + * \todo Ensure each sprite is checked for active status before rendering. + * \todo Sort all layers by order before rendering. + * \todo Consider adding text input functionality. + */ + +private: + //! Pointer to the current active camera for rendering + Camera * curr_cam = nullptr; + // TODO: needs a better solution }; } // namespace crepe |