diff --git a/travail_de_groupe/chef_oeuvre/src/gest_event.c b/travail_de_groupe/chef_oeuvre/src/gest_event.c index 63661ab57ce3b5457d4855b9cb3adbd900e7f4a2..3be92ab575620bc0026087a20c9d7a5250657cc2 100644 --- a/travail_de_groupe/chef_oeuvre/src/gest_event.c +++ b/travail_de_groupe/chef_oeuvre/src/gest_event.c @@ -56,6 +56,62 @@ void manageMenu(){ SDL_Delay(5); } +void manageLost(){ + SDL_Event event; + while (SDL_PollEvent(&event)){ + switch(event.type) + { + case SDL_QUIT: + running = 0; + break; + + case SDL_KEYUP: + switch (event.key.keysym.sym) + { + case SDLK_ESCAPE: + running = 0; + continue; + + default: + continue; + } + break; + + case SDL_KEYDOWN: + switch (event.key.keysym.sym) + { + case SDLK_ESCAPE: + running = 0; + continue; + + default: + continue; + } + break; + + case SDL_MOUSEMOTION: + mousePosition.x = event.motion.x; + mousePosition.y = event.motion.y; + continue; + + + case SDL_MOUSEBUTTONDOWN: + if (SDL_PointInRect(&mousePosition, &playAgainButtonRect)){ + initAll(); + gameState = GAME; + } + if (SDL_PointInRect(&mousePosition, &quitButtonRect)){ + running = 0; + } + break; + + default: + continue; + } + } + SDL_Delay(5); +} + void manageGame(){ SDL_Event event; while (SDL_PollEvent(&event)){ @@ -148,7 +204,7 @@ void *eventLoop(void *arg){ switch(gameState){ case MENU : manageMenu();break; case GAME : manageGame();break; - case LOSE : manageMenu();break; + case LOSE : manageLost();break; default:printf("game state fault");break; } } diff --git a/travail_de_groupe/chef_oeuvre/src/player.c b/travail_de_groupe/chef_oeuvre/src/player.c index b1d7b73a0870d5fe59f28bf9ffecbf55bf782e5b..5143e876b36472dabfc7b207a4a37cc9bae88bb9 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.c +++ b/travail_de_groupe/chef_oeuvre/src/player.c @@ -207,4 +207,9 @@ void updatePlayer(){ manageMovement(); } +void initAll(){ + initFire(); + initPlayer(); +} + diff --git a/travail_de_groupe/chef_oeuvre/src/player.h b/travail_de_groupe/chef_oeuvre/src/player.h index 7bcdbb86448aca0932476b19c6daea03c6ac1452..31e3e59271ea6a999caa92e5a7a3d0d9e7229f7a 100644 --- a/travail_de_groupe/chef_oeuvre/src/player.h +++ b/travail_de_groupe/chef_oeuvre/src/player.h @@ -35,5 +35,6 @@ void pourWater(int, int); void fillWater(int, int); int giveCaseBelowPosition(int, int); void updatePlayer(); +void initAll(); #endif \ No newline at end of file diff --git a/travail_de_groupe/chef_oeuvre/src/render.c b/travail_de_groupe/chef_oeuvre/src/render.c index 5b680ac098dcb9445c2e3f52aee480ecfab22e49..d554aec67e6e558a5747d9d1c046380064f85b03 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.c +++ b/travail_de_groupe/chef_oeuvre/src/render.c @@ -10,6 +10,8 @@ TTF_Font *robotoFont; SDL_DisplayMode screenDimension; SDL_Rect buttonRect; +SDL_Rect playAgainButtonRect; +SDL_Rect quitButtonRect; SDL_Surface * grassSurface; SDL_Texture * grassTexture; @@ -329,8 +331,9 @@ void drawLost(){ rect.x = 0; rect.y = 0; SDL_RenderCopy(renderer, backgroundLostTexture, NULL, &rect); - SDL_RenderCopy(renderer, playAgainButtonTexture, NULL, &rect); - SDL_RenderCopy(renderer, quitButtonTexture, NULL, &rect); + SDL_RenderCopy(renderer, playAgainButtonHoverTexture, NULL, &rect); + SDL_RenderCopy(renderer, quitButtonHoverTexture, NULL, &rect); + SDL_RenderCopy(renderer, playAgainButtonHoverTexture, NULL, &rect); SDL_RenderPresent(renderer); } @@ -380,6 +383,9 @@ void mainLoop(){ playAgainButtonSurface = IMG_Load("Res/buttonPlayAgain.png"); playAgainButtonTexture = SDL_CreateTextureFromSurface(renderer, playAgainButtonSurface); + playAgainButtonHoverSurface = IMG_Load("Res/buttonPlayAgainHover.png"); + playAgainButtonHoverTexture = SDL_CreateTextureFromSurface(renderer, playAgainButtonHoverSurface); + fireSurface = IMG_Load("Res/fire_spritesheet.png"); fireTexture = SDL_CreateTextureFromSurface(renderer, fireSurface); @@ -415,7 +421,17 @@ void mainLoop(){ SDL_FreeSurface(playAgainButtonSurface); SDL_FreeSurface(quitButtonSurface); SDL_FreeSurface(quitButtonHoverSurface); + SDL_FreeSurface(playAgainButtonHoverSurface); + + playAgainButtonRect.x = (screenDimension.w * 700)/1920; + playAgainButtonRect.y = (screenDimension.h * 615)/1080; + playAgainButtonRect.w = (screenDimension.w * 400)/1920; + playAgainButtonRect.h = (screenDimension.h * 130)/1080; + quitButtonRect.x = playAgainButtonRect.x; + quitButtonRect.w = playAgainButtonRect.w; + quitButtonRect.y = (screenDimension.h * 887)/1080; + quitButtonRect.h = playAgainButtonRect.h; unsigned int a = SDL_GetTicks(); unsigned int b = SDL_GetTicks(); diff --git a/travail_de_groupe/chef_oeuvre/src/render.h b/travail_de_groupe/chef_oeuvre/src/render.h index e48f6490fda5bab38584450152ee9c86df4130fd..a66e4e72c449a86699f7d63a720b45ca6bbfec39 100644 --- a/travail_de_groupe/chef_oeuvre/src/render.h +++ b/travail_de_groupe/chef_oeuvre/src/render.h @@ -12,6 +12,8 @@ extern SDL_Window *window; extern SDL_Renderer *renderer; extern SDL_DisplayMode screenDimension; extern SDL_Rect buttonRect; +extern SDL_Rect playAgainButtonRect; +extern SDL_Rect quitButtonRect; extern float timer; void drawHover(int x, int y);