aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/facade/SDLContext.cpp
diff options
context:
space:
mode:
authorheavydemon21 <nielsstunnebrink1@gmail.com>2024-11-14 10:05:08 +0100
committerheavydemon21 <nielsstunnebrink1@gmail.com>2024-11-14 10:05:08 +0100
commit767f40a61952892d60d204ecaaffa07e7e396d28 (patch)
tree383a739a948d56f297c3c83f83960f676d1d2969 /src/crepe/facade/SDLContext.cpp
parent8850ba096b6b4ae2dc3a813620dd35433b3c6c55 (diff)
color paremeter in sprite works
Diffstat (limited to 'src/crepe/facade/SDLContext.cpp')
-rw-r--r--src/crepe/facade/SDLContext.cpp15
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),