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{<^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