aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorheavydemon21 <nielsstunnebrink1@gmail.com>2024-11-14 20:18:19 +0100
committerheavydemon21 <nielsstunnebrink1@gmail.com>2024-11-14 20:18:19 +0100
commite25aa67c4263b3a940ae9e92f2fcd31a4486f407 (patch)
tree58da786958ce45cdd1b6279772227a288c73c906
parent032f8560b91b76cad5f32a6a9ebfc0ac845ed69a (diff)
adjusted based on feedback of PR#31
-rw-r--r--src/crepe/facade/SDLContext.cpp33
-rw-r--r--src/crepe/facade/SDLContext.h9
-rw-r--r--src/crepe/system/RenderSystem.cpp6
-rw-r--r--src/crepe/system/RenderSystem.h6
4 files changed, 22 insertions, 32 deletions
diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp
index cacf238..febbe4b 100644
--- a/src/crepe/facade/SDLContext.cpp
+++ b/src/crepe/facade/SDLContext.cpp
@@ -7,10 +7,9 @@
#include <cmath>
#include <cstddef>
#include <functional>
-#include <iostream>
#include <memory>
+#include <stdexcept>
#include <string>
-#include <utility>
#include "../api/Sprite.h"
#include "../api/Texture.h"
@@ -32,31 +31,23 @@ SDLContext::SDLContext() {
// FIXME: read window defaults from config manager
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
- // FIXME: throw exception
- std::cerr << "SDL could not initialize! SDL_Error: " << SDL_GetError()
- << std::endl;
- return;
+ throw std::runtime_error("SDL could not initialize!");
}
+
SDL_Window * tmp_window = SDL_CreateWindow(
"Crepe Game Engine", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
this->viewport.w, this->viewport.h, 0);
if (!tmp_window) {
- // FIXME: throw exception
- std::cerr << "Window could not be created! SDL_Error: "
- << SDL_GetError() << std::endl;
- return;
+ throw std::runtime_error("Window could not be created!");
}
+
this->game_window
= {tmp_window, [](SDL_Window * window) { SDL_DestroyWindow(window); }};
SDL_Renderer * tmp_renderer = SDL_CreateRenderer(
this->game_window.get(), -1, SDL_RENDERER_ACCELERATED);
if (!tmp_renderer) {
- // FIXME: throw exception
- std::cerr << "Renderer could not be created! SDL_Error: "
- << SDL_GetError() << std::endl;
- SDL_DestroyWindow(this->game_window.get());
- return;
+ throw std::runtime_error("Renderer could not be created!");
}
this->game_renderer = {tmp_renderer, [](SDL_Renderer * renderer) {
@@ -65,9 +56,7 @@ SDLContext::SDLContext() {
int img_flags = IMG_INIT_PNG;
if (!(IMG_Init(img_flags) & img_flags)) {
- // FIXME: throw exception
- std::cout << "SDL_image could not initialize! SDL_image Error: "
- << IMG_GetError() << std::endl;
+ throw std::runtime_error("SDL_image could not initialize!");
}
}
@@ -145,8 +134,8 @@ void SDLContext::draw(const Sprite & sprite, const Transform & transform,
void SDLContext::camera(const Camera & cam) {
this->viewport.w = static_cast<int>(cam.aspect_width);
this->viewport.h = static_cast<int>(cam.aspect_height);
- this->viewport.x = static_cast<int>(cam.x) - (SCREEN_WIDTH / 2);
- this->viewport.y = static_cast<int>(cam.y) - (SCREEN_HEIGHT / 2);
+ this->viewport.x = static_cast<int>(cam.x) - (this->viewport.w / 2);
+ this->viewport.y = static_cast<int>(cam.y) - (this->viewport.h / 2);
SDL_SetRenderDrawColor(this->game_renderer.get(), cam.bg_color.r,
cam.bg_color.g, cam.bg_color.b, cam.bg_color.a);
@@ -181,12 +170,12 @@ SDLContext::texture_from_path(const std::string & path) {
return img_texture;
}
-int SDLContext::get_width(const Texture & ctx) {
+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) {
+int SDLContext::get_height(const Texture & ctx) const {
int h;
SDL_QueryTexture(ctx.texture.get(), NULL, NULL, NULL, &h);
return h;
diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h
index c4392bd..0614036 100644
--- a/src/crepe/facade/SDLContext.h
+++ b/src/crepe/facade/SDLContext.h
@@ -10,11 +10,6 @@
#include "../api/Sprite.h"
#include "../api/Transform.h"
#include "api/Camera.h"
-#include "api/Vector2.h"
-
-// FIXME: this needs to be removed
-const int SCREEN_WIDTH = 640;
-const int SCREEN_HEIGHT = 480;
namespace crepe {
@@ -109,14 +104,14 @@ private:
* \param texture Reference to the Texture object.
* \return Width of the texture as an integer.
*/
- int get_width(const Texture &) ;
+ int get_width(const 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 &) ;
+ int get_height(const Texture &) const;
private:
//! Will use draw,clear_screen, present_screen, camera.
diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp
index 17a2337..6ecd604 100644
--- a/src/crepe/system/RenderSystem.cpp
+++ b/src/crepe/system/RenderSystem.cpp
@@ -85,13 +85,13 @@ void RenderSystem::render() {
auto sprites = mgr.get_components_by_type<Sprite>();
for (const Sprite & sprite : sprites) {
if (!sprite.active) continue;
- auto transform = mgr.get_components_by_id<Transform>(sprite.game_object_id);
+ auto transform = mgr.get_components_by_id<Transform>(sprite.game_object_id).front().get();
- bool rendered_particles = this->render_particle(sprite, transform[0].get());
+ bool rendered_particles = this->render_particle(sprite, transform);
if (rendered_particles) continue;
- this->render_normal(sprite, transform[0].get());
+ this->render_normal(sprite, transform);
}
}
diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h
index 6a87eec..3d6286f 100644
--- a/src/crepe/system/RenderSystem.h
+++ b/src/crepe/system/RenderSystem.h
@@ -31,6 +31,12 @@ public:
*/
void update() override;
+
+ RenderSystem(const RenderSystem &) = delete;
+ RenderSystem(RenderSystem &&) = delete;
+ RenderSystem & operator=(const RenderSystem &) = delete;
+ RenderSystem & operator=(RenderSystem &&) = delete;
+
private:
// Private constructor to enforce singleton pattern.
RenderSystem();