From 2ab6f00a910b4707a11e9cb557e2d1ca6dfcdc96 Mon Sep 17 00:00:00 2001
From: Alfred Burgess <alfred.burgess95@gmail.com>
Date: Sat, 9 Dec 2023 22:22:18 +0800
Subject: [PATCH] Added very basic texture class

---
 assets/background.png         | Bin 0 -> 22615 bytes
 assets/person.png             | Bin 0 -> 1521 bytes
 include/components/cTexture.h |  31 +++++++++++++++++
 include/main.h                |   2 ++
 include/window.h              |  11 ++++--
 src/components/cTexture.cpp   |  61 ++++++++++++++++++++++++++++++++++
 src/main.cpp                  |   1 +
 src/window.cpp                |  38 ++++++++++++++++-----
 8 files changed, 133 insertions(+), 11 deletions(-)
 create mode 100644 assets/background.png
 create mode 100644 assets/person.png
 create mode 100644 include/components/cTexture.h
 create mode 100644 src/components/cTexture.cpp

diff --git a/assets/background.png b/assets/background.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb1f519b0be8d91988ece3fbe1532934ec79c6f6
GIT binary patch
literal 22615
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

literal 0
HcmV?d00001

diff --git a/assets/person.png b/assets/person.png
new file mode 100644
index 0000000000000000000000000000000000000000..5703a788062c2aef40979cf4879cd1bbe41c4edc
GIT binary patch
literal 1521
zcmV<N1rGX&P)<h;3K|Lk000e1NJLTq002e+003kN0ssI2v?$T;00001b5ch_0Itp)
z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1%^pPK~#8N?V3M~
zTSXAYH$}visZfwWG75hRB)Aefmo8Jfpm6DiC>2#igecq-q@zGGC<;gigbJA;#3{`I
zRa&~M&=rWgC=!?>mouNebDQzJKi)SxYh?7k`xH5T`*!ztvpa8h-?^Ea{m<MYZGu~*
zO>m2}32u=#!7b7zxJ7F2iJNp?ckIUE`+Uxe1d>bcl5=j$ZFO7+AMo#v+Y!ZVoe}A#
zy9tIWfh|+$vLIow`IrQ~iJvm%0Ly}O*<GeCJJ)l)shiFg!iRwy(1mkhOxg}bdnELa
zI_q5D^#c#r!-Izh2M2?}Q#`|P86$;!0D*@HD)e~z*q8LO3YR4kj}KHDAEA@&6EPH#
zR7AB+ZHdIE(5>Dr>UD%hZbY{&lt^WU#8Y-me1vcd5((Y!fH)HM$J+*p54llqMBQvC
zPIb{;RA&nVq(gUzneDrBqj%%%_>B74M3c#+(^-0yp-$0Iqz#a+yX(Fa+iv^puo+L0
zgiAO4QjxGw2w8i-w@*D?rFxQA@w1RFP^m~f%Ta%;H6D*^NTA_xh+>#jVI)6r4@8SA
zor>fehHA2QeM}%v^7ro7$8U9Ee86McU%Kk9iWXNo35h2<-+QjenEbPM9~gf;|5EVL
zmDdm)DukMs8(rxnBtGgQ)$jMG)2R;#$Kd|;?LoKOr5o0aL~X_iF{vRrdijm%wfDbx
z;mR`?F3=6<5{<639!ad|N>v{dkAV-TAMT#q`EmQjSLn87HBIGuq%i8LR^0V5d2;*v
z)4M-E`h0J8_m|__KlrM+UdPWuO;foZ$+rjj6<u+bm-^3Z?;h>mKmF>b-#+<v{LXv7
ze|oR;>~mDnLOy3esFuEJIQ9&Xd=Kh*W?$|j8s3lY?3IqO024$P{wt)vKKfW-z)wE=
zE|6e!MUn(jiS;9ihtJ*zJB0BKk<bMupEjuD6<T`e6<V*c0aCnTNP?EqPoec1uLG$O
zNf6!a(@&xG8XF){7pz6KHym}a9w{uA=Z`{bsV5SwM+!T?`J>QU>WKvFk@&90JW#$`
zsOdz4^+<50Kw+ostA#|1F-}6_fua-OIQgv<gb(!9x%kc>5-r9!2?-8?f`C^~RdNip
zCBw`2U_&<)&BZts34!7#!1Yvu2NJ6xp6GNua4M2F(gSs*c3zD}Pm2|wzkJ9k5?!zj
z63nUQhuY1>hnynO1)Cwkd|n}2U=&ejR|#X4zco}3Id4lO{A&48Jrn~bUg@R`Id4lO
zSY!(>fmeK=3xOwP$axzhdDnndiC*azs!})$l6O3qNpONQB5_yYC1!$BuL;SUI8@7=
zc(+JtCZHCnsavEp6HtrP)VXRGE72;U%zS@UxIM+jNRcE$wEQd7rn4E64o1i%Xa-1C
zFk<CK-?Bvz-!%%Qu%#l2-40Z>2Bph|+)%arqhpNa!ZA)lD(>ED7SvRzI^7k6Hb2HF
z6kBN}lGwn->~^SVL<SFRYd!R8$^%pB%nv14*+BS3M(*DD0iC#H?(7YCr@V=1>NO#G
z9w;WHiC#C7_&$eQB&`XkMbf!N(wcx;B%NENhAzII5Cw8LOB<yxT7puxcQLj{LU;LF
z{wn1IvqVA{OM`=LPwAc<J3PZvlwdO?zJ2g2-M|&u=I^Qt#Zqj8#NY2jD>qRB4F44c
zQfz=Ecp|qCC>GvTt4~f!ZGfcy6B$qe#@}d2m5Rg<i4><Fd<5#wgNjZ<;weGB1LssG
zlS+@or%>W6e*SlT>BCQtWc4RMu$WZhYEvtb5F+0LNOyoJ%!glMpp-~FMB<X#R)JD>
z$hQrdgvi?}P#UCsN2ex%()20c(J2p<xD;>Aoz!NYqf@GS%}8N*i0@78Ylf85$<6)+
XF$+rF0`>5I00000NkvXXu0mjfnJ>ew

literal 0
HcmV?d00001

diff --git a/include/components/cTexture.h b/include/components/cTexture.h
new file mode 100644
index 0000000..22c9b23
--- /dev/null
+++ b/include/components/cTexture.h
@@ -0,0 +1,31 @@
+#ifndef __COMPONENTS__TEXTURE_H__
+#define __COMPONENTS__TEXTURE_H__
+
+#include <SDL.h>
+#include <cstdio>
+#include <string>
+#include "components/components-generic.h"
+#include "window.h"
+#include "maths/vec2.h"
+
+
+
+class cTexture : public CComponentGeneric
+{
+	public:
+		cTexture();
+		~cTexture();
+		bool loadFromFile( std::string path );
+		void free();
+		void render( Vec2 pt );
+		void render( Vec2 pt, SDL_Renderer *renderer );
+
+		int getWidth(){ return this->_width; }
+		int getHeight(){ return this->_height; }
+	private:
+		SDL_Texture* _texture;
+		uint16_t _width;
+		uint16_t _height;
+};
+
+#endif // __COMPONENTS__TEXTURE_H__
diff --git a/include/main.h b/include/main.h
index b38e95e..b1e2153 100644
--- a/include/main.h
+++ b/include/main.h
@@ -21,6 +21,8 @@ enum GenerationMethod
 #include "entities/entity-generic.h"
 #include "maths/maths.h"
 #include "entity-manager.h"
+#include "components/cTexture.h"
 #include "window.h"
 
+
 #endif // MAIN_H
diff --git a/include/window.h b/include/window.h
index 3a2bdec..d1acdcf 100644
--- a/include/window.h
+++ b/include/window.h
@@ -1,6 +1,5 @@
 #ifndef __WINDOW_H__
 #define __WINDOW_H__
-#endif // __WINDOW_H__
 
 #define SDL_MAIN_HANDLED
 #include <SDL.h>
@@ -11,7 +10,9 @@
 #include <string>
 #include "logger.h"
 #include "maths/vec2.h"
+#include "components/cTexture.h"
 
+class cTexture;
 
 const uint16_t SCREEN_HEIGHT = 600;
 const uint16_t SCREEN_WIDTH = 800;
@@ -30,11 +31,13 @@ enum KeyPressSurfaces
 class Window
 {
 	public:
+		static SDL_Renderer* renderer;
 		static bool sdlIsInit;
 		Window();
 		~Window();
 
 		void loadMedia( std::string path );
+		void loadMedia();
 		void update();
 		void processInput();
 
@@ -50,6 +53,8 @@ class Window
 		Logger& _logger;
 		SDL_Window* _window;
 		SDL_Texture* _activeTexture;
+		cTexture* _background;
+		cTexture* _character;
 		SDL_Renderer* _renderer;
 		SDL_Surface* _screenSurface;
 		SDL_Surface* _renderSurface;
@@ -64,4 +69,6 @@ class Window
 
 		void initialise();
 		void clean();
-};
\ No newline at end of file
+};
+
+#endif // __WINDOW_H__
\ No newline at end of file
diff --git a/src/components/cTexture.cpp b/src/components/cTexture.cpp
new file mode 100644
index 0000000..c561904
--- /dev/null
+++ b/src/components/cTexture.cpp
@@ -0,0 +1,61 @@
+#include "components/cTexture.h"
+
+cTexture::cTexture()
+	: _texture( NULL ),
+	_width( 0 ), _height( 0 )
+{}
+
+cTexture::~cTexture(){ this->free(); }
+
+bool cTexture::loadFromFile( std::string path )
+{
+	this->free();
+	SDL_Texture* texture = NULL;
+	SDL_Surface* surface = IMG_Load( path.c_str() );
+	if( surface == NULL )
+		{ printf( "Unable to load image %s! SDL_image Error: %s\n", path.c_str(), IMG_GetError() ); }
+	else
+	{
+		SDL_SetColorKey( surface, SDL_TRUE, SDL_MapRGB( surface->format, 0xFF, 0x00, 0xFF ) );
+
+		texture = SDL_CreateTextureFromSurface( Window::renderer, surface );
+		if( texture == NULL )
+			{ printf( "Unable to create texture from %s! SDL Error: %s\n", path.c_str(), SDL_GetError() ); }
+		else
+		{
+			this->_width = surface->w;
+			this->_height = surface->h;
+		}
+
+		SDL_FreeSurface( surface );
+	}
+	this->_texture = texture;
+	return texture != NULL;
+}
+
+void cTexture::free()
+{
+	if( this->_texture != NULL )
+	{
+		_texture = NULL;
+		_width = 0;
+		_height = 0;
+	}
+}
+
+void cTexture::render( Vec2 pt, SDL_Renderer *renderer )
+{
+	if( this->_width && this->_height )
+	{
+		SDL_Rect quad = { (int)pt.x, (int)pt.y, this->_width, this->_height };
+		SDL_RenderCopy( renderer, this->_texture, NULL, &quad );
+	}
+}
+void cTexture::render( Vec2 pt )
+{
+	if( Window::renderer != NULL )
+	{
+		SDL_Rect quad = { (int)pt.x, (int)pt.y, this->_width, this->_height };
+		SDL_RenderCopy( Window::renderer, this->_texture, NULL, &quad );
+	}
+}
\ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
index adc8d53..8f092e1 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -44,6 +44,7 @@ int main( int argc, char* argv[] ) {
 	window->spawn();
 	window->loadMedia( "assets/hello-world.bmp" );
 	window->update();
+	window->loadMedia();
 	GameEngine* game = new GameEngine();
 
 	// Main Loop
diff --git a/src/window.cpp b/src/window.cpp
index fb74e8d..944591c 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -1,6 +1,7 @@
 #include "window.h"
 
 bool Window::sdlIsInit = false;
+SDL_Renderer* Window::renderer = NULL;
 
 Window::Window()
 	: _logger( Logger::instance() ), _hasInit( false )
@@ -9,9 +10,12 @@ Window::Window()
 	this->_window = nullptr;
 	this->_screenSurface = nullptr;
 	this->_renderSurface = nullptr;
+	this->_background = new cTexture();
+	this->_character = new cTexture();
 }
 Window::~Window()
-{}
+{
+}
 
 void Window::initialise()
 {
@@ -71,6 +75,11 @@ SDL_Surface* Window::loadSurface( std::string path )
 	return optimizedSurface;
 }
 
+void Window::loadMedia()
+{
+	this->_background->loadFromFile( "assets/background.png" );
+	this->_character->loadFromFile( "assets/person.png" );
+}
 void Window::loadMedia( std::string path )
 {
 	//Load splash image
@@ -81,7 +90,10 @@ void Window::update() {
 	SDL_SetRenderDrawColor( this->_renderer, 0xFF, 0xFF, 0xFF, 0xFF );
 	SDL_RenderClear( this->_renderer );
 
-	SDL_Rect core = this->_createViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
+	SDL_Rect bg = this->_createViewport( 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT );
+	this->_background->render( {0,0}, this->_renderer );
+	this->_character->render( {SCREEN_HEIGHT/3,SCREEN_HEIGHT/3}, this->_renderer );
+	SDL_Rect core = this->_createViewport( SCREEN_WIDTH / 4, SCREEN_HEIGHT / 4, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 );
 	// Render Example Primatives
 	this->_drawRect( SCREEN_WIDTH / 4, SCREEN_HEIGHT / 4, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 );
 	this->_drawRect( 0, 0, 10, 10 );
@@ -91,8 +103,8 @@ void Window::update() {
 		this->_drawPoint( { SCREEN_WIDTH / 2, i } );
 	}
 
-	SDL_Rect overlay = this->_createViewport( SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 );
-	SDL_RenderCopy( this->_renderer, this->_activeTexture, NULL, NULL );
+	// SDL_Rect overlay = this->_createViewport( SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2, SCREEN_WIDTH / 2, SCREEN_HEIGHT / 2 );
+	// SDL_RenderCopy( this->_renderer, this->_activeTexture, NULL, NULL );
 
 
 	SDL_RenderPresent( this->_renderer );
@@ -135,15 +147,21 @@ void Window::spawn()
 	{
 		printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
 	} else {
-
-		this->_renderer = SDL_CreateRenderer( this->_window, -1, SDL_RENDERER_ACCELERATED  );
-		if( this->_renderer == NULL )
+		if( Window::renderer == NULL )
 		{
-			printf( "Renderer could not be created! SDL Error: %s\n", SDL_GetError() );
+			this->_renderer = SDL_CreateRenderer( this->_window, -1, SDL_RENDERER_ACCELERATED  );
+			if( this->_renderer == NULL )
+			{
+				printf( "Renderer could not be created! SDL Error: %s\n", SDL_GetError() );
+			} else {
+				SDL_SetRenderDrawColor( this->_renderer, 0xFF, 0x00, 0xFF, 0xFF );
+			}
+			Window::renderer = this->_renderer;
 		} else {
-			SDL_SetRenderDrawColor( _renderer, 0xFF, 0x00, 0xFF, 0xFF );
+			this->_renderer = Window::renderer;
 		}
 
+
 		int imgFlags = IMG_INIT_PNG;
 		if( !( IMG_Init( imgFlags ) & imgFlags ) )
 		{
@@ -188,6 +206,8 @@ void Window::clean()
 	// Clean Texure
 	SDL_DestroyTexture( this->_activeTexture );
 	this->_activeTexture = nullptr;
+	delete this->_background;
+	delete this->_character;
 
 	//Destroy window
 	SDL_DestroyRenderer( this->_renderer );
-- 
GitLab