diff options
| author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-14 20:18:19 +0100 | 
|---|---|---|
| committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-14 20:18:19 +0100 | 
| commit | e25aa67c4263b3a940ae9e92f2fcd31a4486f407 (patch) | |
| tree | 58da786958ce45cdd1b6279772227a288c73c906 /src | |
| parent | 032f8560b91b76cad5f32a6a9ebfc0ac845ed69a (diff) | |
adjusted based on feedback of PR#31
Diffstat (limited to 'src')
| -rw-r--r-- | src/crepe/facade/SDLContext.cpp | 33 | ||||
| -rw-r--r-- | src/crepe/facade/SDLContext.h | 9 | ||||
| -rw-r--r-- | src/crepe/system/RenderSystem.cpp | 6 | ||||
| -rw-r--r-- | src/crepe/system/RenderSystem.h | 6 | 
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(); |