Makefile + correction de dépendance circulaire
This commit is contained in:
parent
07515d748d
commit
286590398c
98
src/main/Makefile
Normal file
98
src/main/Makefile
Normal file
@ -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 ###
|
BIN
src/main/classes/java/view/img/D.png
Normal file
BIN
src/main/classes/java/view/img/D.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 27 KiB |
BIN
src/main/classes/java/view/img/bg.png
Normal file
BIN
src/main/classes/java/view/img/bg.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 322 KiB |
BIN
src/main/classes/java/view/img/quit.png
Normal file
BIN
src/main/classes/java/view/img/quit.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 36 KiB |
@ -3,8 +3,7 @@ package controller;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
|
||||||
|
public class CameraController implements CameraControllerListener {
|
||||||
public class CameraController {
|
|
||||||
|
|
||||||
private Point mouseDragStart = null;
|
private Point mouseDragStart = null;
|
||||||
private GameContext context;
|
private GameContext context;
|
||||||
@ -16,6 +15,7 @@ public class CameraController {
|
|||||||
setupMouseDragToMove(gridPanel); // Initialise les écouteurs pour gérer le déplacement
|
setupMouseDragToMove(gridPanel); // Initialise les écouteurs pour gérer le déplacement
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void updateViewOffset(int deltaX, int deltaY) {
|
public void updateViewOffset(int deltaX, int deltaY) {
|
||||||
// Met à jour uniquement l'offset dans GameContext
|
// Met à jour uniquement l'offset dans GameContext
|
||||||
context.updateOffset(deltaX, deltaY);
|
context.updateOffset(deltaX, deltaY);
|
||||||
@ -27,18 +27,21 @@ public class CameraController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setupMouseDragToMove(JPanel gridPanel) {
|
private void setupMouseDragToMove(JPanel gridPanel) {
|
||||||
gridPanel.addMouseListener(new MousePressHandler(this, context));
|
gridPanel.addMouseListener(new MousePressHandler(this));
|
||||||
gridPanel.addMouseMotionListener(new MouseDragHandler(this, context));
|
gridPanel.addMouseMotionListener(new MouseDragHandler(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setMouseDragStart(Point point) {
|
public void setMouseDragStart(Point point) {
|
||||||
this.mouseDragStart = point;
|
this.mouseDragStart = point;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Point getMouseDragStart() {
|
public Point getMouseDragStart() {
|
||||||
return mouseDragStart;
|
return mouseDragStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void resetMouseDragStart() {
|
public void resetMouseDragStart() {
|
||||||
this.mouseDragStart = null;
|
this.mouseDragStart = null;
|
||||||
}
|
}
|
||||||
|
10
src/main/java/controller/CameraControllerListener.java
Normal file
10
src/main/java/controller/CameraControllerListener.java
Normal file
@ -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();
|
||||||
|
}
|
@ -8,7 +8,7 @@ import java.awt.Point;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class GameController {
|
public class GameController implements TilePlacer {
|
||||||
private Map<Point, HexagonTile> hexagonMap;
|
private Map<Point, HexagonTile> hexagonMap;
|
||||||
private Set<Point> availablePositions;
|
private Set<Point> availablePositions;
|
||||||
private JPanel gridPanel;
|
private JPanel gridPanel;
|
||||||
@ -28,8 +28,8 @@ public class GameController {
|
|||||||
updatePreview();
|
updatePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void placeTile(Point position) {
|
public void placeTile(Point position) {
|
||||||
// Vérifier si la position est disponible
|
|
||||||
if (availablePositions.contains(position)) {
|
if (availablePositions.contains(position)) {
|
||||||
HexagonTile hexTile = hexagonMap.get(position);
|
HexagonTile hexTile = hexagonMap.get(position);
|
||||||
if (hexTile == null) {
|
if (hexTile == null) {
|
||||||
@ -37,27 +37,21 @@ public class GameController {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assigner la tuile actuelle
|
|
||||||
hexTile.setTile(nextTile);
|
hexTile.setTile(nextTile);
|
||||||
gridPanel.revalidate();
|
gridPanel.revalidate();
|
||||||
gridPanel.repaint();
|
gridPanel.repaint();
|
||||||
|
|
||||||
// Retirer la position des positions disponibles
|
|
||||||
availablePositions.remove(position);
|
availablePositions.remove(position);
|
||||||
|
|
||||||
// Mettre à jour les positions adjacentes
|
|
||||||
Point[] adjacentPositions = getAdjacentPositions(position);
|
Point[] adjacentPositions = getAdjacentPositions(position);
|
||||||
for (Point adj : adjacentPositions) {
|
for (Point adj : adjacentPositions) {
|
||||||
if (!hexagonMap.containsKey(adj)) {
|
if (!hexagonMap.containsKey(adj)) {
|
||||||
availablePositions.add(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);
|
gameContext.repaintGrid(gridPanel);
|
||||||
|
|
||||||
// Générer une nouvelle tuile pour la prochaine preview
|
|
||||||
generateNextTile();
|
generateNextTile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -72,8 +66,6 @@ public class GameController {
|
|||||||
initialPosition.setLocation(centerX / 50, centerY / 50);
|
initialPosition.setLocation(centerX / 50, centerY / 50);
|
||||||
|
|
||||||
placeInitialTile(initialPosition, cameraController, initialTile);
|
placeInitialTile(initialPosition, cameraController, initialTile);
|
||||||
|
|
||||||
// Générer la première tuile pour la preview
|
|
||||||
generateNextTile();
|
generateNextTile();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,7 +118,6 @@ public class GameController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void generateNextTile() {
|
public void generateNextTile() {
|
||||||
// Génère une nouvelle tuile pour la prochaine pose
|
|
||||||
nextTile = new Tile();
|
nextTile = new Tile();
|
||||||
updatePreview();
|
updatePreview();
|
||||||
}
|
}
|
||||||
|
@ -8,12 +8,12 @@ import java.util.Set;
|
|||||||
|
|
||||||
public class HexagonMouseListener extends MouseAdapter {
|
public class HexagonMouseListener extends MouseAdapter {
|
||||||
private final HexagonTile hexTile;
|
private final HexagonTile hexTile;
|
||||||
private final GameController gameController;
|
private final TilePlacer tilePlacer;
|
||||||
private final Set<Point> availablePositions;
|
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.hexTile = hexTile;
|
||||||
this.gameController = gameController;
|
this.tilePlacer = tilePlacer;
|
||||||
this.availablePositions = availablePositions;
|
this.availablePositions = availablePositions;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,12 +22,7 @@ public class HexagonMouseListener extends MouseAdapter {
|
|||||||
Point position = hexTile.getPosition();
|
Point position = hexTile.getPosition();
|
||||||
if (availablePositions.contains(position)) {
|
if (availablePositions.contains(position)) {
|
||||||
System.out.println("Hexagone cliqué à la position : " + position);
|
System.out.println("Hexagone cliqué à la position : " + position);
|
||||||
|
tilePlacer.placeTile(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();
|
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Position non disponible pour le placement");
|
System.out.println("Position non disponible pour le placement");
|
||||||
}
|
}
|
||||||
|
@ -7,31 +7,31 @@ import javax.swing.SwingUtilities;
|
|||||||
|
|
||||||
public class MouseDragHandler extends MouseAdapter {
|
public class MouseDragHandler extends MouseAdapter {
|
||||||
|
|
||||||
private CameraController controller;
|
private CameraControllerListener listener;
|
||||||
|
|
||||||
public MouseDragHandler(CameraController controller, GameContext context) {
|
public MouseDragHandler(CameraControllerListener listener) {
|
||||||
this.controller = controller;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseDragged(MouseEvent e) {
|
public void mouseDragged(MouseEvent e) {
|
||||||
if (controller.getMouseDragStart() != null && SwingUtilities.isRightMouseButton(e)) {
|
if (listener.getMouseDragStart() != null && SwingUtilities.isRightMouseButton(e)) {
|
||||||
Point current = e.getPoint();
|
Point current = e.getPoint();
|
||||||
int deltaX = current.x - controller.getMouseDragStart().x;
|
int deltaX = current.x - listener.getMouseDragStart().x;
|
||||||
int deltaY = current.y - controller.getMouseDragStart().y;
|
int deltaY = current.y - listener.getMouseDragStart().y;
|
||||||
|
|
||||||
// Déplacement dans CameraController
|
// Déplacement dans CameraController
|
||||||
controller.updateViewOffset(deltaX, deltaY);
|
listener.updateViewOffset(deltaX, deltaY);
|
||||||
|
|
||||||
// Met à jour la position de départ
|
// Met à jour la position de départ
|
||||||
controller.setMouseDragStart(current);
|
listener.setMouseDragStart(current);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(MouseEvent e) {
|
public void mouseReleased(MouseEvent e) {
|
||||||
if (SwingUtilities.isRightMouseButton(e)) {
|
if (SwingUtilities.isRightMouseButton(e)) {
|
||||||
controller.resetMouseDragStart();
|
listener.resetMouseDragStart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,28 +1,28 @@
|
|||||||
package controller;
|
package controller;
|
||||||
|
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
public class MousePressHandler extends MouseAdapter {
|
public class MousePressHandler extends MouseAdapter {
|
||||||
|
|
||||||
private CameraController controller;
|
private CameraControllerListener listener;
|
||||||
|
|
||||||
public MousePressHandler(CameraController controller, GameContext context) {
|
public MousePressHandler(CameraControllerListener listener) {
|
||||||
this.controller = controller;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mousePressed(MouseEvent e) {
|
public void mousePressed(MouseEvent e) {
|
||||||
if (SwingUtilities.isRightMouseButton(e)) {
|
if (SwingUtilities.isRightMouseButton(e)) {
|
||||||
System.out.println("Clic droit détecté");
|
listener.setMouseDragStart(e.getPoint());
|
||||||
controller.setMouseDragStart(e.getPoint());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mouseReleased(MouseEvent e) {
|
public void mouseReleased(MouseEvent e) {
|
||||||
if (SwingUtilities.isRightMouseButton(e)) {
|
if (SwingUtilities.isRightMouseButton(e)) {
|
||||||
controller.resetMouseDragStart();
|
listener.resetMouseDragStart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
7
src/main/java/controller/TilePlacer.java
Normal file
7
src/main/java/controller/TilePlacer.java
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package controller;
|
||||||
|
|
||||||
|
import java.awt.Point;
|
||||||
|
|
||||||
|
public interface TilePlacer {
|
||||||
|
void placeTile(Point position);
|
||||||
|
}
|
@ -22,9 +22,9 @@ public class MenuView extends JComponent {
|
|||||||
panelCoté.setPreferredSize(new Dimension(300, 0));
|
panelCoté.setPreferredSize(new Dimension(300, 0));
|
||||||
|
|
||||||
// Utilisation de getResource pour charger les images
|
// Utilisation de getResource pour charger les images
|
||||||
backgroundImage = new ImageIcon(getClass().getResource("/view/img/bg.png")).getImage();
|
backgroundImage = new ImageIcon(getClass().getResource("/java/view/img/bg.png")).getImage();
|
||||||
logo = new ImageIcon(getClass().getResource("/view/img/D.png"));
|
logo = new ImageIcon(getClass().getResource("/java/view/img/D.png"));
|
||||||
quit = new ImageIcon(getClass().getResource("/view/img/quit.png"));
|
quit = new ImageIcon(getClass().getResource("/java/view/img/quit.png"));
|
||||||
|
|
||||||
// Redimensionnement des images
|
// Redimensionnement des images
|
||||||
Image quit1 = quit.getImage();
|
Image quit1 = quit.getImage();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user