From 46ecb9c0e2734d006279d92e64f09921f1dbb87e Mon Sep 17 00:00:00 2001
From: bohan2u <@bohan2u>
Date: Sun, 3 Jan 2021 13:33:52 +0100
Subject: [PATCH] Petite amelioration sur la fenetre de jeu et ajout de la
 touche de rechargement de l arme

---
 code/display.c    | 13 ++++++++++++-
 code/display.h    |  2 ++
 code/main.c       | 20 +-------------------
 code/soldier.c    |  4 +++-
 code/world_data.c |  7 ++++++-
 data/save.txt     |  6 +++---
 6 files changed, 27 insertions(+), 25 deletions(-)

diff --git a/code/display.c b/code/display.c
index 047fc52..0d12035 100644
--- a/code/display.c
+++ b/code/display.c
@@ -13,6 +13,18 @@ SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* re
     return SDL_CreateTextureFromSurface(renderer, surface);
 }
 
+void init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height)
+{
+    if(0 != SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO))
+    {
+        fprintf(stderr, "Erreur initialisation de la SDL : %s", SDL_GetError());
+    }
+    if(0 != SDL_CreateWindowAndRenderer(width, height, SDL_WINDOW_SHOWN, window, renderer))
+    {
+        fprintf(stderr, "Erreur lors de la creation de l'image et du renderer : %s", SDL_GetError());
+    }
+}
+
 void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resources)
 {
     
@@ -94,7 +106,6 @@ void refresh_graphics(SDL_Renderer *renderer, world_t *world,resources_t *resour
     {
         if (world->rounds.enemies[i].sprite.is_visible == 1)
         {
-            load_texture_enemies(resources, renderer, world, i);
            if (world->rounds.enemies[i].direction == 1)
            {
                 load_texture_run_right_enemy(resources, renderer, &world->rounds.enemies[i]);
diff --git a/code/display.h b/code/display.h
index 33b2742..678cbe2 100644
--- a/code/display.h
+++ b/code/display.h
@@ -45,6 +45,8 @@ struct resources_s
 
 typedef struct resources_s resources_t;
 
+void init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height);
+
 SDL_Texture* charger_image(const char* nomfichier, SDL_Renderer* renderer);
 
 SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b);
diff --git a/code/main.c b/code/main.c
index 5a3f1fd..be054d3 100644
--- a/code/main.c
+++ b/code/main.c
@@ -11,6 +11,7 @@
 
 void init(SDL_Window **window, SDL_Renderer ** renderer, resources_t *resources, world_t * world)
 {
+    init_sdl(window,renderer,SCREEN_WIDTH,SCREEN_HEIGHT);
     init_data(world);
     init_ttf();
     init_ressources(*renderer,resources,world);
@@ -27,25 +28,6 @@ int main(void)
     double time;
 
     // Initialisation de la SDL
-    if(SDL_Init(SDL_INIT_VIDEO) < 0) 
-    {
-        printf("Erreur d’initialisation de la SDL: %s",SDL_GetError());
-        SDL_Quit();
-        return EXIT_FAILURE;
-    }
-    
-    // Créer la fenêtre
-    window = SDL_CreateWindow("Fenetre SDL",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_RESIZABLE);
-    
-    // En cas d’erreur
-    if(window == NULL) 
-    {
-        printf("Erreur de la creation d’une fenetre: %s",SDL_GetError());
-        SDL_Quit();
-        return EXIT_FAILURE;
-    }
-    
-    renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);;
     
     //Initialiser les données du monde et les ressources d'affichage
     init(&window,&renderer,&resources,&world);
diff --git a/code/soldier.c b/code/soldier.c
index a8cc6ae..5510594 100644
--- a/code/soldier.c
+++ b/code/soldier.c
@@ -146,7 +146,9 @@ void shootAfterE(soldier_t *soldier){
 			}
 			//print_sprite(&soldier->charger[i].sprite);
 			//printf("balle restantes : %d\n",soldier->present_bullet);
-		}
+		}else{
+      set_invisible(&soldier->charger[i].sprite);
+    }
 	}
 	//printf("balle presente : %d\n",soldier->present_bullet);
 	if(soldier->present_bullet == 30 && soldier->charger[NB_BULLET-1].shoot == 1){
diff --git a/code/world_data.c b/code/world_data.c
index 2fd8667..88d7836 100644
--- a/code/world_data.c
+++ b/code/world_data.c
@@ -119,7 +119,7 @@ void refresh_data(world_t *world)
         world->rounds.enemies[i].DestEnemy.y = world->rounds.enemies[i].sprite.y;
         //Si l'ennemi touche le soldat
         //enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier,&world->score);
-        enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier);
+        //enemy_touch_soldier(&world->rounds.enemies[i],&world->soldier);
         enemy_dead(&world->rounds.enemies[i],&world->soldier,&world->score);
       }
     }
@@ -256,6 +256,11 @@ void handle_events(SDL_Event *event,world_t *world)
           if(world->soldier.state_jump == 0)
             shoot(&world->soldier);
       }
+      if(event->key.keysym.sym == SDLK_r && world->soldier.sprite.is_visible == 1)
+      {
+          world->soldier.present_bullet = 30;
+          world->soldier.charger[NB_BULLET-1].shoot = 1;
+      }
     }
     
     if(event->type == SDL_KEYUP)
diff --git a/data/save.txt b/data/save.txt
index d86b631..73fed25 100644
--- a/data/save.txt
+++ b/data/save.txt
@@ -1,10 +1,10 @@
 /Vie du joueur au début
-1
+10
 /Nombre d'ennemis au début
-18
+22
 /Nombre d'ennemis en plus à chaque manche
 1
 /Numéro de la manche
-30
+34
 /Meilleur score
 78
-- 
GitLab