Square or Hexagon Cell

- allows to select between square and hexagon representation
 - remark : this is still a square model
This commit is contained in:
philippe lhardy
2020-12-28 15:09:54 +01:00
parent 0bab1d51b1
commit 0c886f0cd1
5 changed files with 89 additions and 43 deletions

View File

@@ -2,6 +2,7 @@ package org.artisanlogiciel.games.maze.gui;
import org.artisanlogiciel.games.maze.*;
import org.artisanlogiciel.games.maze.model.LabyModelProvider;
import org.artisanlogiciel.games.maze.model.WidthHeightProvider;
import org.artisanlogiciel.games.maze.solve.DirectionPosition;
import org.artisanlogiciel.games.maze.solve.MazeResolutionListener;
import org.artisanlogiciel.graphics.Drawing;
@@ -27,7 +28,7 @@ public class MazeComponent
private static final long serialVersionUID = 3163272907991176390L;
LabyModelProvider map;
final MazeCellRenderer cp;
MazeCellRenderer cp;
Position current = null;
LinkedList<DirectionPosition> solvedPath = null;
LinkedList<DirectionPosition> drawingPath = null;
@@ -51,6 +52,14 @@ public class MazeComponent
StatusListener statusListener;
MazeCellRenderer createCellRenderer(boolean hexagon, WidthHeightProvider model, WidthHeightProvider frame)
{
MazeCellRenderer cellRenderer = hexagon ?
new HexagonCellRenderer(model, frame, 0, 0)
: new MazeCellRenderer(model, frame, 0, 0);
return cellRenderer;
}
MazeColorMap colorMap = new MazeColorMap(Color.white, Color.black, Color.blue, Color.green, Color.red);
public class MazeColorMap
@@ -216,17 +225,22 @@ public class MazeComponent
* offsetX, offsetY of upper left corner
**/
// public MazeComponent(WallsProvider map, MazeCellParameters cp)
public MazeComponent(LabyModel map, MazeCellRenderer cp, StatusListener statusListener) {
public MazeComponent(LabyModel map, WidthHeightProvider frame, StatusListener statusListener) {
super();
this.cp = cp;
this.map = map;
setPreferredSize(cp.getDimension());
gX = map.getWidth() - 1;
gY = map.getHeight() - 1;
resetCellRenderer(false,frame);
this.statusListener = statusListener;
addMouseMotionListener(this);
}
public void resetCellRenderer(boolean hexagon, WidthHeightProvider frame)
{
cp = createCellRenderer(hexagon,map,frame);
setPreferredSize(cp.getDimension());
}
// public void resetWallsProvider(WallsProvider map)
public void resetWallsProvider(LabyModel map) {
this.map = map;
@@ -235,7 +249,7 @@ public class MazeComponent
drawingPath = null;
sX = 0;
sY = 0;
cp.resetMazeWidthHeight(map.getWidth(), map.getHeight());
cp.resetMazeWidthHeight(map);
setPreferredSize(cp.getDimension());
}