From f6ce5f3484469b139a4bc40d5208431b56c58100 Mon Sep 17 00:00:00 2001
From: Louis MALTERRE <malterre.louis@laposte.net>
Date: Fri, 16 Dec 2022 17:47:12 +0100
Subject: [PATCH] debut sprites obstacles et coffres LM

---
 Backlog sprint 4                              |  5 ++++
 MAVENProject/src/main/java/jeu/Jeu.java       | 10 ++++---
 MAVENProject/src/main/java/jeu/Painter.java   | 13 +++++++--
 .../src/main/java/loaders/ObstacleLoader.java |  1 +
 MAVENProject/src/main/java/map/Coffre.java    | 14 ++++++++++
 .../src/main/java/map/LevelManager.java       | 27 ++++++++++++++-----
 6 files changed, 58 insertions(+), 12 deletions(-)
 create mode 100644 Backlog sprint 4

diff --git a/Backlog sprint 4 b/Backlog sprint 4
new file mode 100644
index 0000000..911bf5b
--- /dev/null
+++ b/Backlog sprint 4	
@@ -0,0 +1,5 @@
+Porte du Boss
+boss
+Mort du perso/boss (donc fin du jeu)
+Menu (page instructions, debut, fin, choix du niveau et perso)
+implémentation de soin (apparition aléatoire d'un coeur en tuant un monstre)
\ No newline at end of file
diff --git a/MAVENProject/src/main/java/jeu/Jeu.java b/MAVENProject/src/main/java/jeu/Jeu.java
index c5625cd..3d4f726 100644
--- a/MAVENProject/src/main/java/jeu/Jeu.java
+++ b/MAVENProject/src/main/java/jeu/Jeu.java
@@ -71,7 +71,8 @@ public class Jeu implements Game{
     public final static int TILES_IN_WIDTH = 60;
     public final static int TILES_IN_HEIGHT = 20;
     public final static int TILES_SIZE = (int) (TILES_DEFAULT_SIZE*SCALE);
-    LevelManager levelManager;
+    private static final LevelManager levelManager = new LevelManager();
+    ;
 
     public Jeu(String source) {
 
@@ -87,8 +88,7 @@ public class Jeu implements Game{
         /*A = new ArrayList<Double>();
         n = 0;*/
 
-        levelManager = new LevelManager();
-
+        
         try {
             helpReader = new BufferedReader(new FileReader(source));
             String line;
@@ -262,6 +262,10 @@ public class Jeu implements Game{
         Jeu.kunaiList = kunaiList;
     }
 
+    public static LevelManager getLevelmanager() {
+        return levelManager;
+    }
+
     
     
 }
\ No newline at end of file
diff --git a/MAVENProject/src/main/java/jeu/Painter.java b/MAVENProject/src/main/java/jeu/Painter.java
index 0757b81..3f01b0f 100644
--- a/MAVENProject/src/main/java/jeu/Painter.java
+++ b/MAVENProject/src/main/java/jeu/Painter.java
@@ -102,8 +102,8 @@ public class Painter implements GamePainter{
         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 drawObstacleBis(Graphics2D crayon, Obstacle obstacle, String nom){
-        ObstacleLoader loader = new ObstacleLoader(obstacle,nom);
+    private void drawObstacleBis(Graphics2D crayon, Obstacle obstacle, BufferedImage bufferedImage){
+        ObstacleLoader loader = new ObstacleLoader(obstacle,bufferedImage);
         HitBox hitBox = loader.getObstacle().getHitbox();
         int z = (int) hitBox.getCentre().getZ();
         int x = (int) hitBox.getCentre().getX();
@@ -112,6 +112,7 @@ public class Painter implements GamePainter{
 
     private void drawCoffre(Graphics2D crayon, Coffre coffre){
         HashMap<String, Coordonnees> extremites = coffre.getHitbox().getExtremites();
+        Coordonnees coffreCenter = coffre.getHitbox().getCentre();
         Coordonnees hd = extremites.get("HautDroite");
         Coordonnees bd = extremites.get("BasDroite");
         Coordonnees hg = extremites.get("HautGauche");
@@ -120,6 +121,7 @@ public class Painter implements GamePainter{
         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);
+        crayon.drawImage(coffre.getImage(), (int)coffreCenter.getX() - (int) coffre.getHitbox().getWidth()/2 -xCam,(int) coffreCenter.getZ() - (int) coffre.getHitbox().getHeight()/2 -zCam,null,null);
 
     }
 
@@ -143,6 +145,7 @@ public class Painter implements GamePainter{
             }
             drawObstacle(crayon,obs);
         }
+        drawAllObstacle(crayon);
         for (Coffre obs : Jeu.getCoffreTable()){
             if (!collision(gameCharacter.getHitBox(), obs.getHitbox())){
                 crayon.setColor(Color.blue);
@@ -154,6 +157,12 @@ public class Painter implements GamePainter{
         }
     }
 
+    private void drawAllObstacle(Graphics2D crayon){
+        for (int i=0;i < Jeu.getObstacleTable().size()-1;i++){
+            drawObstacleBis(crayon, Jeu.getObstacleTable().get(i), getLevelmanager().getObstacleImage().get(i));
+        }
+    }
+
     
     /*private void drawCoffreBis(Graphics2D crayon, Coffre coffre, String nom){
         CoffreLoader loader = new CoffreLoader(coffre,nom);
diff --git a/MAVENProject/src/main/java/loaders/ObstacleLoader.java b/MAVENProject/src/main/java/loaders/ObstacleLoader.java
index 5bdd2ad..9cd7b3a 100644
--- a/MAVENProject/src/main/java/loaders/ObstacleLoader.java
+++ b/MAVENProject/src/main/java/loaders/ObstacleLoader.java
@@ -10,6 +10,7 @@ public class ObstacleLoader {
 
     private final Image imageObstacle;
     private final Obstacle obstacle;
+    
 
     public Image getImageObstacle() {
         return imageObstacle;
diff --git a/MAVENProject/src/main/java/map/Coffre.java b/MAVENProject/src/main/java/map/Coffre.java
index 92c26e7..4aed7d0 100644
--- a/MAVENProject/src/main/java/map/Coffre.java
+++ b/MAVENProject/src/main/java/map/Coffre.java
@@ -1,6 +1,11 @@
 package map;
 
+import java.io.BufferedReader;
+import java.net.URL;
+import java.awt.image.BufferedImage;
+
 import environnement.HitBox;
+import jeu.Jeu;
 
 
 
@@ -8,12 +13,21 @@ public class Coffre {
 
     private final HitBox hitbox;
     public boolean key = true;
+    private BufferedImage image;
 
     public Coffre(HitBox h){
         this.hitbox = h;
+        image = Jeu.getLevelmanager().getImageCoffre();
+
+
     }
     public HitBox getHitbox() {
         return hitbox;
     }
+    public BufferedImage getImage() {
+        return image;
+    }
+
+    
 
 }
diff --git a/MAVENProject/src/main/java/map/LevelManager.java b/MAVENProject/src/main/java/map/LevelManager.java
index 2c7bcf7..510e515 100644
--- a/MAVENProject/src/main/java/map/LevelManager.java
+++ b/MAVENProject/src/main/java/map/LevelManager.java
@@ -18,13 +18,14 @@ public class LevelManager {
 
 	private BufferedImage[] levelSprite;
 	private Level levelOne;
+	private List<BufferedImage> obstacleImage = new ArrayList<>();
 
 	public LevelManager() {
 		importOutsideSprites();
 		levelOne = new Level(LoadSave.GetLevelData());
 	}
 
-	private void importOutsideSprites() {
+	private BufferedImage[] importOutsideSprites() {
 		BufferedImage img = LoadSave.GetSpriteAtlas(LoadSave.LEVEL_SPRITES);
 		levelSprite = new BufferedImage[7];
 
@@ -48,10 +49,14 @@ public class LevelManager {
 				int index = j * 9 + i;
 				levelSprite[index] = img.getSubimage(i * 32, j * 32, 32, 32);
 			}*/
+		return levelSprite;
 	}
 
+
+
 	public List<Obstacle> generateObstacleTable() {
 		List<Obstacle> obstacleList = new ArrayList<>();
+		BufferedImage[] tabImages = importOutsideSprites();
 		for (int j = 0; j < Jeu.TILES_IN_HEIGHT; j++){
 			for (int i = 0; i < Jeu.TILES_IN_WIDTH; i++) {
 				int index = levelOne.getSpriteIndex(i, j);
@@ -60,32 +65,32 @@ public class LevelManager {
 				//longs blocs de 6 de hauteur
 				if (index==0) {
 					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-6*Jeu.TILES_SIZE/2), 6*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
-
+					obstacleImage.add(tabImages[0]);
 				}
 				//Blocs de 3 pixels de hauteur
 				if (index==1) {
 					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-3*Jeu.TILES_SIZE/2), 3*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
-
+					obstacleImage.add(tabImages[1]);
 				}
 				//Blocs de 2 de hauteur
 				if (index==2) {
 					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-2*Jeu.TILES_SIZE/2), 2*Jeu.TILES_SIZE, 1*Jeu.TILES_SIZE)));
-
+					obstacleImage.add(tabImages[2]);
 				}
 				//bloc de 2 de longueur
 				if (index==3) {
 					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+2*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 2*Jeu.TILES_SIZE)));
-
+					obstacleImage.add(tabImages[3]);
 				}
 				//Bloc de 3 de longeur
 				if (index==5) {
 					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+3*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 3*Jeu.TILES_SIZE)));
-
+					obstacleImage.add(tabImages[4]);
 				}
 				//Long bloc de 7 de longueur
 				if (index==25) {
 					obstacleList.add(new Obstacle(new HitBox(new Coordonnees(Jeu.TILES_SIZE * i+7*Jeu.TILES_SIZE/2, Jeu.TILES_SIZE * j-Jeu.TILES_SIZE/2), 1*Jeu.TILES_SIZE, 7*Jeu.TILES_SIZE)));
-
+					obstacleImage.add(tabImages[6]);
 				}
 
 			}
@@ -134,6 +139,14 @@ public class LevelManager {
 
 	public Level getCurrentLevel() {
 		return levelOne;
+	}
+
+	public List<BufferedImage> getObstacleImage() {
+		return obstacleImage;
 	} 
 
+	public BufferedImage getImageCoffre() {
+		return importOutsideSprites()[5];
+	} 
+	
 }
-- 
GitLab