diff --git a/src/main/Makefile b/src/main/Makefile new file mode 100644 index 0000000..595a04a --- /dev/null +++ b/src/main/Makefile @@ -0,0 +1,98 @@ +### VARIABLES ### + +JC = javac +JCFLAGS = -encoding UTF-8 -implicit:none -d classes + +JVM = java +JVMFLAGS = + +### RÈGLES ESSENTIELLES ### + +Main.class: Main.java java/controller/MenuController.class java/view/MenuView.class java/controller/GameController.class + $(JC) $(JCFLAGS) Main.java + +java/controller/MenuController.class: java/controller/MenuController.java java/model/MenuModel.class java/view/MenuView.class java/controller/NewListener.class java/controller/QuiListener.class java/controller/ResListener.class + $(JC) $(JCFLAGS) java/controller/MenuController.java + +java/controller/NewListener.class: java/controller/NewListener.java + $(JC) $(JCFLAGS) java/controller/NewListener.java + +java/controller/QuiListener.class: java/controller/QuiListener.java + $(JC) $(JCFLAGS) java/controller/QuiListener.java + +java/controller/ResListener.class: java/controller/ResListener.java java/view/GameView.class + $(JC) $(JCFLAGS) java/controller/ResListener.java + +java/view/GameView.class: java/view/GameView.java java/controller/MouseWheelController.class java/controller/GameController.class java/view/HexagonTile.class + $(JC) $(JCFLAGS) java/view/GameView.java + +java/controller/MouseWheelController.class: java/controller/MouseWheelController.java java/view/HexagonTile.class java/controller/GameController.class + $(JC) $(JCFLAGS) java/controller/MouseWheelController.java + +java/controller/HexagonMouseListener.class: java/controller/HexagonMouseListener.java java/view/HexagonTile.class java/controller/TilePlacer.class + $(JC) $(JCFLAGS) java/controller/HexagonMouseListener.java + +java/controller/GameController.class: java/controller/GameController.java java/controller/TilePlacer.class java/model/Tile.class java/controller/CameraController.class java/controller/HexagonMouseListener.class + $(JC) $(JCFLAGS) java/controller/GameController.java + +java/controller/CameraController.class: java/controller/CameraController.java java/controller/GameContext.class java/controller/MousePressHandler.class java/controller/MouseDragHandler.class + $(JC) $(JCFLAGS) java/controller/CameraController.java + +java/controller/GameContext.class: java/controller/GameContext.java java/view/HexagonTile.class + $(JC) $(JCFLAGS) java/controller/GameContext.java + +java/view/HexagonTile.class: java/view/HexagonTile.java java/model/Tile.class java/model/TerrainType.class + $(JC) $(JCFLAGS) java/view/HexagonTile.java + +java/model/MenuModel.class: java/model/MenuModel.java + $(JC) $(JCFLAGS) java/model/MenuModel.java + +java/view/MenuView.class: java/view/MenuView.java java/view/BtnPerso.class java/view/ButtonHoverListener.class + $(JC) $(JCFLAGS) java/view/MenuView.java + +java/model/Tile.class: java/model/Tile.java java/model/TerrainType.class + $(JC) $(JCFLAGS) java/model/Tile.java + +java/model/TerrainType.class: java/model/TerrainType.java + $(JC) $(JCFLAGS) java/model/TerrainType.java + +java/view/ButtonHoverListener.class: java/view/ButtonHoverListener.java + $(JC) $(JCFLAGS) java/view/ButtonHoverListener.java + +java/view/BtnPerso.class: java/view/BtnPerso.java + $(JC) $(JCFLAGS) java/view/BtnPerso.java + +java/controller/MousePressHandler.class: java/controller/MousePressHandler.java java/controller/CameraControllerListener.class + $(JC) $(JCFLAGS) java/controller/MousePressHandler.java + +java/controller/MouseDragHandler.class: java/controller/MouseDragHandler.java java/controller/CameraControllerListener.class + $(JC) $(JCFLAGS) java/controller/MouseDragHandler.java + +java/controller/CameraControllerListener.class: java/controller/CameraControllerListener.java + $(JC) $(JCFLAGS) java/controller/CameraControllerListener.java + +java/controller/TilePlacer.class: java/controller/TilePlacer.java + $(JC) $(JCFLAGS) java/controller/TilePlacer.java + +### RÈGLE POUR COPIER LES IMAGES ### + +copy-images: + mkdir -p classes/java/view/img + if [ -d java/view/img ]; then cp -r java/view/img/* classes/java/view/img/; else echo "Le répertoire java/view/img n'existe pas."; fi + +### RÈGLES OPTIONNELLES ### + +run: Main.class copy-images + $(JVM) $(JVMFLAGS) -cp classes main.Main + +clean: + -rm -f classes/**/*.class + +mrproper: clean + -rm -rf classes/java/view/img + +### BUTS FACTICES ### + +.PHONY: run clean mrproper copy-images + +### FIN ### diff --git a/src/main/classes/java/view/img/D.png b/src/main/classes/java/view/img/D.png new file mode 100644 index 0000000..7dc4b96 Binary files /dev/null and b/src/main/classes/java/view/img/D.png differ diff --git a/src/main/classes/java/view/img/bg.png b/src/main/classes/java/view/img/bg.png new file mode 100644 index 0000000..e3621e8 Binary files /dev/null and b/src/main/classes/java/view/img/bg.png differ diff --git a/src/main/classes/java/view/img/quit.png b/src/main/classes/java/view/img/quit.png new file mode 100644 index 0000000..aa7b154 Binary files /dev/null and b/src/main/classes/java/view/img/quit.png differ diff --git a/src/main/java/controller/CameraController.java b/src/main/java/controller/CameraController.java index a1950c6..e40c0a2 100644 --- a/src/main/java/controller/CameraController.java +++ b/src/main/java/controller/CameraController.java @@ -3,8 +3,7 @@ package controller; import javax.swing.JPanel; import java.awt.Point; - -public class CameraController { +public class CameraController implements CameraControllerListener { private Point mouseDragStart = null; private GameContext context; @@ -16,6 +15,7 @@ public class CameraController { setupMouseDragToMove(gridPanel); // Initialise les écouteurs pour gérer le déplacement } + @Override public void updateViewOffset(int deltaX, int deltaY) { // Met à jour uniquement l'offset dans GameContext context.updateOffset(deltaX, deltaY); @@ -27,18 +27,21 @@ public class CameraController { } private void setupMouseDragToMove(JPanel gridPanel) { - gridPanel.addMouseListener(new MousePressHandler(this, context)); - gridPanel.addMouseMotionListener(new MouseDragHandler(this, context)); + gridPanel.addMouseListener(new MousePressHandler(this)); + gridPanel.addMouseMotionListener(new MouseDragHandler(this)); } + @Override public void setMouseDragStart(Point point) { this.mouseDragStart = point; } + @Override public Point getMouseDragStart() { return mouseDragStart; } + @Override public void resetMouseDragStart() { this.mouseDragStart = null; } diff --git a/src/main/java/controller/CameraControllerListener.java b/src/main/java/controller/CameraControllerListener.java new file mode 100644 index 0000000..514b9b0 --- /dev/null +++ b/src/main/java/controller/CameraControllerListener.java @@ -0,0 +1,10 @@ +package controller; + +import java.awt.Point; + +public interface CameraControllerListener { + void updateViewOffset(int deltaX, int deltaY); + void setMouseDragStart(Point point); + Point getMouseDragStart(); + void resetMouseDragStart(); +} diff --git a/src/main/java/controller/GameController.java b/src/main/java/controller/GameController.java index 01fbb78..a9ba2e4 100644 --- a/src/main/java/controller/GameController.java +++ b/src/main/java/controller/GameController.java @@ -8,7 +8,7 @@ import java.awt.Point; import java.util.Map; import java.util.Set; -public class GameController { +public class GameController implements TilePlacer { private Map<Point, HexagonTile> hexagonMap; private Set<Point> availablePositions; private JPanel gridPanel; @@ -28,8 +28,8 @@ public class GameController { updatePreview(); } + @Override public void placeTile(Point position) { - // Vérifier si la position est disponible if (availablePositions.contains(position)) { HexagonTile hexTile = hexagonMap.get(position); if (hexTile == null) { @@ -37,27 +37,21 @@ public class GameController { return; } - // Assigner la tuile actuelle hexTile.setTile(nextTile); gridPanel.revalidate(); gridPanel.repaint(); - // Retirer la position des positions disponibles availablePositions.remove(position); - // Mettre à jour les positions adjacentes Point[] adjacentPositions = getAdjacentPositions(position); for (Point adj : adjacentPositions) { if (!hexagonMap.containsKey(adj)) { availablePositions.add(adj); - addHexagonTile(adj, gridPanel, 50, null, null); // Ajouter des placeholders + addHexagonTile(adj, gridPanel, 50, null, null); } } - // Repeindre la grille gameContext.repaintGrid(gridPanel); - - // Générer une nouvelle tuile pour la prochaine preview generateNextTile(); } } @@ -72,8 +66,6 @@ public class GameController { initialPosition.setLocation(centerX / 50, centerY / 50); placeInitialTile(initialPosition, cameraController, initialTile); - - // Générer la première tuile pour la preview generateNextTile(); } @@ -126,7 +118,6 @@ public class GameController { } public void generateNextTile() { - // Génère une nouvelle tuile pour la prochaine pose nextTile = new Tile(); updatePreview(); } diff --git a/src/main/java/controller/HexagonMouseListener.java b/src/main/java/controller/HexagonMouseListener.java index c04194a..cd9b3ae 100644 --- a/src/main/java/controller/HexagonMouseListener.java +++ b/src/main/java/controller/HexagonMouseListener.java @@ -8,12 +8,12 @@ import java.util.Set; public class HexagonMouseListener extends MouseAdapter { private final HexagonTile hexTile; - private final GameController gameController; + private final TilePlacer tilePlacer; private final Set<Point> availablePositions; - public HexagonMouseListener(HexagonTile hexTile, GameController gameController, Set<Point> availablePositions) { + public HexagonMouseListener(HexagonTile hexTile, TilePlacer tilePlacer, Set<Point> availablePositions) { this.hexTile = hexTile; - this.gameController = gameController; + this.tilePlacer = tilePlacer; this.availablePositions = availablePositions; } @@ -22,12 +22,7 @@ public class HexagonMouseListener extends MouseAdapter { Point position = hexTile.getPosition(); if (availablePositions.contains(position)) { System.out.println("Hexagone cliqué à la position : " + position); - - // Appeler le GameController pour placer une nouvelle tuile à cet emplacement - gameController.placeTile(position); - - // Générer la prochaine tuile après avoir placé celle-ci - gameController.generateNextTile(); + tilePlacer.placeTile(position); } else { System.out.println("Position non disponible pour le placement"); } diff --git a/src/main/java/controller/MouseDragHandler.java b/src/main/java/controller/MouseDragHandler.java index f9db7f3..7c1315a 100644 --- a/src/main/java/controller/MouseDragHandler.java +++ b/src/main/java/controller/MouseDragHandler.java @@ -7,31 +7,31 @@ import javax.swing.SwingUtilities; public class MouseDragHandler extends MouseAdapter { - private CameraController controller; + private CameraControllerListener listener; - public MouseDragHandler(CameraController controller, GameContext context) { - this.controller = controller; + public MouseDragHandler(CameraControllerListener listener) { + this.listener = listener; } @Override public void mouseDragged(MouseEvent e) { - if (controller.getMouseDragStart() != null && SwingUtilities.isRightMouseButton(e)) { + if (listener.getMouseDragStart() != null && SwingUtilities.isRightMouseButton(e)) { Point current = e.getPoint(); - int deltaX = current.x - controller.getMouseDragStart().x; - int deltaY = current.y - controller.getMouseDragStart().y; + int deltaX = current.x - listener.getMouseDragStart().x; + int deltaY = current.y - listener.getMouseDragStart().y; // Déplacement dans CameraController - controller.updateViewOffset(deltaX, deltaY); + listener.updateViewOffset(deltaX, deltaY); // Met à jour la position de départ - controller.setMouseDragStart(current); + listener.setMouseDragStart(current); } } @Override public void mouseReleased(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) { - controller.resetMouseDragStart(); + listener.resetMouseDragStart(); } } } diff --git a/src/main/java/controller/MousePressHandler.java b/src/main/java/controller/MousePressHandler.java index ad329ae..9f12813 100644 --- a/src/main/java/controller/MousePressHandler.java +++ b/src/main/java/controller/MousePressHandler.java @@ -1,28 +1,28 @@ package controller; + import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.SwingUtilities; public class MousePressHandler extends MouseAdapter { - private CameraController controller; + private CameraControllerListener listener; - public MousePressHandler(CameraController controller, GameContext context) { - this.controller = controller; + public MousePressHandler(CameraControllerListener listener) { + this.listener = listener; } - + @Override public void mousePressed(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) { - System.out.println("Clic droit détecté"); - controller.setMouseDragStart(e.getPoint()); + listener.setMouseDragStart(e.getPoint()); } } @Override public void mouseReleased(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) { - controller.resetMouseDragStart(); + listener.resetMouseDragStart(); } } } diff --git a/src/main/java/controller/TilePlacer.java b/src/main/java/controller/TilePlacer.java new file mode 100644 index 0000000..055b31f --- /dev/null +++ b/src/main/java/controller/TilePlacer.java @@ -0,0 +1,7 @@ +package controller; + +import java.awt.Point; + +public interface TilePlacer { + void placeTile(Point position); +} diff --git a/src/main/java/view/MenuView.java b/src/main/java/view/MenuView.java index 0418fbe..2a28573 100644 --- a/src/main/java/view/MenuView.java +++ b/src/main/java/view/MenuView.java @@ -22,9 +22,9 @@ public class MenuView extends JComponent { panelCoté.setPreferredSize(new Dimension(300, 0)); // Utilisation de getResource pour charger les images - backgroundImage = new ImageIcon(getClass().getResource("/view/img/bg.png")).getImage(); - logo = new ImageIcon(getClass().getResource("/view/img/D.png")); - quit = new ImageIcon(getClass().getResource("/view/img/quit.png")); + backgroundImage = new ImageIcon(getClass().getResource("/java/view/img/bg.png")).getImage(); + logo = new ImageIcon(getClass().getResource("/java/view/img/D.png")); + quit = new ImageIcon(getClass().getResource("/java/view/img/quit.png")); // Redimensionnement des images Image quit1 = quit.getImage();