From ed10ca7cff4d5116e47ef9444a0d06cdadddcb19 Mon Sep 17 00:00:00 2001
From: Azurlors <florianrichard2001@gmail.com>
Date: Thu, 8 Dec 2022 00:57:20 +0100
Subject: [PATCH] De rien pour la Cam

---
 .../src/main/java/engine/DrawingPanel.java    | 13 +++++--
 .../src/main/java/entity/Character.java       |  3 --
 MAVENProject/src/main/java/jeu/Jeu.java       | 11 ++++--
 MAVENProject/src/main/java/jeu/Painter.java   | 35 +++++++++++--------
 4 files changed, 39 insertions(+), 23 deletions(-)

diff --git a/MAVENProject/src/main/java/engine/DrawingPanel.java b/MAVENProject/src/main/java/engine/DrawingPanel.java
index 9586bce..b98995b 100644
--- a/MAVENProject/src/main/java/engine/DrawingPanel.java
+++ b/MAVENProject/src/main/java/engine/DrawingPanel.java
@@ -9,6 +9,7 @@ import java.awt.Graphics;
 import java.awt.image.BufferedImage;
 
 import javax.swing.JPanel;
+import static jeu.Jeu.getGameCharacter;
 
 public class DrawingPanel extends JPanel {
 
@@ -89,8 +90,16 @@ public class DrawingPanel extends JPanel {
 	 */
 	public void paint(Graphics g) {
 		super.paint(g);
-		g.drawImage(this.currentImage, 0, 0, getWidth(), getHeight(), 0, 0,
-				getWidth(), getHeight(), null);
+		if (getGameCharacter().getCoord() != null){
+			int x = (int) getGameCharacter().getCoord().getX();
+			int z = (int) getGameCharacter().getCoord().getZ();
+			g.drawImage(this.currentImage, 0,0, getWidth(), getHeight(),0,  0, getWidth(), getHeight(), null);
+		}
+		else {
+			g.drawImage(this.currentImage, 0,0, getWidth(), getHeight()+100, 0, 0,
+					getWidth(), getHeight(), null);
+			System.out.println("test");
+		}
 	}
 
 }
diff --git a/MAVENProject/src/main/java/entity/Character.java b/MAVENProject/src/main/java/entity/Character.java
index 64955ae..1c4ee7e 100644
--- a/MAVENProject/src/main/java/entity/Character.java
+++ b/MAVENProject/src/main/java/entity/Character.java
@@ -27,14 +27,11 @@ public class Character extends Entity{
     private Map<String,Double> tableCommande; //table des commandes du perso
 
     //private BufferedImage sprite;
-    
-
 
     public Character(Coordonnees c, double vitesseMax, double m, double impSaut){
         super(c,vitesseMax,30,60,1); // comme tous les entities ont une hitbox, j'ai factorise
         this.masse = m;
         this.impulsionSaut = impSaut;
-
         this.tableCommande = new HashMap<>();
         tableCommande.put("CommandX",(double)0);
         tableCommande.put("CommandZ",(double)0);
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
index 0cbeb33..1d7dfd5 100644
--- a/MAVENProject/src/main/java/jeu/Jeu.java
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -23,6 +23,11 @@ public class Jeu implements Game{
     //coordonnees du sol
     //private static Coordonnees coordSol = new Coordonnees(200,700); //coordonnees du sol (en realite juste Z nous interesse)
 
+
+    //Coordonees de debut du personnage
+    static final double zdebut = 300;
+    static final double xdebut = 300;
+
     //perso
     static Character gameCharacter;
 
@@ -107,7 +112,7 @@ public class Jeu implements Game{
 
         //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));
-        gameCharacter = new Character(new Coordonnees(300, 300), 2000, 1,600000);
+        gameCharacter = new Character(new Coordonnees(xdebut, zdebut), 2000, 1,600000);
 
         //on remplit la map des frames
         Map<String,Integer> tempMap = gameCharacterLoader.getPathTable();
@@ -174,11 +179,11 @@ public class Jeu implements Game{
  
         //si on a change de mouvement, le jeu doit redemarrer a la premiere frame correspondante
         //System.out.println(numberOfMovement);
-        if (previousMovement != movement){numberOfMovement = 1;nbBeforeFramechgt = nbIterationPerFrame;}
+        if ( !previousMovement.equals(movement)){numberOfMovement = 1;nbBeforeFramechgt = nbIterationPerFrame;}
         if (numberOfMovement == gameCharacterLoader.getPathTable().get(movement)){
             //System.out.println(movement);
             //characterNotMoving = true;
-            if (movement == "character_attack"){
+            if (movement.equals("character_attack")){
                 characterAttacking = false;
             }
         }
diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java
index 04558e9..4cdfb96 100644
--- a/MAVENProject/src/main/java/jeu/Painter.java
+++ b/MAVENProject/src/main/java/jeu/Painter.java
@@ -25,31 +25,36 @@ public class Painter implements GamePainter{
 
     public static Obstacle test = new Obstacle(new HitBox(new Coordonnees(300,550),32,128));
 
+    private static Coordonnees coordonneesCam;
+    private int xCam;
+    private int zCam;
+
     public Painter() {
         
     }
 
     @Override
     public void draw(BufferedImage im) {
+        coordonneesCam = gameCharacter.getCoord();
+        xCam = -WIDTH/2 + (int) coordonneesCam.getX();
+        zCam = -HEIGHT/2 +(int) coordonneesCam.getZ();
+
         Graphics2D crayon = (Graphics2D) im.getGraphics();
         crayon.setColor(Color.blue);
         drawCharacter(crayon,gameCharacterLoader.getImageCharacter());
 
-        //drawQuadrillage(crayon);*/
         drawMap(crayon);
         drawSol(crayon);
-        drawObstacleBis(crayon,test,"plateforme.png");
+        drawObstacleBis(crayon,test,"plateforme.png"); // A changer
         drawLifePoints(crayon);
         drawMonsters(crayon);
     }
 
 
     private void drawCharacter(Graphics2D crayon,Image imageCharac){
-        int x = (int) gameCharacter.getCoord().getX();
-        int y = (int) gameCharacter.getCoord().getZ();
-        crayon.fillRect(x-(int) gameCharacter.getEntityWIDTH()/2,y-(int) gameCharacter.getEntityHEIGHT()/2, (int) gameCharacter.getEntityWIDTH(),(int) gameCharacter.getEntityHEIGHT());
-        crayon.drawRect(x-500,y-500, 1000,1000);
-        crayon.drawImage(imageCharac, x-(int) gameCharacter.getEntityWIDTH()/2-10, y- (int) gameCharacter.getEntityHEIGHT()/2-3, null, null);
+        crayon.fillRect(WIDTH/2-(int) gameCharacter.getEntityWIDTH()/2,WIDTH/2-(int) gameCharacter.getEntityHEIGHT()/2, (int) gameCharacter.getEntityWIDTH(),(int) gameCharacter.getEntityHEIGHT());
+        crayon.drawRect(WIDTH/2-500,WIDTH/2-500, 1000,1000);
+        crayon.drawImage(imageCharac, WIDTH/2- (int) gameCharacter.getEntityWIDTH()/2-10, HEIGHT/2 - (int) gameCharacter.getEntityHEIGHT()/2-3, null, null);
 
     }
 
@@ -78,10 +83,10 @@ public class Painter implements GamePainter{
         Coordonnees hg = extremites.get("HautGauche");
         Coordonnees bg = extremites.get("BasGauche");
         if (HitBox.collision(gameCharacter.getVoisinage(), obstacle.getHitbox()))crayon.setColor(Color.green);
-        crayon.drawLine((int)hd.getX(),(int)hd.getZ(),(int)bd.getX(),(int)bd.getZ());
-        crayon.drawLine((int)bd.getX(),(int)bd.getZ(),(int)bg.getX(),(int)bg.getZ());
-        crayon.drawLine((int)bg.getX(),(int)bg.getZ(),(int)hg.getX(),(int)hg.getZ());
-        crayon.drawLine((int)hg.getX(),(int)hg.getZ(),(int)hd.getX(),(int)hd.getZ());
+        crayon.drawLine((int)hd.getX() - xCam,(int)hd.getZ() - zCam,(int)bd.getX() - xCam,(int)bd.getZ() - zCam);
+        crayon.drawLine((int)bd.getX() - xCam,(int)bd.getZ() - zCam,(int)bg.getX() - xCam,(int)bg.getZ() - zCam);
+        crayon.drawLine((int)bg.getX() - xCam,(int)bg.getZ() - zCam,(int)hg.getX() - xCam,(int)hg.getZ() - zCam);
+        crayon.drawLine((int)hg.getX() - xCam,(int)hg.getZ() - zCam,(int)hd.getX() - xCam,(int)hd.getZ() - zCam);
 
     }
     /*private void drawCoffre(Graphics2D crayon, Coffre coffre){
@@ -102,7 +107,7 @@ public class Painter implements GamePainter{
         HitBox hitBox = loader.getObstacle().getHitbox();
         int z = (int) hitBox.getCentre().getZ();
         for (int x = 0;x<3000;x+=128) {
-            crayon.drawImage(loader.getImageObstacle(),x,z ,null,null);
+            crayon.drawImage(loader.getImageObstacle(),x -xCam ,z - zCam,null,null);
         }
     }
 
@@ -132,7 +137,7 @@ public class Painter implements GamePainter{
         HitBox hitBox = loader.getObstacle().getHitbox();
         int z = (int) hitBox.getCentre().getZ();
         int x = (int) hitBox.getCentre().getX();
-        crayon.drawImage(loader.getImageObstacle(), x - (int) hitBox.getWidth()/2,z - (int) hitBox.getHeight()/2,null,null);
+        crayon.drawImage(loader.getImageObstacle(), x - (int) hitBox.getWidth()/2 -xCam,z - (int) hitBox.getHeight()/2 -zCam,null,null);
     }
     
     /*private void drawCoffreBis(Graphics2D crayon, Coffre coffre, String nom){
@@ -152,9 +157,9 @@ public class Painter implements GamePainter{
             
             x = (int)monster.getCoord().getX();
             z = (int)monster.getCoord().getZ();
-            crayon.drawRect(x-300, z-300, 600, 600);
+            crayon.drawRect(x-300 - xCam, z-300 - zCam, 600, 600);
             if (HitBox.collision(gameCharacter.getHitBox(),monster.getHitBox()))crayon.setColor(Color.red);
-            crayon.fillRect(x-(int)monster.getEntityWIDTH()/2, z-(int)monster.getEntityHEIGHT()/2, (int)monster.getEntityWIDTH(), (int)monster.getEntityHEIGHT());
+            crayon.fillRect(x-(int)monster.getEntityWIDTH()/2 - xCam, z-(int)monster.getEntityHEIGHT()/2 - zCam, (int)monster.getEntityWIDTH(), (int)monster.getEntityHEIGHT());
         }
     }
 
-- 
GitLab