aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crepe/api/Sprite.cpp4
-rw-r--r--src/crepe/api/Texture.cpp11
-rw-r--r--src/crepe/api/Texture.h13
-rw-r--r--src/crepe/facade/SDLContext.cpp32
-rw-r--r--src/crepe/facade/SDLContext.h29
-rw-r--r--src/crepe/system/RenderSystem.cpp3
-rw-r--r--src/crepe/system/RenderSystem.h1
7 files changed, 29 insertions, 64 deletions
diff --git a/src/crepe/api/Sprite.cpp b/src/crepe/api/Sprite.cpp
index 8647794..0a2ad4c 100644
--- a/src/crepe/api/Sprite.cpp
+++ b/src/crepe/api/Sprite.cpp
@@ -22,8 +22,8 @@ Sprite::Sprite(game_object_id_t id, Texture & image, const Color & color,
dbg_trace();
- this->mask.w = sprite_image.get_width();
- this->mask.h = sprite_image.get_height();
+ this->mask.w = sprite_image.get_size().x;
+ this->mask.h = sprite_image.get_size().y;
this->aspect_ratio = static_cast<double>(this->mask.w) / this->mask.h;
}
diff --git a/src/crepe/api/Texture.cpp b/src/crepe/api/Texture.cpp
index e43bdaa..c23b91e 100644
--- a/src/crepe/api/Texture.cpp
+++ b/src/crepe/api/Texture.cpp
@@ -2,6 +2,7 @@
#include "../util/Log.h"
#include "Asset.h"
+#include "types.h"
#include "Texture.h"
using namespace crepe;
@@ -31,11 +32,7 @@ void Texture::load(const Asset & res) {
this->texture = ctx.texture_from_path(res.get_path());
}
-int Texture::get_width() const {
- if (this->texture == nullptr) return 0;
- return SDLContext::get_instance().get_width(*this);
-}
-int Texture::get_height() const {
- if (this->texture == nullptr) return 0;
- return SDLContext::get_instance().get_height(*this);
+ivec2 Texture::get_size() const {
+ if (this->texture == nullptr) return {};
+ return SDLContext::get_instance().get_size(*this);
}
diff --git a/src/crepe/api/Texture.h b/src/crepe/api/Texture.h
index 7206a66..1817910 100644
--- a/src/crepe/api/Texture.h
+++ b/src/crepe/api/Texture.h
@@ -8,6 +8,7 @@
#include <memory>
#include "Asset.h"
+#include "types.h"
namespace crepe {
@@ -42,16 +43,10 @@ public:
Texture & operator=(const Texture &) = delete;
/**
- * \brief Gets the width of the texture.
- * \return Width of the texture in pixels.
+ * \brief Gets the width and height of the texture.
+ * \return Width and height of the texture in pixels.
*/
- int get_width() const;
-
- /**
- * \brief Gets the height of the texture.
- * \return Height of the texture in pixels.
- */
- int get_height() const;
+ ivec2 get_size() const;
private:
/**
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp
index fe6aa45..8d8a87d 100644
--- a/src/crepe/facade/SDLContext.cpp
+++ b/src/crepe/facade/SDLContext.cpp
@@ -134,15 +134,11 @@ 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);
-
+ this->set_color_texture(ctx.sprite.sprite_image, ctx.sprite.color);
SDL_RenderCopyEx(this->game_renderer.get(), ctx.sprite.sprite_image.texture.get(),
&srcrect, &dstrect, ctx.angle, NULL, render_flip);
}
@@ -219,23 +215,17 @@ SDLContext::texture_from_path(const std::string & path) {
SDL_SetTextureBlendMode(img_texture.get(), SDL_BLENDMODE_BLEND);
return img_texture;
}
-int SDLContext::get_width(const Texture & ctx) const {
- int w;
- SDL_QueryTexture(ctx.texture.get(), NULL, NULL, &w, NULL);
- return w;
-}
-int SDLContext::get_height(const Texture & ctx) const {
- int h;
- SDL_QueryTexture(ctx.texture.get(), NULL, NULL, NULL, &h);
- return h;
-}
-void SDLContext::delay(int ms) const { SDL_Delay(ms); }
-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);
+
+ivec2 SDLContext::get_size(const Texture & ctx){
+ ivec2 size;
+ SDL_QueryTexture(ctx.texture.get(), NULL, NULL, &size.x, &size.y);
+ return size;
}
-void SDLContext::set_alpha_texture(const Texture & texture, const uint8_t & alpha) {
- SDL_SetTextureAlphaMod(texture.texture.get(), alpha);
+void SDLContext::delay(int ms) const { SDL_Delay(ms); }
+
+void SDLContext::set_color_texture(const Texture & texture, const Color & color) {
+ SDL_SetTextureColorMod(texture.texture.get(), color.r, color.g, color.b);
+ SDL_SetTextureAlphaMod(texture.texture.get(), color.a);
}
diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h
index e128bfd..e49ca78 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/Color.h"
#include "api/Texture.h"
#include "types.h"
@@ -105,18 +106,11 @@ private:
std::unique_ptr<SDL_Texture, std::function<void(SDL_Texture *)>>
texture_from_path(const std::string & path);
/**
- * \brief Gets the width of a texture.
+ * \brief Gets the size of a texture.
* \param texture Reference to the Texture object.
- * \return Width of the texture as an integer.
+ * \return Width and height of the texture as an integer.
*/
- int get_width(const Texture & texture) const;
-
- /**
- * \brief Gets the height of a texture.
- * \param texture Reference to the Texture object.
- * \return Height of the texture as an integer.
- */
- int get_height(const Texture & texture) const;
+ ivec2 get_size(const Texture & ctx);
private:
//! Will use draw,clear_screen, present_screen, camera.
@@ -165,20 +159,9 @@ private:
* \brief Set an additional color value multiplied into render copy operations.
*
* \param texture the given texture to adjust
- * \param r Red color
- * \param g Green color
- * \param b Blue color
- */
- void set_rbg_texture(const Texture & texture, const uint8_t & r, const uint8_t & g,
- const uint8_t & b);
-
- /**
- * \brief Set an additional alpha value multiplied into render copy operations.
- *
- * \param texture modify the given texture alpha channel
- * \param alpha alpha channel
+ * \param color the color data for the texture
*/
- void set_alpha_texture(const Texture & texture, const uint8_t & alpha);
+ void set_color_texture(const Texture & texture, const Color & color);
private:
//! sdl Window
diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp
index 1883f8f..11c9669 100644
--- a/src/crepe/system/RenderSystem.cpp
+++ b/src/crepe/system/RenderSystem.cpp
@@ -10,7 +10,6 @@
#include "../api/ParticleEmitter.h"
#include "../api/Sprite.h"
#include "../api/Transform.h"
-#include "../api/Vector2.h"
#include "../facade/SDLContext.h"
#include "RenderSystem.h"
@@ -71,7 +70,7 @@ bool RenderSystem::render_particle(const Sprite & sprite, const Camera & cam,
bool rendering_particles = false;
for (const ParticleEmitter & em : emitters) {
- if (!(&em.data.sprite == &sprite)) continue;
+ if (&em.data.sprite != &sprite) continue;
rendering_particles = true;
if (!em.active) continue;
diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h
index 4d542ec..096d058 100644
--- a/src/crepe/system/RenderSystem.h
+++ b/src/crepe/system/RenderSystem.h
@@ -77,6 +77,7 @@ private:
*/
private:
+ // FIXME: retrieve sdlcontext via mediator after #PR57
SDLContext & context = SDLContext::get_instance();
//! camera postion in the current scene