diff options
| author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-10-08 15:43:45 +0200 | 
|---|---|---|
| committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-10-08 15:43:45 +0200 | 
| commit | afdd12277a43d3ad7755f028e85c569dece84f0b (patch) | |
| tree | 1b619bbd2c95cb676c53f2410a94dd16b5fb54fe /src/crepe/api | |
| parent | 035444c1b7ee2e76c235e16eafd6115e849eec73 (diff) | |
rendering system
Diffstat (limited to 'src/crepe/api')
| -rw-r--r-- | src/crepe/api/CMakeLists.txt | 5 | ||||
| -rw-r--r-- | src/crepe/api/Color.cpp | 53 | ||||
| -rw-r--r-- | src/crepe/api/Color.h | 34 | ||||
| -rw-r--r-- | src/crepe/api/Point.h | 14 | ||||
| -rw-r--r-- | src/crepe/api/Sprite.h | 28 | ||||
| -rw-r--r-- | src/crepe/api/Transform.h | 13 | ||||
| -rw-r--r-- | src/crepe/api/game.cpp | 26 | ||||
| -rw-r--r-- | src/crepe/api/game.h | 16 | ||||
| -rw-r--r-- | src/crepe/api/spritesheet.cpp | 6 | ||||
| -rw-r--r-- | src/crepe/api/spritesheet.h | 4 | 
10 files changed, 175 insertions, 24 deletions
| diff --git a/src/crepe/api/CMakeLists.txt b/src/crepe/api/CMakeLists.txt index 96b55cf..dcac0ae 100644 --- a/src/crepe/api/CMakeLists.txt +++ b/src/crepe/api/CMakeLists.txt @@ -4,6 +4,7 @@ target_sources(crepe PUBLIC  	resource_manager.cpp  	Resource.cpp  	game.cpp +	Color.cpp  )  target_sources(crepe PUBLIC FILE_SET HEADERS FILES @@ -15,4 +16,8 @@ target_sources(crepe PUBLIC FILE_SET HEADERS FILES  	resource_manager.h  	Component.h  	AudioSource.h +	Sprite.h +	Color.h +	Transform.h +	Point.h  ) diff --git a/src/crepe/api/Color.cpp b/src/crepe/api/Color.cpp new file mode 100644 index 0000000..c73ce6c --- /dev/null +++ b/src/crepe/api/Color.cpp @@ -0,0 +1,53 @@ + + +#include "Color.h" + + +using namespace crepe::api; + +Color Color::white 	= Color(255,255,255,0); +Color Color::red 	= Color(255,0,0,0); +Color Color::green 	= Color(0,255,0,0); +Color Color::blue 	= Color(0,0,255,0); +Color Color::black 	= Color(0,0,0,0); +Color Color::cyan 	= Color(0,255,255,0); +Color Color::yellow	= Color(255,255,0,0); +Color Color::magenta= Color(255,0,255,0); + +Color::Color(double red, double green, double blue, double alpha){ +	this->a = alpha; +	this->r = red; +	this->g = green; +	this->b = blue; +}; + +const Color& Color::get_white(){ +	return Color::white; +}; + +const Color& Color::get_red(){ +	return Color::red; +}; +const Color& Color::get_green(){ +	return Color::green; +}; +const Color& Color::get_blue(){ +	return Color::blue; +}; + +const Color& Color::get_black(){ +	return Color::black; +}; + +const Color& Color::get_cyan(){ +	return Color::cyan; +}; + +const Color& Color::get_yellow(){ +	return Color::yellow; +}; + +const Color& Color::get_magenta(){ +	return Color::magenta; +}; + diff --git a/src/crepe/api/Color.h b/src/crepe/api/Color.h new file mode 100644 index 0000000..207434e --- /dev/null +++ b/src/crepe/api/Color.h @@ -0,0 +1,34 @@ +#pragma once + +namespace crepe::api { + +class Color { + +public: +	Color(double red, double green, double blue, double alpha); +	static const Color & get_white(); +	static const Color & get_red(); +	static const Color & get_green(); +	static const Color & get_blue(); +	static const Color & get_cyan(); +	static const Color & get_magenta(); +	static const Color & get_yellow(); +	static const Color & get_black(); + +private: +	double r; +	double g; +	double b; +	double a; + +	static Color white; +	static Color red; +	static Color green; +	static Color blue; +	static Color cyan; +	static Color magenta; +	static Color yellow; +	static Color black; +}; + +} // namespace crepe::api diff --git a/src/crepe/api/Point.h b/src/crepe/api/Point.h new file mode 100644 index 0000000..463aa7c --- /dev/null +++ b/src/crepe/api/Point.h @@ -0,0 +1,14 @@ +#pragma once + + + +namespace crepe::api { + +class Point { +public: +	double x; +	double y; +}; + + +} diff --git a/src/crepe/api/Sprite.h b/src/crepe/api/Sprite.h new file mode 100644 index 0000000..84eeb83 --- /dev/null +++ b/src/crepe/api/Sprite.h @@ -0,0 +1,28 @@ +#pragma once + +#include "Component.h" +#include "api/Color.h" +#include "facade/Texture.h" +#include <cstdint> + + +namespace crepe::api { + +struct flip_settings{ +	bool flipX : 1; +	bool flipY : 1; +}; +class Sprite : public Component { +	 +public: +	Sprite(crepe::Texture& image, const Color& color, const flip_settings& flip ) :  sprite_image(&image), color(color), flip(flip){} +	crepe::Texture* sprite_image; +	Color color; +	flip_settings flip; +	uint8_t sortingLayer; +	uint8_t orderInLayer; + + +}; + +} diff --git a/src/crepe/api/Transform.h b/src/crepe/api/Transform.h new file mode 100644 index 0000000..d4dfafc --- /dev/null +++ b/src/crepe/api/Transform.h @@ -0,0 +1,13 @@ +#pragma once + +#include "api/Component.h" +#include "api/Point.h" +namespace crepe::api { + +class Transform : public Component { +public: +	Point position; // Translation (shift) +	double rotation; // Rotation, in radians +	double scale; // Multiplication factoh +}; +} // namespace crepe::api diff --git a/src/crepe/api/game.cpp b/src/crepe/api/game.cpp index 02a0132..01920a9 100644 --- a/src/crepe/api/game.cpp +++ b/src/crepe/api/game.cpp @@ -2,17 +2,29 @@  #include "game.h" -#include "api/spritesheet.h" +#include "core/renderSystem.h"  #include "facade/SdlContext.h" -#include "facade/Texture.h" -#include <vector> -void game::render(std::vector<crepe::Texture*> & draw, std::vector<crepe::api::Spritesheet*> & ss){ -	auto& ctx = crepe::SdlContext::get_instance(); - -	ctx.loop(*draw[0], *ss[0]); +Engine::Engine(int windowHeight, int window_with){ +	crepe::SdlContext& ctx = crepe::SdlContext::get_instance();  } +void Engine::loop() { + +	bool running = true; +	crepe::SdlContext& ctx = crepe::SdlContext::get_instance(); +	RenderSystem rendering; + +	while (running) { +		ctx.handleEvents(running); + +		ctx.clearScreen(); + +		rendering.render(); + +		ctx.presentScreen(); +	} +} diff --git a/src/crepe/api/game.h b/src/crepe/api/game.h index 7cde954..64027fa 100644 --- a/src/crepe/api/game.h +++ b/src/crepe/api/game.h @@ -1,15 +1,17 @@  #pragma once -#include "api/spritesheet.h" -#include "facade/Texture.h" -#include <vector> -class game { +class Engine{  public: -	game(){} -	~game(){} +	Engine(int windowWith, int windowHeight); +	~Engine() = default; -	void render(std::vector<crepe::Texture*>&, std::vector<crepe::api::Spritesheet*>&); +	void loop(); + + +private: +	int window_height; +	int window_width;  }; diff --git a/src/crepe/api/spritesheet.cpp b/src/crepe/api/spritesheet.cpp index 93a2b65..7f5da38 100644 --- a/src/crepe/api/spritesheet.cpp +++ b/src/crepe/api/spritesheet.cpp @@ -30,12 +30,6 @@ void Spritesheet::select_sprite(const int x, const int y){  	m_clip.y = y * m_clip.h;  } -void Spritesheet::draw_selected_sprite(const int x, const int y){ -	auto& ctx = SdlContext::get_instance(); -	SDL_Rect tmp = { x, y, m_clip.w, m_clip.h}; -	SDL_RenderCopy(ctx.m_game_renderer, this->m_spritesheet, &this->m_clip, &tmp); -} -  void Spritesheet::load(std::unique_ptr<api::Resource> res, const int row, const int col){  	auto& ctx = SdlContext::get_instance(); diff --git a/src/crepe/api/spritesheet.h b/src/crepe/api/spritesheet.h index 7f46296..503dcef 100644 --- a/src/crepe/api/spritesheet.h +++ b/src/crepe/api/spritesheet.h @@ -24,14 +24,10 @@ private:  	void load(std::unique_ptr<api::Resource> res, const int row, const int col);;  	SDL_Texture* get_texture() const; - -  private:  	SDL_Texture* m_spritesheet;  	SDL_Rect m_clip; - -	friend class SdlContext;  };  } |