From 78687363baa16a7f713c59879c92c0e6f1c79876 Mon Sep 17 00:00:00 2001 From: Quaid Sage <126384060+quaidsage@users.noreply.github.com> Date: Thu, 22 Aug 2024 14:05:38 +1200 Subject: [PATCH] Fix to Level Slider and Game Speed (#80) * Fix to level slider and initial game speed * Additional fix to game speed --- src/main/java/com/stackedsuccess/GameBoard.java | 9 ++++++++- .../stackedsuccess/controllers/GameBoardController.java | 4 ++++ .../stackedsuccess/controllers/HomeScreenController.java | 7 ++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/stackedsuccess/GameBoard.java b/src/main/java/com/stackedsuccess/GameBoard.java index 90ff909..f860494 100644 --- a/src/main/java/com/stackedsuccess/GameBoard.java +++ b/src/main/java/com/stackedsuccess/GameBoard.java @@ -22,6 +22,7 @@ public class GameBoard { private int score = 0; private int level = 1; + private int baseLevel = 1; private int totalLinesCleared = 0; private int gameSpeed; @@ -122,6 +123,11 @@ public boolean isSpawnLocationOccupied() { return checkCollision(Tetrimino.DEFAULT_SPAWN_X, Tetrimino.DEFAULT_SPAWN_Y); } + public void setBaseLevel(int baseLevel) { + this.baseLevel = baseLevel; + updateLevel(); + } + /** Forces the game loop to update once, primarily used to place tetrimino pieces instantly. */ public void forceUpdate() { forceUpdate = true; @@ -225,8 +231,9 @@ private void clearFullRows() { /** Updates the level based on the number of lines cleared. */ private void updateLevel() { - level = (totalLinesCleared / 10) + 1; + level = (totalLinesCleared / 10) + baseLevel; controller.updateLevel(level); + changeGameSpeed(); } /** diff --git a/src/main/java/com/stackedsuccess/controllers/GameBoardController.java b/src/main/java/com/stackedsuccess/controllers/GameBoardController.java index 4d7a5aa..3878b34 100644 --- a/src/main/java/com/stackedsuccess/controllers/GameBoardController.java +++ b/src/main/java/com/stackedsuccess/controllers/GameBoardController.java @@ -138,6 +138,7 @@ public void onKeyPressed(KeyEvent event) { gameInstance.handleInput(event); } + // TODO: JAVADOCS private void togglePauseScreen(){ if(gameInstance.isPaused()){ basePane.requestFocus(); @@ -163,11 +164,13 @@ public void onClickPauseButton() { gameInstance.togglePause(); } + // TODO: JAVADOCS @FXML void onClickExit(ActionEvent event) { System.exit(0); } + // TODO: JAVADOCS @FXML void onClickRestart(ActionEvent event) throws IOException { SceneManager.addScene(AppUI.MAIN_MENU, loadFxml("HomeScreen")); @@ -201,6 +204,7 @@ public void updateLevel(int level) { Platform.runLater(() -> levelLabel.setText(String.valueOf(level))); } + public void setBaseLevel(int baseLevel) { Platform.runLater(() -> gameInstance.getGameBoard().setBaseLevel(baseLevel));} /** * Sets the view of the next tetromino to be loaded. * diff --git a/src/main/java/com/stackedsuccess/controllers/HomeScreenController.java b/src/main/java/com/stackedsuccess/controllers/HomeScreenController.java index f4929fd..50ad74a 100644 --- a/src/main/java/com/stackedsuccess/controllers/HomeScreenController.java +++ b/src/main/java/com/stackedsuccess/controllers/HomeScreenController.java @@ -23,6 +23,7 @@ public class HomeScreenController { @FXML private Button pastScoresButton; @FXML private ListView pastScores; + // TODO: JAVADOCS @FXML public void initialize() { difficultySlider.requestFocus(); @@ -49,21 +50,24 @@ private List loadScoresFromFile(String filePath) { return scores; } + /** Handles exiting of window on game exit. */ public void exitGame() { System.exit(0); } + // TODO: JAVADOCS @FXML public void startGame() throws IOException { int initialLevel = (int) difficultySlider.getValue(); // Get the level from the slider FXMLLoader loader = new FXMLLoader(Main.class.getResource("/fxml/GameBoard.fxml")); Parent root = loader.load(); GameBoardController controller = loader.getController(); - controller.updateLevel(initialLevel); // Set the initial level + controller.setBaseLevel(initialLevel); SceneManager.addScene(AppUI.GAME, root); Main.setUi(AppUI.GAME); } + // TODO: JAVADOCS public void onKeyPressed(KeyEvent event) { difficultySlider.requestFocus(); if (event.getCode() == KeyCode.SPACE) { @@ -75,6 +79,7 @@ public void onKeyPressed(KeyEvent event) { } } + // TODO: JAVADOCS @FXML public void showPastScores() { if (pastScores.isVisible()) {