From fc35d1c9a59d5b8b4ab87794e11a4ee8148b246f Mon Sep 17 00:00:00 2001 From: posweg Date: Mon, 1 May 2017 19:40:03 +0200 Subject: [PATCH] Texture implementation --- .gitignore | 2 ++ Makefile | 15 +++++---- bin/main | Bin 18120 -> 0 bytes main | Bin 0 -> 23688 bytes main.cpp | 8 ++--- player.cpp | 48 +++++++++++++++++++++++++--- player.h | 11 +++++-- texture.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++ texture.h | 25 +++++++++++++++ textures/player.png | Bin 0 -> 38659 bytes 10 files changed, 166 insertions(+), 18 deletions(-) delete mode 100755 bin/main create mode 100755 main create mode 100755 texture.cpp create mode 100644 texture.h create mode 100644 textures/player.png diff --git a/.gitignore b/.gitignore index 75b1567..6764b21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.swp *.o +*.swo +*.swn diff --git a/Makefile b/Makefile index 0b81356..a1c9692 100644 --- a/Makefile +++ b/Makefile @@ -1,24 +1,24 @@ #-*- Makefile -*- -OBJS = main.o player.o dt.o block.o entity.o camera.o +OBJS = main.o player.o dt.o block.o entity.o camera.o texture.o CC = g++ COMPILER_FLAGS = -w -LINKER_FLAGS = -lSDL2 -std=gnu++11 -lSDL2_image +LINKER_FLAGS = -lSDL2_image -lSDL2 -std=gnu++11 -OBJ_NAME = bin/main +OBJ_NAME = main all: $(OBJS) $(CC) $(OBJS) $(COMPLER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) -main.o: main.cpp +main.o: main.cpp texture.o $(CC) -c main.cpp $(LINKER_FLAGS) -player.o: player.cpp player.h entity.o - $(CC) -c player.cpp -lm $(LINKER_FLAGS) +player.o: player.cpp player.h entity.o texture.o + $(CC) -c player.cpp -lm $(LINKER_FLAGS) dt.o: dt.cpp dt.h $(CC) -c dt.cpp $(LINKER_FLAGS) @@ -31,3 +31,6 @@ entity.o: entity.cpp entity.h camera.o: camera.cpp camera.h $(CC) -c camera.cpp + +texture.o: texture.cpp texture.h + $(CC) -c -lSDL2_image texture.cpp diff --git a/bin/main b/bin/main deleted file mode 100755 index 474b12f7f88b6a8076bce57455ca76d53e936895..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18120 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 F{{dp|RoVam diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..ddd2b71bd83f98a0a7510c5bfcc73a0631049fb1 GIT binary patch literal 23688 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 z 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 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index 96c6681..2c9b0e1 100644 --- a/main.cpp +++ b/main.cpp @@ -2,7 +2,6 @@ #include #include -//#include #include"player.h" #include"block.h" #include"camera.h" @@ -28,7 +27,6 @@ bool loadMedia(){ void init(){ SDL_Init(SDL_INIT_VIDEO); - //IMG_Init(IMG_INIT_JPG); gWindow = SDL_CreateWindow("Platform Test!",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,SCREEN_WIDTH,SCREEN_HEIGHT,SDL_WINDOW_SHOWN); gRenderer = SDL_CreateRenderer(gWindow,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); SDL_SetRenderDrawColor(gRenderer,0xFF,0xFF,0xFF,0xFF); @@ -40,7 +38,6 @@ void close(){ gWindow = NULL; gRenderer = NULL; - //IMG_Quit(); SDL_Quit(); } @@ -68,13 +65,12 @@ int main(int argc, char* args[]){ quit = true; } } - SDL_SetRenderDrawColor(gRenderer,0,0,0,0xFF); + SDL_SetRenderDrawColor(gRenderer,0,0,100,0xFF); SDL_RenderClear(gRenderer); - + camera.update(posweg.getRectangle().x,posweg.getRectangle().y); posweg.print(camera.getPosX()); - std::cout << posweg.getRectangle().x << std::endl; wallA.print(camera.getPosX()); wallB.print(camera.getPosX()); diff --git a/player.cpp b/player.cpp index ba1584d..4ad63f6 100644 --- a/player.cpp +++ b/player.cpp @@ -6,9 +6,12 @@ void Player::print(int cameraX){ SDL_Rect cameraFix = rect; cameraFix.x -= cameraX; - + SDL_SetRenderDrawColor(*renderer,0xFF,0,0,0xFF); - SDL_RenderFillRect(*renderer, &cameraFix); + ply.render(&cameraFix,currentFrame,renderer); + if(ifRunning)ply.render(&cameraFix,&plyFrame[5],renderer); + + currentFrame = &plyFrame[0]; oldPosX = posX; oldPosY = posY; @@ -25,7 +28,35 @@ void Player::init(int x,int y, int w, int h, SDL_Renderer** render){ renderer = render; oldPosX = posX; - oldPosY = posY; }; + oldPosY = posY; + + loadMedia(); + + currentFrame = &plyFrame[0]; +}; + +bool Player::loadMedia(){ + bool success = true; + + if(!ply.loadTexture("textures/player.png",renderer)){ + std::cout << "Failed to load ply texture" << std::endl; + success = false; + } + else{ + int frame = 0; + for(int row = 0;row < 2;row++){ + for(int column = 0;column < 3;column++){ + plyFrame[frame].w=szW; + plyFrame[frame].h=szH; + plyFrame[frame].x=szW*column; + plyFrame[frame].y=szH*row; + frame++; + } + } + } + + return success; +} int Player::intVelX(){ return static_cast(velocityX); @@ -42,6 +73,7 @@ void Player::move(){ int dur = 4; //Divide transition time int speed = 200; //Horizontal movement speed float run = 1.5; //Running speed multiplication + ifRunning = false; //static bool isRunning = false; int gravity = 800; //Gravity force @@ -50,7 +82,9 @@ void Player::move(){ //Check keyboard current state if(currentKeyStates[SDL_SCANCODE_LEFT]) direction += -1; if(currentKeyStates[SDL_SCANCODE_RIGHT]) direction += 1; - if(!currentKeyStates[SDL_SCANCODE_LSHIFT] and !isRunning) run = 1; + if(!currentKeyStates[SDL_SCANCODE_LSHIFT] and !isRunning){ + run = 1; + } if(run!=1) dur /= 1; //Set velocity @@ -87,6 +121,8 @@ void Player::move(){ if(isRunning == false) run = 1; } + if(run!=1) ifRunning = true; + //Get the position and update the velY with gravity velocityY -= gravity * dt; float x = velocityX * dt * run; @@ -163,11 +199,13 @@ int Player::check(SDL_Rect rectA){ ground = true; collision = 2; velocityY = 0; + currentFrame = &plyFrame[1]; } //Bottom collision else if(posY == b2Y){ collision = 3; topCollision = true; + currentFrame = &plyFrame[3]; if(velocityY > 0) velocityY -= static_cast(velocityY); } @@ -178,12 +216,14 @@ int Player::check(SDL_Rect rectA){ //Left collision if(posX + szW == bX){ collision = 4; + currentFrame = &plyFrame[2]; if(velocityX > 0) velocityX -= static_cast(velocityX); } //Right collision else if(posX == b2X){ collision = 5; + currentFrame = &plyFrame[4]; if(velocityX < 0) velocityX -= static_cast(velocityX); } diff --git a/player.h b/player.h index 18e6505..d59f8ac 100644 --- a/player.h +++ b/player.h @@ -5,9 +5,10 @@ #include #include +#include #include"dt.h" #include"entity.h" -#include +#include"texture.h" class Entity; @@ -16,9 +17,9 @@ class Player: public Entity{ void print(int cameraX); int check(SDL_Rect rectB); void init(int x, int y,int w, int h,SDL_Renderer** render); - //SDL_Rect getRectangle(); private: int* coll; + bool loadMedia(); void move(); int intVelX(); SDL_Renderer** renderer; @@ -29,7 +30,13 @@ class Player: public Entity{ float velocityX = 0; float velocityY = 0; bool isRunning = false; + bool ifRunning = false; int oldPosX, oldPosY; + + PosuTexture ply; + SDL_Rect* currentFrame; + const static int plyNum = 6; + SDL_Rect plyFrame[plyNum]; }; #endif diff --git a/texture.cpp b/texture.cpp new file mode 100755 index 0000000..adbb5c3 --- /dev/null +++ b/texture.cpp @@ -0,0 +1,75 @@ +#include"texture.h" + +PosuTexture::PosuTexture(){ + //Initialize variables + texture = NULL; + szW = 0; + szH = 0; + + IMG_Init(IMG_INIT_JPG); + //Set renderer +} + +PosuTexture::~PosuTexture(){ + //Deallocate + free(); +} + +bool PosuTexture::loadTexture(std::string path,SDL_Renderer** renderer){ + //Get rid of preexisting texture + free(); + + //Load image at specified path + SDL_Surface* loadedSurface = IMG_Load( path.c_str() ); + + if(loadedSurface == NULL) + std::cout << "Couldn't load " << path.c_str() << std::endl; + else{ + //Create texture from surface pixels + texture = SDL_CreateTextureFromSurface + (*renderer,loadedSurface); + + if(texture == NULL){ + std::cout << "Couldn't to create texture from " + << path.c_str() << std::endl; + } + else{ + //Get image dimensions + szW = loadedSurface->w; + szH = loadedSurface->h; + } + //Get rid of old loaded surface + SDL_FreeSurface(loadedSurface); + } + + return texture != NULL; +} + +void PosuTexture::free(){ + //Free texture if it exists + if(texture != NULL){ + SDL_DestroyTexture(texture); + texture = NULL; + szW = 0; + szH = 0; + } +} + +void PosuTexture::render(SDL_Rect* quad,SDL_Rect* frame,SDL_Renderer** renderer){ + //Set clip rendering dimensions + /*if(frame != NULL){ + quad.w = frame->w; + quad.h = frame->h; + }*/ + + //Render to screen + SDL_RenderCopy(*renderer,texture,frame,quad); +} + +int PosuTexture::getWidth(){ + return szW; +} + +int PosuTexture::getHeight(){ + return szH; +} diff --git a/texture.h b/texture.h new file mode 100644 index 0000000..5d89156 --- /dev/null +++ b/texture.h @@ -0,0 +1,25 @@ +//Texture management class header + +#ifndef __TEXTURE_H_INCLUDED__ +#define __TEXTURE_H_INCLUDED__ + +#include +#include +#include +#include + +class PosuTexture{ + public: + PosuTexture(); + ~PosuTexture(); + bool loadTexture(std::string path,SDL_Renderer** renderer); + void free(); + void render(SDL_Rect* quad,SDL_Rect* frame,SDL_Renderer** renderer); + int getWidth(); + int getHeight(); + private: + SDL_Texture* texture; + int szW, szH; +}; + +#endif diff --git a/textures/player.png b/textures/player.png new file mode 100644 index 0000000000000000000000000000000000000000..349913ef98b5aae45ed60d8cd307e434d256c37a GIT binary patch literal 38659 zcmeI4v1=4T6vk&ICYlfs#X~H_%1Rrp#46!Ja!5i5Y3zcnC_*e!sn`Xqv{MVgLMuTK z5yVda0c#se8|`h*9c0MMWH0w-zS)_#=R0$`+1YvTeee72ZPsIx-SxHQ`Ps9x#+doR zN`Iq%-Kn4J$ENG=-=4qQtzV{ZUSIB;q5b#r^XsSe%<;P`H@1zLJ7u4hdG_K=Jvno4 zu(~w!<7hQ^`NGD>_d{dOn?ZkJbEh(29$b4^)f4rXJ|@Y5JEWN-WURvpbU*=5AXM6t z0;X3Yd_UQ$8FSaJ3rMN1vsZbDwaEzu8-SCigi(dQxw)5c^pu{d3-Kb zMFAJHK2KoSdwu0UOfIiP?s|FT3kolUr(W@Q14 z2+ZN2bbW{i4)Ef}m8XmKw`Q2=sL7sNIV;GDS@;ucN}6sQ%*F#DW{!lEAOa!c0LGj34w=+ z_xDNHXZ6Nvv~lj~_kGwl>(^Ll0z@Fq)7DtJzP9=vl{e@eJSvIK%XMG`;P0PK^z>c; zx!B^Ajes4OOrzvEpn&BuNvbILf-7ltMl$+`Mi|SpFL{!^Vpu_a2Z#C9xz!4|bI8I3 zSGVK;A0AdI!D^AG!{M;$cIyP)rb!|GXKYQhf}W!H7$hC}KrL|k zOjXQ3ko>$;B2RlnrSz+4BK5$~L2iQJ=G>YC!DA*|{Fr4%PtoHXO0eIDNa5JAzkgIo z8aHZ&L!k1MJMRMeSG`24%C;LNU0=K1@6R3u zcz+7rlI(y2mP{vsHXh(}UoXAUdjS&IT{Z;|c3F*D9dMu+VCfe{()Dqf7X!={sOvBX z6fowW_~^jm07e9AEard$#{3f>t$@WN!UQT{%s=tb3RpZMOrQeB z{1YFofW;%i1S(+6Kk?BDSUe(3paRDH6Cce2Ea_v#CP$^~Yto!+u6o?t{>h?D6n!}T zYSozD)}X(zNv3t!1qax$k+%&J%QX?Hfy8q4m0HIJOa-Ebpz%~o(-_T<#y4pyH5UX} zdgIddm4F<4SA49Av2mfM#MX(83)PoYhbJD`AZ4@GBCz@qWs;uJ9Mq38?> oSTr77oC3x@6rDi