diff options
author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-14 10:05:08 +0100 |
---|---|---|
committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-14 10:05:08 +0100 |
commit | 767f40a61952892d60d204ecaaffa07e7e396d28 (patch) | |
tree | 383a739a948d56f297c3c83f83960f676d1d2969 /src/crepe/facade/SDLContext.cpp | |
parent | 8850ba096b6b4ae2dc3a813620dd35433b3c6c55 (diff) |
color paremeter in sprite works
Diffstat (limited to 'src/crepe/facade/SDLContext.cpp')
-rw-r--r-- | src/crepe/facade/SDLContext.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 378ccee..4bc4cf8 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -6,10 +6,12 @@ #include <SDL2/SDL_video.h> #include <cmath> #include <cstddef> +#include <cstdint> #include <functional> #include <iostream> #include <memory> #include <string> +#include <sys/types.h> #include <utility> #include "../api/Sprite.h" @@ -110,6 +112,13 @@ void SDLContext::present_screen() { SDL_RenderPresent(this->game_renderer.get()); } +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 ); +} + void SDLContext::draw(const Sprite & sprite, const Transform & transform, const Camera & cam) { @@ -117,6 +126,11 @@ void SDLContext::draw(const Sprite & sprite, const Transform & transform, = (SDL_RendererFlip) ((SDL_FLIP_HORIZONTAL * sprite.flip.flip_x) | (SDL_FLIP_VERTICAL * sprite.flip.flip_y)); + sprite.sprite_image->texture.get(); + + this->set_rbg_texture(sprite.sprite_image, sprite.color.r, sprite.color.g, sprite.color.b); + this->set_alpha_texture(sprite.sprite_image, sprite.color.a); + double adjusted_x = (transform.position.x - cam.x) * cam.zoom; double adjusted_y = (transform.position.y - cam.y) * cam.zoom; double adjusted_w = sprite.sprite_rect.w * transform.scale * cam.zoom; @@ -129,6 +143,7 @@ void SDLContext::draw(const Sprite & sprite, const Transform & transform, .h = sprite.sprite_rect.h, }; + SDL_Rect dstrect = { .x = static_cast<int>(adjusted_x), .y = static_cast<int>(adjusted_y), |