diff options
| -rw-r--r-- | src/crepe/api/Animator.cpp | 6 | ||||
| -rw-r--r-- | src/crepe/api/Animator.h | 8 | ||||
| -rw-r--r-- | src/crepe/api/Config.h | 2 | ||||
| -rw-r--r-- | src/crepe/api/LoopManager.h | 7 | ||||
| -rw-r--r-- | src/crepe/api/LoopTimer.h | 2 | ||||
| -rw-r--r-- | src/crepe/facade/SDLContext.cpp | 30 | ||||
| -rw-r--r-- | src/crepe/facade/SDLContext.h | 12 | ||||
| -rw-r--r-- | src/crepe/facade/Texture.h | 3 | ||||
| -rw-r--r-- | src/crepe/system/AnimatorSystem.cpp | 2 | 
9 files changed, 26 insertions, 46 deletions
| diff --git a/src/crepe/api/Animator.cpp b/src/crepe/api/Animator.cpp index 644363e..4ce4bf0 100644 --- a/src/crepe/api/Animator.cpp +++ b/src/crepe/api/Animator.cpp @@ -8,10 +8,10 @@  using namespace crepe;  Animator::Animator(game_object_id_t id, Sprite & spritesheet, const ivec2 & single_frame_size, -				   const uvec2 & max_cell_size, const Animator::Data & data) +				   const uvec2 & grid_size, const Animator::Data & data)  	: Component(id),  	  spritesheet(spritesheet), -	  max_cell_size(max_cell_size), +	  grid_size(grid_size),  	  data(data) {  	dbg_trace(); @@ -52,6 +52,6 @@ void Animator::set_anim(int col) {  void Animator::next_anim() {  	Animator::Data & ctx = this->data; -	ctx.row = ctx.row++ % this->max_cell_size.x; +	ctx.row = ctx.row++ % this->grid_size.x;  	this->spritesheet.mask.x = ctx.row * this->spritesheet.mask.w;  } diff --git a/src/crepe/api/Animator.h b/src/crepe/api/Animator.h index 09f0134..5918800 100644 --- a/src/crepe/api/Animator.h +++ b/src/crepe/api/Animator.h @@ -77,14 +77,14 @@ public:  	 * \param spritesheet the reference to the spritesheet  	 * \param single_frame_size the width and height in pixels of a single frame inside the  	 * spritesheet -	 * \param max_cell_size the max rows and columns inside the given spritesheet +	 * \param grid_size the max rows and columns inside the given spritesheet  	 * \param data extra animation data for more control  	 *  	 * This constructor sets up the Animator with the given parameters, and initializes the  	 * animation system.  	 */  	Animator(game_object_id_t id, Sprite & spritesheet, const ivec2 & single_frame_size, -			 const uvec2 & max_cell_size, const Animator::Data & data); +			 const uvec2 & grid_size, const Animator::Data & data);  	~Animator(); // dbg_trace  public: @@ -94,8 +94,8 @@ private:  	//! A reference to the Sprite sheet containing.  	Sprite & spritesheet; -	//! The maximum number of rows and columns size -	const uvec2 max_cell_size; +	//! The maximum number of rows and columns inside the spritesheet +	const uvec2 grid_size;  	//! Uses the spritesheet  	friend AnimatorSystem; diff --git a/src/crepe/api/Config.h b/src/crepe/api/Config.h index 73c9a4e..6472270 100644 --- a/src/crepe/api/Config.h +++ b/src/crepe/api/Config.h @@ -26,7 +26,7 @@ struct Config final {  		 *  		 * Only messages with equal or higher priority than this value will be logged.  		 */ -		Log::Level level = Log::Level::TRACE; +		Log::Level level = Log::Level::INFO;  		/**  		 * \brief Colored log output  		 * diff --git a/src/crepe/api/LoopManager.h b/src/crepe/api/LoopManager.h index bf1a9f9..1bafa56 100644 --- a/src/crepe/api/LoopManager.h +++ b/src/crepe/api/LoopManager.h @@ -102,12 +102,9 @@ private:  	ResourceManager resource_manager{mediator};  	//! Save manager instance  	SaveManager save_manager{mediator}; - +	//! SDLContext instance  	SDLContext sdl_context{mediator}; - -	ResourceManager res_man{mediator}; - -	//! Loop timer \todo no more singletons! +	//! LoopTimer instance  	LoopTimer loop_timer{mediator};  private: diff --git a/src/crepe/api/LoopTimer.h b/src/crepe/api/LoopTimer.h index 2a0b2a5..0a73a4c 100644 --- a/src/crepe/api/LoopTimer.h +++ b/src/crepe/api/LoopTimer.h @@ -5,8 +5,6 @@  namespace crepe { -class Mediator; -  class LoopTimer : public Manager {  public:  	/** diff --git a/src/crepe/facade/SDLContext.cpp b/src/crepe/facade/SDLContext.cpp index 1699b53..1dbd6a5 100644 --- a/src/crepe/facade/SDLContext.cpp +++ b/src/crepe/facade/SDLContext.cpp @@ -11,7 +11,6 @@  #include <cstddef>  #include <cstdint>  #include <functional> -#include <iostream>  #include <memory>  #include <stdexcept> @@ -20,7 +19,6 @@  #include "../api/Config.h"  #include "../api/Sprite.h"  #include "../util/Log.h" -#include "manager/Manager.h"  #include "manager/Mediator.h"  #include "SDLContext.h" @@ -30,9 +28,8 @@  using namespace crepe;  using namespace std; -SDLContext::SDLContext(Mediator & mediator) : Manager(mediator) { +SDLContext::SDLContext(Mediator & mediator) {  	dbg_trace(); -	mediator.sdl_context = *this;  	if (SDL_Init(SDL_INIT_VIDEO) != 0) {  		throw runtime_error(format("SDLContext: SDL_Init error: {}", SDL_GetError()));  	} @@ -60,6 +57,8 @@ SDLContext::SDLContext(Mediator & mediator) : Manager(mediator) {  	if (!(IMG_Init(img_flags) & img_flags)) {  		throw runtime_error("SDLContext: SDL_image could not initialize!");  	} + +	mediator.sdl_context = *this;  }  SDLContext::~SDLContext() { @@ -219,16 +218,6 @@ void SDLContext::present_screen() {  	SDL_RenderPresent(this->game_renderer.get());  } -SDL_Rect * SDLContext::get_src_rect(const Sprite & sprite) { -	if (sprite.mask.w == 0 && sprite.mask.h == 0) return NULL; - -	this->mask.x = sprite.mask.x; -	this->mask.y = sprite.mask.y; -	this->mask.w = sprite.mask.w; -	this->mask.h = sprite.mask.h; -	return &this->mask; -} -  SDL_FRect SDLContext::get_dst_rect(const DestinationRectangleData & ctx) const {  	const Sprite::Data & data = ctx.sprite.data; @@ -267,7 +256,16 @@ void SDLContext::draw(const RenderContext & ctx) {  		= (SDL_RendererFlip) ((SDL_FLIP_HORIZONTAL * data.flip.flip_x)  							  | (SDL_FLIP_VERTICAL * data.flip.flip_y)); -	SDL_Rect * srcrect = this->get_src_rect(ctx.sprite); +	SDL_Rect srcrect; +	SDL_Rect * srcrect_ptr = NULL; +	if (ctx.sprite.mask.w != 0 || ctx.sprite.mask.h != 0) { +		srcrect.w = ctx.sprite.mask.w; +		srcrect.h = ctx.sprite.mask.h; +		srcrect.x = ctx.sprite.mask.x; +		srcrect.y = ctx.sprite.mask.y; +		srcrect_ptr = &srcrect; +	} +  	SDL_FRect dstrect = this->get_dst_rect(SDLContext::DestinationRectangleData{  		.sprite = ctx.sprite,  		.texture = ctx.texture, @@ -279,7 +277,7 @@ void SDLContext::draw(const RenderContext & ctx) {  	double angle = ctx.angle + data.angle_offset;  	this->set_color_texture(ctx.texture, ctx.sprite.data.color); -	SDL_RenderCopyExF(this->game_renderer.get(), ctx.texture.get_img(), srcrect, &dstrect, +	SDL_RenderCopyExF(this->game_renderer.get(), ctx.texture.get_img(), srcrect_ptr, &dstrect,  					  angle, NULL, render_flip);  } diff --git a/src/crepe/facade/SDLContext.h b/src/crepe/facade/SDLContext.h index 36e6e97..46b779f 100644 --- a/src/crepe/facade/SDLContext.h +++ b/src/crepe/facade/SDLContext.h @@ -15,7 +15,6 @@  #include "api/KeyCodes.h"  #include "api/Sprite.h"  #include "api/Transform.h" -#include "manager/Manager.h"  #include "types.h" @@ -31,7 +30,7 @@ class Mediator;   * SDLContext is a singleton that handles the SDL window and renderer, provides methods for   * event handling, and rendering to the screen. It is never used directly by the user   */ -class SDLContext : public Manager { +class SDLContext {  public:  	//! data that the camera component cannot hold  	struct CameraValues { @@ -209,13 +208,6 @@ public:  		const vec2 & pos;  		const double & img_scale;  	}; -	/** -	 * \brief calculates the sqaure size of the image -	 * -	 * \param sprite Reference to the sprite to calculate the rectangle -	 * \return sdl rectangle to draw a src image -	 */ -	SDL_Rect * get_src_rect(const Sprite & sprite);  	/**  	 * \brief calculates the sqaure size of the image for destination @@ -239,8 +231,6 @@ private:  	//! renderer for the crepe engine  	std::unique_ptr<SDL_Renderer, std::function<void(SDL_Renderer *)>> game_renderer; -	SDL_Rect mask = {}; -  	//! black bars rectangle to draw  	SDL_FRect black_bars[2] = {};  }; diff --git a/src/crepe/facade/Texture.h b/src/crepe/facade/Texture.h index 255e14b..cdacac4 100644 --- a/src/crepe/facade/Texture.h +++ b/src/crepe/facade/Texture.h @@ -1,8 +1,5 @@  #pragma once -// FIXME: this header can't be included because this is an API header, and SDL2 development -// headers won't be bundled with crepe. Why is this facade in the API namespace? -  #include <SDL2/SDL_render.h>  #include <memory> diff --git a/src/crepe/system/AnimatorSystem.cpp b/src/crepe/system/AnimatorSystem.cpp index bb22b62..d61ba35 100644 --- a/src/crepe/system/AnimatorSystem.cpp +++ b/src/crepe/system/AnimatorSystem.cpp @@ -23,7 +23,7 @@ void AnimatorSystem::update() {  		int last_frame = ctx.row; -		int cycle_end = (ctx.cycle_end == -1) ? a.max_cell_size.x : ctx.cycle_end; +		int cycle_end = (ctx.cycle_end == -1) ? a.grid_size.x : ctx.cycle_end;  		int total_frames = cycle_end - ctx.cycle_start;  		int curr_frame = static_cast<int>(elapsed_time / frame_duration) % total_frames; |