aboutsummaryrefslogtreecommitdiff
path: root/src/crepe
diff options
context:
space:
mode:
Diffstat (limited to 'src/crepe')
-rw-r--r--src/crepe/facade/SDLContext.cpp7
-rw-r--r--src/crepe/facade/SDLContext.h20
-rw-r--r--src/crepe/system/RenderSystem.cpp1
-rw-r--r--src/crepe/system/RenderSystem.h6
4 files changed, 32 insertions, 2 deletions
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp
index 9f60285..c01d118 100644
--- a/src/crepe/facade/SDLContext.cpp
+++ b/src/crepe/facade/SDLContext.cpp
@@ -7,6 +7,7 @@
#include <SDL2/SDL_video.h>
#include <cmath>
#include <cstddef>
+#include <cstdint>
#include <functional>
#include <memory>
#include <stdexcept>
@@ -220,3 +221,9 @@ int SDLContext::get_height(const Texture & ctx) const {
return h;
}
void SDLContext::delay(int ms) const { SDL_Delay(ms); }
+void SDLContext::set_rbg_texture(const std::shared_ptr<Texture>& texture, const uint8_t& r, const uint8_t& g, const uint8_t& b){
+ SDL_SetTextureColorMod(texture->texture.get(), r, g, b);
+}
+void SDLContext::set_alpha_texture(const std::shared_ptr<Texture>& texture, const uint8_t& alpha){
+ SDL_SetTextureAlphaMod(texture->texture.get(), alpha );
+} \ No newline at end of file
diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h
index 6030a6e..6284a9c 100644
--- a/src/crepe/facade/SDLContext.h
+++ b/src/crepe/facade/SDLContext.h
@@ -160,7 +160,27 @@ private:
*/
SDL_Rect get_dst_rect(const Sprite & sprite, const vec2 & pos, const Camera & cam,
const vec2 & cam_pos, const double & img_scale) const;
+/**
+ * \brief changes the texture rbg values with the given parameters
+ * it sets the allowed color inside a image. So if all the colors are 255 (MAXIMUM)
+ * it will show the given texture. however if the one of the colors is reduced it will reduce the
+ *
+ *
+ * \param texture the given texture to adjust
+ * \param r Red color
+ * \param g Green color
+ * \param b Blue color
+ */
+ void set_rbg_texture(const std::shared_ptr<Texture>& texture, const uint8_t& r, const uint8_t& g, const uint8_t& b);
+
+ /**
+ * \brief Modifies the transparency of the given texture
+ *
+ * \param texture modify the given texture alpha channel
+ * \param alpha alpha channel
+ */
+ void set_alpha_texture(const std::shared_ptr<Texture>& texture, const uint8_t& alpha);
private:
//! sdl Window
std::unique_ptr<SDL_Window, std::function<void(SDL_Window *)>> game_window;
diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp
index c196bb1..1883f8f 100644
--- a/src/crepe/system/RenderSystem.cpp
+++ b/src/crepe/system/RenderSystem.cpp
@@ -10,6 +10,7 @@
#include "../api/ParticleEmitter.h"
#include "../api/Sprite.h"
#include "../api/Transform.h"
+#include "../api/Vector2.h"
#include "../facade/SDLContext.h"
#include "RenderSystem.h"
diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h
index e70831e..4d542ec 100644
--- a/src/crepe/system/RenderSystem.h
+++ b/src/crepe/system/RenderSystem.h
@@ -46,7 +46,10 @@ private:
* \brief Renders all the particles on the screen from a given sprite.
*
* \param sprite renders the particles with given texture
- * \param tm the Transform component for scale
+ * \param tm the Transform component for scale. This is not a const reference because each
+ * particle has a position and rotation that needs to overwrite the transform position and
+ * rotation without overwriting the current transform. and because the transform
+ * constructor is now protected i cannot make tmp inside
* \return true if particles have been rendered
*/
bool render_particle(const Sprite & sprite, const Camera & cam, const double & scale);
@@ -68,7 +71,6 @@ private:
RefVector<Sprite> sort(RefVector<Sprite> & objs) const;
/**
- * \todo Include color handling for sprites.
* \todo Add text rendering using SDL_ttf for text components.
* \todo Implement a text component and a button component.
* \todo Consider adding text input functionality.