diff --git a/bin/de/deadlocker8/roadgame/logic/Board.class b/bin/de/deadlocker8/roadgame/logic/Board.class index 9fd0b006b733e31bb2191558e7944e02ebf33685..b0cad02dd0c19c783c02615a51dc74bcff218e5a 100644 Binary files a/bin/de/deadlocker8/roadgame/logic/Board.class and b/bin/de/deadlocker8/roadgame/logic/Board.class differ diff --git a/bin/de/deadlocker8/roadgame/logic/Game.class b/bin/de/deadlocker8/roadgame/logic/Game.class index dc3bfe85233eb41d5d7b319ec476fd8804810208..e862ecc9737deecace3642c65c26c229473796bc 100644 Binary files a/bin/de/deadlocker8/roadgame/logic/Game.class and b/bin/de/deadlocker8/roadgame/logic/Game.class differ diff --git a/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest2.class b/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest2.class new file mode 100644 index 0000000000000000000000000000000000000000..0fc0a42fa46fc5c2b515fc7e081a374a02c49833 Binary files /dev/null and b/bin/de/deadlocker8/roadgame/tilepacks/TilePackTest2.class differ diff --git a/bin/de/deadlocker8/roadgame/ui/Controller.class b/bin/de/deadlocker8/roadgame/ui/Controller.class index 0f4c297b9a397c2c17b14932eca93ae0e0abecf1..44de8aa4615b85fc86feaccaa7df2feaab9db619 100644 Binary files a/bin/de/deadlocker8/roadgame/ui/Controller.class and b/bin/de/deadlocker8/roadgame/ui/Controller.class differ diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$1.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$1.class index 3875f98da1827314065a224d11592b4e83ab5572..bedf680ac2b3bbcb2f66d1cf496c5d87a9bff893 100644 Binary files a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$1.class and b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$1.class differ diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class index 6ab0b99aa84d336328a46f2d150e066c0b5cf408..c1e46d7ede0e2d0c9a75c6e25144c146a32a401f 100644 Binary files a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class and b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController$2.class differ diff --git a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class index 0f5b49df7ea5b10af5da539b981464cf6078a558..75590e6be117f1f67f1ca6acff6be800c19e5561 100644 Binary files a/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class and b/bin/de/deadlocker8/roadgame/ui/SelectTilePackController.class differ diff --git a/src/de/deadlocker8/roadgame/logic/Board.java b/src/de/deadlocker8/roadgame/logic/Board.java index 77927eaee62c5531f3c0abfda0e4cd5dcb670ded..81e42e873469d309cff7b698e66095c5fa829cff 100644 --- a/src/de/deadlocker8/roadgame/logic/Board.java +++ b/src/de/deadlocker8/roadgame/logic/Board.java @@ -167,6 +167,39 @@ public class Board } return possibleLocations; + } + + public boolean tileCanBePlaced(Tile tile) + { + if(getPossibleLocations(tile).size() == 0) + { + return false; + } + + tile.rotateRight(); + if(getPossibleLocations(tile).size() == 0) + { + tile.rotateLeft(); + return false; + } + + tile.rotateRight(); + if(getPossibleLocations(tile).size() == 0) + { + tile.rotateLeft(); + tile.rotateLeft(); + return false; + } + + tile.rotateRight(); + if(getPossibleLocations(tile).size() == 0) + { + tile.rotateRight(); + return false; + } + + tile.rotateRight(); + return true; } public Dimension getDimension() diff --git a/src/de/deadlocker8/roadgame/logic/Game.java b/src/de/deadlocker8/roadgame/logic/Game.java index 1d51cbe07801c62b1f5cd7119da0d1e899b3b0ae..e289a7bc48a520de6677e2950432b67952b917da 100644 --- a/src/de/deadlocker8/roadgame/logic/Game.java +++ b/src/de/deadlocker8/roadgame/logic/Game.java @@ -46,6 +46,11 @@ public class Game return board.getPossibleLocations(tile); } + public boolean tileCanBePlaced(Tile tile) + { + return board.tileCanBePlaced(tile); + } + public void placeTile(Tile tile, Point2D position) { tile.setPosition(position); diff --git a/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java new file mode 100644 index 0000000000000000000000000000000000000000..f3c6919237bb2b81f93c1a3b2f31094f301f58c3 --- /dev/null +++ b/src/de/deadlocker8/roadgame/tilepacks/TilePackTest2.java @@ -0,0 +1,18 @@ +package de.deadlocker8.roadgame.tilepacks; + +import java.util.HashMap; + +import de.deadlocker8.roadgame.logic.TileType; + +public class TilePackTest2 extends TilePack +{ + public TilePackTest2() + { + super("Test 2"); + + tiles = new HashMap<>(); + tiles.put(TileType.ROAD_END, 1); + tiles.put(TileType.CASTLE_FULL, 1); + tiles.put(TileType.ROAD_CURVE, 1); + } +} \ No newline at end of file diff --git a/src/de/deadlocker8/roadgame/ui/Controller.java b/src/de/deadlocker8/roadgame/ui/Controller.java index 6bdac12ef00b621b75c2f2f2c1536dbbe578b7f5..311f0aebcbb1195fe743a70148d5fc57d1dfe415 100644 --- a/src/de/deadlocker8/roadgame/ui/Controller.java +++ b/src/de/deadlocker8/roadgame/ui/Controller.java @@ -318,13 +318,33 @@ public class Controller } game.setCurrentTile(nextTile); - - stackPaneCurrentTile.getChildren().clear(); - stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0)); - labelTilesRemaining.setText(String.valueOf(game.getBoard().getTilePack().getNumberOfTiles())); + if(game.tileCanBePlaced(game.getCurrentTile())) + { + stackPaneCurrentTile.getChildren().clear(); + stackPaneCurrentTile.getChildren().add(createStackPaneForTile(game.getCurrentTile(), false, 0, 0)); + + labelTilesRemaining.setText(String.valueOf(game.getBoard().getTilePack().getNumberOfTiles())); - updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile())); + updateGrid(game.getBoard(), game.getPossibleLocations(game.getCurrentTile())); + } + else + { + Alert alert = new Alert(AlertType.INFORMATION); + alert.setTitle("Tile skipped"); + alert.setHeaderText(""); + alert.setContentText("The following tile has been skipped because it doesn't fit the current board:"); + Stage dialogStage = (Stage)alert.getDialogPane().getScene().getWindow(); + alert.getDialogPane().setExpandableContent(createStackPaneForTile(game.getCurrentTile(), false, 0, 0)); + alert.getDialogPane().setExpanded(true); + dialogStage.getIcons().add(icon); + dialogStage.centerOnScreen(); + alert.showAndWait(); + + labelTilesRemaining.setText(String.valueOf(game.getBoard().getTilePack().getNumberOfTiles())); + + nextTile(); + } } public void rotateRight() diff --git a/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java b/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java index 761c40be2199f5cb9f73e5c71d71bd7e1de1bfc1..190e99a0d17700352ac8175a895c5d3d1c8560ae 100644 --- a/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java +++ b/src/de/deadlocker8/roadgame/ui/SelectTilePackController.java @@ -7,6 +7,7 @@ import de.deadlocker8.roadgame.tilepacks.TilePack; import de.deadlocker8.roadgame.tilepacks.TilePackAllPossibleTiles; import de.deadlocker8.roadgame.tilepacks.TilePackDefault; import de.deadlocker8.roadgame.tilepacks.TilePackTest; +import de.deadlocker8.roadgame.tilepacks.TilePackTest2; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; @@ -50,6 +51,7 @@ public class SelectTilePackController possibleTilePacks.add(new TilePackDefault()); possibleTilePacks.add(new TilePackTest()); possibleTilePacks.add(new TilePackAllPossibleTiles()); + possibleTilePacks.add(new TilePackTest2()); for(TilePack currentPack : possibleTilePacks) {