From 5a5cd4386c737cde7404db1869187d38df636fe9 Mon Sep 17 00:00:00 2001
From: Louis MALTERRE <malterre.louis@laposte.net>
Date: Sun, 27 Nov 2022 21:21:57 +0100
Subject: [PATCH] j'ai rendu les choses un peu plus belles et claires pour
 l'evolution du personnage dans le jeu (evolution de ses coordonnees) LM

---
 .../src/main/java/entity/Character.java       | 35 +++++++++----------
 MAVENProject/src/main/java/jeu/Jeu.java       | 23 +++++-------
 .../main/java/loaders/CharacterLoader.java    |  8 ++---
 3 files changed, 30 insertions(+), 36 deletions(-)

diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java
index 72bb088..e1f836b 100644
--- a/MAVENProject/src/main/java/entity/Character.java
+++ b/MAVENProject/src/main/java/entity/Character.java
@@ -35,7 +35,7 @@ public class Character extends Entity{
     }
     @Override
     public void deplacements(){ // alpha indique si il est au sol ou non, il vaut 0 ou 1 en fonction
-        getGameCommand();
+        
         double delta = Math.pow(10, -3); // pas de temps remis en secondes
 
         //on actualise les positions
@@ -57,7 +57,7 @@ public class Character extends Entity{
         else vitesseActuZ = vitesseActuZ + 7*((1-alpha)*Physique.g - tableCommande.get("CommandZ"))*delta;
 
         //System.out.println("vitesse z: "+vitesseActuZ);
-        resetCommand();   
+           
     }
     @Override
     public void attaque(){
@@ -66,35 +66,34 @@ public class Character extends Entity{
 
     public void getGameCommand(){
         Map<String,Boolean> commandeJeu = Jeu.getDirectionJeu();
-        if (commandeJeu.get("Right") && commandeJeu.get("Left")){}
+        if (commandeJeu.get("Right") && commandeJeu.get("Left")){tableCommande.replace("CommandX", (double)0);}
         else if (commandeJeu.get("Right")) tableCommande.replace("CommandX", vitesseMax);
         else if (commandeJeu.get("Left")) tableCommande.replace("CommandX", -vitesseMax);
-        if (commandeJeu.get("Jump")) {
-            if (this.getCoord().getZ() < Jeu.getCoordSol().getZ())alpha = 0;
-            else if (this.getVitesseActuZ() == 0){tableCommande.replace("CommandZ", impulsionSaut);/*A.add(charac.getCoord().getZ());n++;*/}
-            }
-            else {
-                tableCommande.replace("CommandZ", (double)0);
-            if (this.getCoord().getZ() < Jeu.getCoordSol().getZ()) { //a retoucher, j'ai besoin d'autres choses pour avancer
-                alpha = 0; 
-            }
-            else{
-                alpha = 1;
-            }
+
         
+        if (commandeJeu.get("Jump")) {
+            if ((alpha == 1) && (this.getVitesseActuZ() == 0)){
+                tableCommande.replace("CommandZ", impulsionSaut);
+            }      
         }
-            
-            
     }
 
-    void resetCommand(){
+    public void checkIfOnGround(){ // faut modifier la condition pour la gestion de colisions avec le sol
+        if (this.getCoord().getZ() < Jeu.getCoordSol().getZ())alpha = 0;
+        else alpha = 1;
+    }
+
+    public void resetCommand(){
         for (String key : tableCommande.keySet()){
             tableCommande.replace(key, (double)0);
         }
     }
 
     public void evolveCharacter(){
+        getGameCommand();
+        checkIfOnGround();
         deplacements();
+        resetCommand();
     }
 
     public double getVitesseMax() {
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
index 1814208..7ad7b95 100644
--- a/MAVENProject/src/main/java/jeu/Jeu.java
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -4,9 +4,9 @@ import java.io.BufferedReader;
 import java.io.FileReader;
 import java.io.IOException;
 import java.net.URL;
-import java.util.ArrayList;
+
 import java.util.HashMap;
-import java.util.List;
+
 import java.util.Map;
 
 import entity.Character;
@@ -66,16 +66,11 @@ public class Jeu implements Game{
         directionJeu.put("Attack",false);
         
         //on remplit la map des frames
-        Map<String,List<String>> tempMap = gameCharacterLoader.getPathTable();
+        Map<String,Integer> tempMap = gameCharacterLoader.getPathTable();
 
-        tempMap.put(movement,new ArrayList<String>());
-        tempMap.get(movement).add("1");
-        tempMap.get(movement).add("2");
+        tempMap.put(movement,2);
 
-        tempMap.put("Character_attack",new ArrayList<String>());
-        tempMap.get("Character_attack").add("1");
-        tempMap.get("Character_attack").add("2");
-        tempMap.get("Character_attack").add("3");
+        tempMap.put("Character_attack",3);
 
         gameCharacterLoader.setPathTable(tempMap);
 
@@ -96,10 +91,10 @@ public class Jeu implements Game{
         boolean Attack = command.get("Attack");
 
        
-        //perso evolue dans le jeu
+        //perso evolue dans le jeu (en actualisant ses coordonnees)
         gameCharacter.evolveCharacter();
 
-        //animation du perso dans le jeu (definir la bonne frame a tel instant)
+        //animation du perso dans le jeu (definir la bonne frame a cet instant)
         if (Attack) {
             movement = "Character_attack";
             characterAttacking = true;
@@ -121,14 +116,14 @@ public class Jeu implements Game{
 
         //si on a change de mouvement, le jeu doit redemarrer a la premiere frame correspondante
         if (previousMovement != movement){numberOfMovement = 1;nbBeforeFramechgt = nbIterationPerFrame;}
-        if (numberOfMovement == gameCharacterLoader.getPathTable().get(movement).size()){
+        if (numberOfMovement == gameCharacterLoader.getPathTable().get(movement)){
             //characterNotMoving = true;
             if (movement == "Character_attack"){
                 characterAttacking = false;
             }
         }
         if ((nbIterationPerFrame-nbBeforeFramechgt) == nbIterationPerFrame) { // timer pour changer de frame
-            numberOfMovement = numberOfMovement%gameCharacterLoader.getPathTable().get(movement).size() + 1; //a revoir 
+            numberOfMovement = numberOfMovement%gameCharacterLoader.getPathTable().get(movement) + 1; //a revoir 
             nbBeforeFramechgt = nbIterationPerFrame;
         }
         else nbBeforeFramechgt--;
diff --git a/MAVENProject/src/main/java/loaders/CharacterLoader.java b/MAVENProject/src/main/java/loaders/CharacterLoader.java
index e33010a..177fdad 100644
--- a/MAVENProject/src/main/java/loaders/CharacterLoader.java
+++ b/MAVENProject/src/main/java/loaders/CharacterLoader.java
@@ -13,13 +13,13 @@ public class CharacterLoader { // classe qui cree le perso
     private String skinPath; // chemin du skin a l'instant t du jeu
     //private String nameImageOfSkin; // nom de l'image du skin (le truc fonctionne comme ca)
     private Image imageCharacter;
-    private Map<String,List<String>> pathTable; // objet utilise a revoir
+    private Map<String,Integer> pathTable; // objet utilise a revoir
 
     public CharacterLoader(String path,Character charac){
         gameCharacter = charac;
         skinPath = path;
         imageCharacter = new ImageIcon(path).getImage();
-        pathTable = new HashMap<String,List<String>>();
+        pathTable = new HashMap<String,Integer>();
         
     }
 
@@ -44,11 +44,11 @@ public class CharacterLoader { // classe qui cree le perso
         this.skinPath = skinPath;
     }
 
-    public Map<String, List<String>> getPathTable() {
+    public Map<String, Integer> getPathTable() {
         return pathTable;
     }
 
-    public void setPathTable(Map<String, List<String>> pathTable) {
+    public void setPathTable(Map<String, Integer> pathTable) {
         this.pathTable = pathTable;
     }
 
-- 
GitLab