diff --git a/Makefile b/Makefile index 5fd8d73..0b81356 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ CC = g++ COMPILER_FLAGS = -w -LINKER_FLAGS = -lSDL2 -std=gnu++11 +LINKER_FLAGS = -lSDL2 -std=gnu++11 -lSDL2_image OBJ_NAME = bin/main diff --git a/bin/main b/bin/main index 8a7c649..474b12f 100755 Binary files a/bin/main and b/bin/main differ diff --git a/camera.cpp b/camera.cpp index fd0a6c2..8a583f3 100644 --- a/camera.cpp +++ b/camera.cpp @@ -2,10 +2,16 @@ #include"camera.h" +Camera::Camera(int mapWidth,int screenWidth){ + mW = mapWidth; + scW = screenWidth; +} + void Camera::update(int playerX, int playerY){ //Make the camera when the player hits the middle of the screem - if(true) posX = playerX - 640/2; - //else posX = 0; + if(playerX >= scW/2) posX = playerX - scW/2; + else posX = 0; + if(playerX >= mW - scW/2) posX = mW - scW; //posY = playerY; }; diff --git a/camera.h b/camera.h index b1caa0a..ac3c657 100644 --- a/camera.h +++ b/camera.h @@ -5,11 +5,13 @@ class Camera{ public: + Camera(int mapWidth,int screenWidth); void update(int playerX, int playerY); int getPosX(); int getPosY(); private: int posX, posY; + int mW, scW; }; #endif diff --git a/main.cpp b/main.cpp index b9040e0..96c6681 100644 --- a/main.cpp +++ b/main.cpp @@ -2,6 +2,7 @@ #include #include +//#include #include"player.h" #include"block.h" #include"camera.h" @@ -19,9 +20,6 @@ void init(); bool loadMedia(); void close(); -Player posweg; -Camera camera; - bool loadMedia(){ bool success = true; @@ -52,11 +50,15 @@ int main(int argc, char* args[]){ bool quit = false; SDL_Event e; + + Player posweg; + Camera camera(36*sz,SCREEN_WIDTH); Block wallA(8*sz,SCREEN_HEIGHT-sz*5,sz*2,sz*2,&gRenderer); Block wallB(4*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer); Block wallC(6*sz,SCREEN_HEIGHT-sz*3,sz,sz*2,&gRenderer); Block ground(0,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer); + Block ground2(SCREEN_WIDTH+sz*4,SCREEN_HEIGHT-sz,SCREEN_WIDTH,sz,&gRenderer); posweg.init(100,100,sz,sz,&gRenderer); @@ -78,12 +80,14 @@ int main(int argc, char* args[]){ wallB.print(camera.getPosX()); wallC.print(camera.getPosX()); ground.print(camera.getPosX()); + ground2.print(camera.getPosX()); posweg.check(wallA.getRectangle()); posweg.check(wallB.getRectangle()); posweg.check(wallC.getRectangle()); posweg.check(ground.getRectangle()); - + posweg.check(ground2.getRectangle()); + SDL_RenderPresent(gRenderer); } close(); diff --git a/player.cpp b/player.cpp index 7a47573..ba1584d 100644 --- a/player.cpp +++ b/player.cpp @@ -3,7 +3,6 @@ #include"player.h" void Player::print(int cameraX){ - rect = {posX,posY,szW,szH}; SDL_Rect cameraFix = rect; cameraFix.x -= cameraX; @@ -96,6 +95,8 @@ void Player::move(){ //Convert and set new int position posX += static_cast(x); posY -= static_cast(y+0.5); + + rect = {posX,posY,szW,szH}; }; int Player::check(SDL_Rect rectA){