aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorheavydemon21 <nielsstunnebrink1@gmail.com>2024-12-02 18:59:43 +0100
committerheavydemon21 <nielsstunnebrink1@gmail.com>2024-12-02 18:59:43 +0100
commit9e1d1f0952ed09ee4b0c241fad3d0d66b380b1a3 (patch)
treea8a8c15fce530f700a49a3a1104a06ee0d460b76
parent47e6d987ced269ec16ea455706513025cb9c50c5 (diff)
fixed the color functionality
-rw-r--r--src/crepe/facade/SDLContext.cpp20
-rw-r--r--src/crepe/facade/SDLContext.h10
2 files changed, 21 insertions, 9 deletions
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp
index c01d118..cfe79d2 100644
--- a/src/crepe/facade/SDLContext.cpp
+++ b/src/crepe/facade/SDLContext.cpp
@@ -19,6 +19,7 @@
#include "../util/Log.h"
#include "SDLContext.h"
+#include "api/Color.h"
#include "types.h"
using namespace crepe;
@@ -131,10 +132,16 @@ void SDLContext::draw(const RenderContext & ctx) {
= (SDL_RendererFlip) ((SDL_FLIP_HORIZONTAL * ctx.sprite.flip.flip_x)
| (SDL_FLIP_VERTICAL * ctx.sprite.flip.flip_y));
+ const Color & color = ctx.sprite.color;
+
SDL_Rect srcrect = this->get_src_rect(ctx.sprite);
SDL_Rect dstrect
= this->get_dst_rect(ctx.sprite, ctx.pos, ctx.cam, ctx.cam_pos, ctx.scale);
+ this->set_rbg_texture(ctx.sprite.sprite_image, color.r, color.g, color.b);
+ this->set_alpha_texture(ctx.sprite.sprite_image, color.a);
+
+
SDL_RenderCopyEx(this->game_renderer.get(), ctx.sprite.sprite_image.texture.get(),
&srcrect, &dstrect, ctx.angle, NULL, render_flip);
}
@@ -221,9 +228,12 @@ 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_rbg_texture(const 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 Texture & texture,
+ const uint8_t & alpha) {
+ SDL_SetTextureAlphaMod(texture.texture.get(), alpha);
}
-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 6284a9c..8d63c43 100644
--- a/src/crepe/facade/SDLContext.h
+++ b/src/crepe/facade/SDLContext.h
@@ -12,6 +12,7 @@
#include "../api/Camera.h"
#include "../api/Sprite.h"
+#include "api/Texture.h"
#include "types.h"
namespace crepe {
@@ -160,7 +161,7 @@ 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
@@ -171,8 +172,8 @@ private:
* \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);
-
+ void set_rbg_texture(const Texture & texture, const uint8_t & r,
+ const uint8_t & g, const uint8_t & b);
/**
* \brief Modifies the transparency of the given texture
@@ -180,7 +181,8 @@ private:
* \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);
+ void set_alpha_texture(const Texture & texture, const uint8_t & alpha);
+
private:
//! sdl Window
std::unique_ptr<SDL_Window, std::function<void(SDL_Window *)>> game_window;