From 4a94b8ac85d758e4a2301592eac51622fb7fe1e9 Mon Sep 17 00:00:00 2001
From: Louis MALTERRE <malterre.louis@laposte.net>
Date: Tue, 6 Dec 2022 10:26:18 +0100
Subject: [PATCH] debut implementation attaque LM

---
 MAVENProject/src/main/java/entity/Attack.java | 21 +++++++++++++++
 MAVENProject/src/main/java/entity/Entity.java | 26 +++++++++----------
 .../src/main/java/entity/Monster.java         | 11 ++++----
 MAVENProject/src/main/java/jeu/Jeu.java       |  1 +
 4 files changed, 41 insertions(+), 18 deletions(-)
 create mode 100644 MAVENProject/src/main/java/entity/Attack.java

diff --git a/MAVENProject/src/main/java/entity/Attack.java b/MAVENProject/src/main/java/entity/Attack.java
new file mode 100644
index 0000000..ae31bdd
--- /dev/null
+++ b/MAVENProject/src/main/java/entity/Attack.java
@@ -0,0 +1,21 @@
+package entity;
+
+import environnement.Coordonnees;
+import environnement.HitBox;
+
+public class Attack {
+
+    int damage;
+    Coordonnees coordCentre;
+    HitBox hitBox;
+
+    public Attack(int dmg,Coordonnees c,HitBox hb){
+        damage = dmg;
+        coordCentre = c;
+        hitBox = hb;
+    }
+
+    public void dealDamage(Entity entity){
+        entity.setNbLifePoints(Math.max(entity.getNbLifePoints()-damage, 0));
+    }
+}
diff --git a/MAVENProject/src/main/java/entity/Entity.java b/MAVENProject/src/main/java/entity/Entity.java
index 1a14d61..73d24c0 100644
--- a/MAVENProject/src/main/java/entity/Entity.java
+++ b/MAVENProject/src/main/java/entity/Entity.java
@@ -13,19 +13,19 @@ import map.Obstacle;
 
 public abstract class Entity {
 
-    protected Coordonnees coord; 
-    protected Coordonnees oldCoord;
-    protected final double vitesseMax;
-    protected HitBox hitBox;
-    protected int attackStat; // nb de pv enleves par attaque
-    protected int maxLifePoints = 3;
-    protected int nbLifePoints = maxLifePoints;
-    protected final double entityWIDTH;
-    protected final double entityHEIGHT;
-    protected int alpha = 1; // gere les collisions avec le sol
-    protected HitBox voisinage;
-    protected int direction = 1; // direction selon l'axe des x, -1 pour la gauche et 1 pour la droite
-    protected List<PositionCollision>  obstacleTableCollision = new ArrayList<>();
+    Coordonnees coord; 
+    Coordonnees oldCoord;
+    final double vitesseMax;
+    HitBox hitBox;
+    int attackStat; // nb de pv enleves par attaque
+    int maxLifePoints = 3;
+    int nbLifePoints = maxLifePoints;
+    final double entityWIDTH;
+    final double entityHEIGHT;
+    int alpha = 1; // gere les collisions avec le sol
+    HitBox voisinage;
+    int direction = 1; // direction selon l'axe des x, -1 pour la gauche et 1 pour la droite
+    List<PositionCollision>  obstacleTableCollision = new ArrayList<>();
 
     
     public Entity(Coordonnees c,double vitesseMax,double width,double height,int atkStt){
diff --git a/MAVENProject/src/main/java/entity/Monster.java b/MAVENProject/src/main/java/entity/Monster.java
index cfbaa0d..8887c1b 100644
--- a/MAVENProject/src/main/java/entity/Monster.java
+++ b/MAVENProject/src/main/java/entity/Monster.java
@@ -9,7 +9,6 @@ import jeu.Jeu;
 import map.Obstacle;
 
 import static jeu.Jeu.getGameCharacter;
-import static jeu.Jeu.getObstacleTable;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -18,7 +17,8 @@ import java.util.List;
 public class Monster extends Entity{
 
     
-    double vitesseActuZ = 0;
+    private double vitesseActuZ = 0;
+    private Obstacle obstacleBeneath = Jeu.getSol(); //obstacle en dessous
 
     public Monster(Coordonnees c, double vitesseMax,double width,double height,int atkStt,int nbLP) {
         super(c, vitesseMax,width,height,atkStt);
@@ -33,8 +33,8 @@ public class Monster extends Entity{
         oldCoord = coord;
 
         //temporaire, pour faire un deplacement cyclique
-        if (coord.getX() < 0)direction = 1;
-        else if (coord.getX() >= 1000)direction = -1;
+        if (coord.getX() < 0 || coord.getX() <= obstacleBeneath.getHitbox().getExtremites().get("HautGauche").getX())direction = 1;
+        else if (coord.getX() >= 1000 || coord.getX() >= obstacleBeneath.getHitbox().getExtremites().get("HautDroite").getX())direction = -1;
         //******************
 
         double newX = coord.getX()+direction*vitesseMax*delta;
@@ -64,6 +64,7 @@ public class Monster extends Entity{
                 this.vitesseActuZ = 0;
                 this.setCoord(new Coordonnees(this.getCoord().getX(), listeObstaclesInVoisinage.get(i).getHitbox().getExtremites().get("HautGauche").getZ()-entityHEIGHT/2));
                 alpha = 1;
+                obstacleBeneath = listeObstaclesInVoisinage.get(i);
                 break;
             }
         }
@@ -124,7 +125,7 @@ public class Monster extends Entity{
     }
 
     public void updateVoisinage(){
-        voisinage = new HitBox(coord, 600, 600);
+        voisinage = new HitBox(coord, 1000, 1000);
     }
 
     public Boolean death(){
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
index fca7b67..0cbeb33 100644
--- a/MAVENProject/src/main/java/jeu/Jeu.java
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -103,6 +103,7 @@ public class Jeu implements Game{
         monsterList.add(new Monster(new Coordonnees(1000, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10));
         monsterList.add(new Monster(new Coordonnees(500, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10));
         monsterList.add(new Monster(new Coordonnees(100, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10));
+        monsterList.add(new Monster(new Coordonnees(300, sol.getHitbox().getExtremites().get("HautGauche").getZ()-500), 1000, 30, 60, 1,10));
 
         //on charge le perso (a la fin du constructeur, cest important par rapport a obstacleTable, sinon y'a des pbs de "causalite")
         gameCharacterLoader = new CharacterLoader(characterSkinPath,new Character(new Coordonnees(300, 300), 2000, 1,600000));
-- 
GitLab