From 19a0810590b34771cdb7795822f52714b6293857 Mon Sep 17 00:00:00 2001 From: deadlocker8 <deadlocker@gmx.de> Date: Wed, 26 Oct 2016 18:18:11 +0200 Subject: [PATCH] fixed #32 --- src/de/bricked/game/Game.java | 15 ++++++- src/de/bricked/game/board/Board.java | 1 + src/de/bricked/ui/LevelController.java | 54 +++++++++++++++++++++++--- 3 files changed, 64 insertions(+), 6 deletions(-) diff --git a/src/de/bricked/game/Game.java b/src/de/bricked/game/Game.java index 55c5166..a578cfb 100644 --- a/src/de/bricked/game/Game.java +++ b/src/de/bricked/game/Game.java @@ -5,6 +5,7 @@ import de.bricked.game.board.Board; import de.bricked.game.levels.Level; import de.bricked.game.levels.LevelPack; import de.bricked.game.settings.Settings; +import de.bricked.ui.LevelController; import javafx.geometry.Point2D; import logger.LogLevel; import logger.Logger; @@ -23,6 +24,7 @@ public class Game private final double speedIncreasePerPaddleHitFactor = 1.05; private int pointsSinceLastMultiplicatorReset; private int multiplicator; + private LevelController levelController; public Game() { @@ -35,6 +37,7 @@ public class Game this.board = null; this.multiplicator = 1; this.pointsSinceLastMultiplicatorReset = 0; + this.levelController = null; } public Settings getSettings() @@ -140,7 +143,17 @@ public class Game public void applyMultiplicator() { totalPoints += pointsSinceLastMultiplicatorReset * multiplicator; - System.out.println(pointsSinceLastMultiplicatorReset + " x" + multiplicator + " = " + totalPoints); + Logger.log(LogLevel.DEBUG, "Applied multiplicator: " + pointsSinceLastMultiplicatorReset + " x" + multiplicator + " = " + totalPoints); + } + + public LevelController getLevelController() + { + return levelController; + } + + public void setLevelController(LevelController levelController) + { + this.levelController = levelController; } public Point2D reflectBall(HitLocation hitLocation, Point2D direction) diff --git a/src/de/bricked/game/board/Board.java b/src/de/bricked/game/board/Board.java index d03a66b..8a77678 100644 --- a/src/de/bricked/game/board/Board.java +++ b/src/de/bricked/game/board/Board.java @@ -210,6 +210,7 @@ public class Board points += hittedBrick.getType().getPoints(); + game.getLevelController().showAnimatedPoints(row, col, hittedBrick.getType().getPoints()); game.increaseMultiplicator(); LevelController.redrawBrick(col, row, bricks.get(row).get(col), true); } diff --git a/src/de/bricked/ui/LevelController.java b/src/de/bricked/ui/LevelController.java index 7b64d93..ab93716 100644 --- a/src/de/bricked/ui/LevelController.java +++ b/src/de/bricked/ui/LevelController.java @@ -19,6 +19,8 @@ import fontAwesome.FontIcon; import fontAwesome.FontIconType; import javafx.animation.AnimationTimer; import javafx.animation.FadeTransition; +import javafx.animation.ParallelTransition; +import javafx.animation.TranslateTransition; import javafx.application.Platform; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; @@ -96,6 +98,7 @@ public class LevelController this.levelSelectController = levelSelectController; this.game = game; game.setBoard(new Board(game)); + game.setLevelController(this); anchorPane.setOnKeyReleased(new EventHandler<KeyEvent>() { @@ -549,9 +552,8 @@ public class LevelController { labelBrick.setStyle("-fx-background-image: url(\"de/bricked/resources/textures/bricks/" + brick.getCurrentTextureID() + ".png\");" + "-fx-background-position: center center;" + "-fx-background-repeat: no-repeat;" + "-fx-background-size: cover"); } - }); - ft.play(); - + }); + ft.play(); } else { @@ -563,7 +565,7 @@ public class LevelController { vboxLives.getChildren().clear(); - for(int i = 0; i < MAX_LIVES - game.getLivesRemaining(); i++) + for(int i = 0; i < MAX_LIVES - game.getLivesRemaining() + 1; i++) { ImageView iv = new ImageView(new Image("de/bricked/resources/textures/bricks/empty.png")); iv.setFitWidth(30); @@ -575,7 +577,7 @@ public class LevelController } } - for(int i = 0; i < game.getLivesRemaining(); i++) + for(int i = 0; i < game.getLivesRemaining() - 1; i++) { ImageView iv = new ImageView(new Image("de/bricked/resources/textures/paddle/paddle-extra-small.png")); iv.setFitWidth(30); @@ -715,6 +717,46 @@ public class LevelController } } } + + public void showAnimatedPoints(int row, int col, int points) + { + double xPosition = (gamePaneWidth / Board.WIDTH) * (col); + double yPosition = (gamePaneHeight / Board.HEIGHT) * (row); + + Label labelNotification = new Label("+" + points); + labelNotification.setTranslateX(xPosition); + labelNotification.setTranslateY(yPosition); + labelNotification.setStyle("-fx-font-weight: bold; -fx-font-size: 15; "); + labelNotification.setAlignment(Pos.CENTER); + labelNotification.setPrefWidth(gamePaneWidth / Board.WIDTH); + labelNotification.setPrefHeight(gamePaneHeight / Board.HEIGHT); + anchorPaneGame.getChildren().add(labelNotification); + + FadeTransition fadeTransition = new FadeTransition(Duration.millis(1200), labelNotification); + fadeTransition.setFromValue(1.0); + fadeTransition.setToValue(0.0); + fadeTransition.setCycleCount(1); + fadeTransition.setAutoReverse(false); + TranslateTransition translateTransition = new TranslateTransition(Duration.millis(1200), labelNotification); + translateTransition.setFromY(yPosition); + translateTransition.setToY(yPosition - (gamePaneHeight / Board.HEIGHT)); + translateTransition.setCycleCount(1); + translateTransition.setAutoReverse(false); + + ParallelTransition parallelTransition = new ParallelTransition(); + parallelTransition.getChildren().addAll(fadeTransition, translateTransition); + parallelTransition.setCycleCount(1); + parallelTransition.setOnFinished(new EventHandler<ActionEvent>() + { + @Override + public void handle(ActionEvent event) + { + anchorPaneGame.getChildren().remove(labelNotification); + } + }); + + parallelTransition.play(); + } public void showLabelFPS(boolean value) { @@ -745,6 +787,8 @@ public class LevelController game.setTotalPoints(0); game.resetMultiplicator(); game.resetPointsSinceLastMultiplicatorReset(); + game.setBoard(null); + game.setLevelController(null); anchorPaneGame.requestFocus(); } -- GitLab