From 4f3658a3f4565869bf80443624e78be81ac988b4 Mon Sep 17 00:00:00 2001
From: bosskkev <kossivikevin29@gmail.com>
Date: Mon, 6 Nov 2023 16:56:44 +0100
Subject: [PATCH] Modification d'Entity

---
 src/main/java/engine/Kernel.java              | 35 ++++++-------------
 .../java/engine/graphic/GraphicEngine.java    |  3 +-
 src/main/java/engine/physic/Entity.java       |  3 ++
 src/main/java/engine/physic/Movable.java      | 10 ++++++
 src/main/java/engine/physic/NotMovable.java   | 10 ++++++
 src/main/java/engine/physic/PhysicEngine.java | 10 +++++-
 src/main/java/pong/PongApp.java               |  3 +-
 7 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java
index 7a13747..aaeb873 100644
--- a/src/main/java/engine/Kernel.java
+++ b/src/main/java/engine/Kernel.java
@@ -16,29 +16,23 @@ import java.util.Random;
 
 public class Kernel {
 
-    ArrayList<Engine> engines = new ArrayList<Engine>();
-    GraphicEngine graphicEngine;
-
-    //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>();
-
+    ArrayList<Engine> engines = new ArrayList<>();
     public static ArrayList<PongObject> gameObjects;
-    public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>();
+
     Movable movable;
 
     public Kernel(String gameName, int width, int height, ArrayList<PongObject> gameObjects) throws IOException {
-
         this.setGameObject(gameObjects);
         System.out.println("Model created");
 
-        this.graphicEngine = new GraphicEngine(); // Will create a new grid and a new kernel
-        graphicEngine.init(gameName, width, height); // Will start the kernel and set the keys listeners
-
-        engines.add(this.graphicEngine);//
+        GraphicEngine graphicEngine = new GraphicEngine();
+        graphicEngine.init(gameName, width, height);
 
-        engines.add(new PhysicEngine());
+        engines.add(graphicEngine); //Adding graphic engine
+        engines.add(new PhysicEngine()); //Adding physic engine
 
         this.start();
-        this.setKeysListeners((JPanel) this.graphicEngine.getContentPane());
+        this.setKeysListeners((JPanel) graphicEngine.getContentPane());
     }
 
     /**
@@ -47,11 +41,10 @@ public class Kernel {
      * @throws IOException
      */
     public void start() throws IOException {
-        Random random = new Random(); // For random speed
-
-
-        graphicEngine.update();
-
+        for (Engine engine: engines
+        ) {
+            engine.update();
+        }
     }
 
 
@@ -60,15 +53,10 @@ public class Kernel {
      */
     public void update() {
         System.out.println("One step");
-        // Updating all objects positions
-
         for (Engine engine: engines
              ) {
             engine.update();
         }
-        // Repainting the grid
-        graphicEngine.repaint();
-        graphicEngine.revalidate();
     }
 
     /**
@@ -78,7 +66,6 @@ public class Kernel {
         mainPanel.addKeyListener(new java.awt.event.KeyAdapter() {
             public void keyPressed(java.awt.event.KeyEvent evt) {
                 switch (evt.getKeyCode()) {
-                    // J'ai essayƩ mais je me perds pour gerer les debordements
                     case java.awt.event.KeyEvent.VK_UP -> {
                         movable.setSpeed(new Coordinates2D(0, -1));
                     }
diff --git a/src/main/java/engine/graphic/GraphicEngine.java b/src/main/java/engine/graphic/GraphicEngine.java
index c284e0a..f78e8cb 100644
--- a/src/main/java/engine/graphic/GraphicEngine.java
+++ b/src/main/java/engine/graphic/GraphicEngine.java
@@ -40,8 +40,9 @@ public class GraphicEngine extends JFrame implements Engine {
             } catch (IOException e) {
                 throw new RuntimeException(e);
             }
-
         }
+        repaint();
+        revalidate();
     }
 
 
diff --git a/src/main/java/engine/physic/Entity.java b/src/main/java/engine/physic/Entity.java
index 578ef15..9b1fd46 100644
--- a/src/main/java/engine/physic/Entity.java
+++ b/src/main/java/engine/physic/Entity.java
@@ -78,4 +78,7 @@ public interface Entity {
      */
     public void halt();
 
+    int getWidth();
+
+    int getHeight();
 }
diff --git a/src/main/java/engine/physic/Movable.java b/src/main/java/engine/physic/Movable.java
index beb4b7e..b62d88a 100644
--- a/src/main/java/engine/physic/Movable.java
+++ b/src/main/java/engine/physic/Movable.java
@@ -97,4 +97,14 @@ public class Movable implements Entity {
         }
 
     }
+
+    @Override
+    public int getWidth() {
+        return width;
+    }
+
+    @Override
+    public int getHeight() {
+        return height;
+    }
 }
diff --git a/src/main/java/engine/physic/NotMovable.java b/src/main/java/engine/physic/NotMovable.java
index f6ecdb1..8b7e9aa 100644
--- a/src/main/java/engine/physic/NotMovable.java
+++ b/src/main/java/engine/physic/NotMovable.java
@@ -68,4 +68,14 @@ public class NotMovable implements Entity {
 
     }
 
+    @Override
+    public int getWidth() {
+        return 0;
+    }
+
+    @Override
+    public int getHeight() {
+        return 0;
+    }
+
 }
diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java
index 0261f5a..64ac670 100644
--- a/src/main/java/engine/physic/PhysicEngine.java
+++ b/src/main/java/engine/physic/PhysicEngine.java
@@ -9,6 +9,8 @@ import java.util.HashMap;
 
 public class PhysicEngine implements Engine {
     public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>();
+
+    private HashMap<Coordinates2D, PongObject> positions = new HashMap<>();
     public PhysicEngine(){
         for (PongObject pongObject: Kernel.gameObjects) {
             Coordinates2D speed = new Coordinates2D(0, 0);
@@ -17,7 +19,7 @@ public class PhysicEngine implements Engine {
             }
             //Coordinates2D speed = new Coordinates2D(random.nextInt(2) - 1, random.nextInt(2) - 1);
             pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight()));
-
+            positions.put(pongObject.getPosition(), pongObject);
 
         }
     }
@@ -25,7 +27,13 @@ public class PhysicEngine implements Engine {
     public void update(){
         for (PongObject pongObject: Kernel.gameObjects) {
             pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position
+            //checkCollision();
             pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position
         }
     }
+
+    public void checkCollision(Entity firstObject, Entity secondObject){
+        //TODO: check collision between two objects
+    }
+
 }
diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java
index 5040f2d..3a4d160 100644
--- a/src/main/java/pong/PongApp.java
+++ b/src/main/java/pong/PongApp.java
@@ -30,10 +30,11 @@ public class PongApp {
         Kernel kernel = new Kernel("Pong", width, height, components);
         //kernel.setGameObject(components);
 
+
         while(true){
             try {
                 kernel.update();
-                Thread.sleep(10);
+                Thread.sleep(1);
             } catch (InterruptedException e) {
                 e.printStackTrace();
             }
-- 
GitLab