diff --git a/bin/de/bricked/main/_de.properties b/bin/de/bricked/main/_de.properties index e5b3c10ba1332a765b00d8282794f89c96480575..04c1a6f554ef53152e99c90f534e18fec6de5c4d 100644 --- a/bin/de/bricked/main/_de.properties +++ b/bin/de/bricked/main/_de.properties @@ -3,4 +3,5 @@ version.code=0 version.name=0.0.0 version.date=19.10.16 author=Max Wittig, Robert Goldmann (Vielen Dank an Tobias) + shortcut.debug.console=F12 \ No newline at end of file diff --git a/bin/de/bricked/ui/LevelGUI.fxml b/bin/de/bricked/ui/LevelGUI.fxml index dabc3a8a3ca5e10c4660fe58c2d4cdb16f18abda..b1e6a1a58e86daeca19d14dedc8087fb95ee9c5e 100644 --- a/bin/de/bricked/ui/LevelGUI.fxml +++ b/bin/de/bricked/ui/LevelGUI.fxml @@ -8,9 +8,9 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Font?> -<AnchorPane fx:id="anchorPane" prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.bricked.ui.LevelController"> +<AnchorPane fx:id="anchorPane" prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.bricked.ui.LevelController"> <children> - <AnchorPane fx:id="anchorPaneGame" layoutX="22.0" layoutY="125.0" minHeight="650.0" minWidth="700.0" prefHeight="650.0" prefWidth="700.0" AnchorPane.bottomAnchor="25.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="78.0" AnchorPane.topAnchor="125.0"> + <AnchorPane fx:id="anchorPaneGame" layoutX="14.0" layoutY="125.0" minHeight="650.0" minWidth="670.0" prefHeight="650.0" prefWidth="670.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="116.0" AnchorPane.topAnchor="125.0"> <children> <Label fx:id="labelMultiplicator" alignment="CENTER" contentDisplay="CENTER" layoutX="301.0" layoutY="502.0" prefHeight="45.0" prefWidth="100.0" textAlignment="CENTER"> <font> @@ -18,7 +18,7 @@ </font> </Label> </children></AnchorPane> - <VBox fx:id="vboxPowerUps" layoutX="745.0" layoutY="125.0" minHeight="338.0" minWidth="40.0" prefHeight="402.0" prefWidth="40.0" AnchorPane.bottomAnchor="273.0" AnchorPane.rightAnchor="15.0" AnchorPane.topAnchor="125.0" /> + <VBox fx:id="vboxPowerUps" layoutX="745.0" layoutY="125.0" maxHeight="490.0" minHeight="338.0" minWidth="40.0" prefHeight="490.0" prefWidth="90.0" AnchorPane.bottomAnchor="185.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="125.0" /> <HBox alignment="CENTER" layoutX="34.0" layoutY="23.0" prefHeight="100.0" prefWidth="275.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> <children> <Button fx:id="buttonBack" mnemonicParsing="false" onAction="#back" text="Back" /> @@ -64,7 +64,7 @@ </Label> </children> </HBox> - <VBox fx:id="vboxLives" layoutX="745.0" layoutY="603.0" minHeight="71.0" minWidth="40.0" prefHeight="227.0" prefWidth="40.0" AnchorPane.bottomAnchor="24.0" AnchorPane.rightAnchor="15.0" /> + <VBox fx:id="vboxLives" layoutX="745.0" layoutY="603.0" minHeight="71.0" minWidth="40.0" prefHeight="160.0" prefWidth="90.0" AnchorPane.bottomAnchor="14.0" AnchorPane.rightAnchor="14.0" /> <Label fx:id="labelFPS" layoutX="770.0" layoutY="6.0" text="0" AnchorPane.rightAnchor="8.0" AnchorPane.topAnchor="8.0"> <font> <Font name="System Bold" size="16.0" /> diff --git a/bin/de/brickedleveleditor/main/_de.properties b/bin/de/brickedleveleditor/main/_de.properties new file mode 100644 index 0000000000000000000000000000000000000000..5882f88395a5a5ffed32a3892767ab419021dc0b --- /dev/null +++ b/bin/de/brickedleveleditor/main/_de.properties @@ -0,0 +1,5 @@ +app.name=Bricked LevelEditor +version.code=0 +version.name=0.0.0 +version.date=19.10.16 +author=Max Wittig, Robert Goldmann \ No newline at end of file diff --git a/bin/de/brickedleveleditor/ui/GUI.fxml b/bin/de/brickedleveleditor/ui/GUI.fxml new file mode 100644 index 0000000000000000000000000000000000000000..23f129a13b8fad3dbf6a562d6aee370145a4e33a --- /dev/null +++ b/bin/de/brickedleveleditor/ui/GUI.fxml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Menu?> +<?import javafx.scene.control.MenuBar?> +<?import javafx.scene.control.MenuItem?> +<?import javafx.scene.layout.AnchorPane?> +<?import javafx.scene.layout.ColumnConstraints?> +<?import javafx.scene.layout.GridPane?> +<?import javafx.scene.layout.RowConstraints?> +<?import javafx.scene.layout.VBox?> + +<AnchorPane fx:id="anchorPane" prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.brickedleveleditor.ui.Controller"> + <children> + <MenuBar layoutX="40.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0"> + <menus> + <Menu mnemonicParsing="false" text="File"> + <items> + <MenuItem fx:id="saveMenuItem" mnemonicParsing="false" text="Save" /> + <MenuItem mnemonicParsing="false" text="Unspecified Action" /> + </items> + </Menu> + <Menu mnemonicParsing="false" text="Hilfe"> + <items> + <MenuItem mnemonicParsing="false" onAction="#about" text="Über" /> + </items> + </Menu> + </menus> + </MenuBar> + <VBox fx:id="sidebarVBox" alignment="CENTER" layoutX="614.0" layoutY="29.0" prefHeight="572.0" prefWidth="186.0" AnchorPane.bottomAnchor="-1.0" AnchorPane.topAnchor="29.0" /> + <GridPane fx:id="gridPane" alignment="CENTER" gridLinesVisible="true" layoutX="14.0" layoutY="58.0" prefHeight="526.0" prefWidth="595.0" AnchorPane.bottomAnchor="16.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="191.0" AnchorPane.topAnchor="58.0"> + <columnConstraints> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" /> + </columnConstraints> + <rowConstraints> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> + </rowConstraints> + </GridPane> + </children> +</AnchorPane> diff --git a/src/de/bricked/game/Game.java b/src/de/bricked/game/Game.java index c565ff78b75206a21fdf9fe3ba93044e6e375428..48846459eacd718c9cc24bc3c2068dd4f8d71ec2 100644 --- a/src/de/bricked/game/Game.java +++ b/src/de/bricked/game/Game.java @@ -15,6 +15,7 @@ import logger.Logger; public class Game { + private final int MAX_LIVES = 7; private Settings settings; private LevelPack levelPack; private Level level; @@ -28,8 +29,7 @@ public class Game private int pointsSinceLastMultiplicatorReset; private int multiplicator; private LevelController levelController; - private ArrayList<PowerUp> movingPowerUps; - private ArrayList<PowerUp> activatedPowerUps; + private ArrayList<PowerUp> movingPowerUps; public Game() { @@ -43,10 +43,13 @@ public class Game this.multiplicator = 0; this.pointsSinceLastMultiplicatorReset = 0; this.levelController = null; - this.movingPowerUps = new ArrayList<>(); - this.activatedPowerUps = new ArrayList<>(); - } + this.movingPowerUps = new ArrayList<>(); + } + public int getMaxLives() + { + return MAX_LIVES; + } public Settings getSettings() { return settings; @@ -176,16 +179,6 @@ public class Game this.movingPowerUps = movingPowerUps; } - public ArrayList<PowerUp> getActivatedPowerUps() - { - return activatedPowerUps; - } - - public void setActivatedPowerUps(ArrayList<PowerUp> activatedPowerUps) - { - this.activatedPowerUps = activatedPowerUps; - } - public Point2D reflectBall(HitLocation hitLocation, Point2D direction) { switch(hitLocation) diff --git a/src/de/bricked/game/powerups/ExtraLifePowerUp.java b/src/de/bricked/game/powerups/ExtraLifePowerUp.java index 38e76ab303890f42ec1ba3af435eb5d6c748a8c6..8bd1fbec2efdb618be81f53bb19b5c04ca477f4f 100644 --- a/src/de/bricked/game/powerups/ExtraLifePowerUp.java +++ b/src/de/bricked/game/powerups/ExtraLifePowerUp.java @@ -7,13 +7,13 @@ public class ExtraLifePowerUp extends PowerUp { public ExtraLifePowerUp() { - super(PowerUpType.EXTRA_LIFE.getId(), PowerUpType.EXTRA_LIFE.getDurationInSeconds()); + super(PowerUpType.EXTRA_LIFE.getID(), PowerUpType.EXTRA_LIFE.getDurationInSeconds()); } @Override public void activate(LevelController levelController, Game game) { - if(game.getLivesRemaining() - 1 < levelController.MAX_LIVES) + if(game.getLivesRemaining() - 1 < game.getMaxLives()) { game.setLivesRemaining(game.getLivesRemaining() + 1); levelController.refreshLiveCounter(); diff --git a/src/de/bricked/game/powerups/PowerUpType.java b/src/de/bricked/game/powerups/PowerUpType.java index 1dbe7c97db39faf38e0ca802307b67164d2df90a..e360e30acd7be843dca36e0b60e160ba7387193c 100644 --- a/src/de/bricked/game/powerups/PowerUpType.java +++ b/src/de/bricked/game/powerups/PowerUpType.java @@ -1,39 +1,51 @@ package de.bricked.game.powerups; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import de.bricked.game.powerups.ball.ExplodeBallPowerUp; import de.bricked.game.powerups.ball.NoCollisionBallPowerUp; + public enum PowerUpType { - NONE(0, -1), - EXTRA_LIFE(1, -1), - FASTER_BALL(2, 10), - SLOWER_BALL(3, 10), - EXPLODE_BALL(4, 10), - NO_COLLISION_BALL(5, 10); - - private int id; + NONE(0, -1, null), + EXTRA_LIFE(1, -1, null), + FASTER_BALL(2, 10, Arrays.asList(3)), + SLOWER_BALL(3, 10, Arrays.asList(2, 4, 5)), + EXPLODE_BALL(4, 10, Arrays.asList(2, 3, 5)), + NO_COLLISION_BALL(5, 10, Arrays.asList(2, 3, 4)); + + private int ID; private int durationInSeconds; + private List<Integer> deactivatesPowerUpIDs; public static PowerUpType[] types = PowerUpType.values(); - PowerUpType(int id, int durationInSeconds) + PowerUpType(int ID, int durationInSeconds, List<Integer> deactivatesPowerUpdIDs) { - this.id = id; + this.ID = ID; this.durationInSeconds = durationInSeconds; + this.deactivatesPowerUpIDs = deactivatesPowerUpdIDs; } - public int getId() + public int getID() { - return id; + return ID; } public int getDurationInSeconds() { return durationInSeconds; - } + } + + public ArrayList<Integer> getDeactivatesPowerUpIDs() + { + return new ArrayList<>(deactivatesPowerUpIDs); + } - public static PowerUp getInstance(PowerUpType powerUpType) + public static PowerUp getInstance(PowerUpType powerUpType) { switch (powerUpType) { @@ -45,4 +57,16 @@ public enum PowerUpType default: return null; } } + + public static PowerUpType valueOf(int ID) + { + for(PowerUpType currentType : PowerUpType.values()) + { + if(ID == currentType.getID()) + { + return currentType; + } + } + return PowerUpType.NONE; + } } \ No newline at end of file diff --git a/src/de/bricked/game/powerups/ball/ExplodeBallPowerUp.java b/src/de/bricked/game/powerups/ball/ExplodeBallPowerUp.java index e4a7a8a911d2411a89f80639721529b14b4e5b96..bb3ca927a7bfdc681e21a94b0758e986bed02f11 100644 --- a/src/de/bricked/game/powerups/ball/ExplodeBallPowerUp.java +++ b/src/de/bricked/game/powerups/ball/ExplodeBallPowerUp.java @@ -11,7 +11,7 @@ public class ExplodeBallPowerUp extends PowerUp { public ExplodeBallPowerUp() { - super(PowerUpType.EXPLODE_BALL.getId(), PowerUpType.EXPLODE_BALL.getDurationInSeconds()); + super(PowerUpType.EXPLODE_BALL.getID(), PowerUpType.EXPLODE_BALL.getDurationInSeconds()); } @Override diff --git a/src/de/bricked/game/powerups/ball/NoCollisionBallPowerUp.java b/src/de/bricked/game/powerups/ball/NoCollisionBallPowerUp.java index 214dffadc5c2390cc63e32c62a322035fdbea292..c9c4f0e54161c377b4e3e2c7882a4ff9432d03f0 100644 --- a/src/de/bricked/game/powerups/ball/NoCollisionBallPowerUp.java +++ b/src/de/bricked/game/powerups/ball/NoCollisionBallPowerUp.java @@ -11,7 +11,7 @@ public class NoCollisionBallPowerUp extends PowerUp { public NoCollisionBallPowerUp() { - super(PowerUpType.NO_COLLISION_BALL.getId(), PowerUpType.NO_COLLISION_BALL.getDurationInSeconds()); + super(PowerUpType.NO_COLLISION_BALL.getID(), PowerUpType.NO_COLLISION_BALL.getDurationInSeconds()); } @Override diff --git a/src/de/bricked/main/_de.properties b/src/de/bricked/main/_de.properties index e5b3c10ba1332a765b00d8282794f89c96480575..04c1a6f554ef53152e99c90f534e18fec6de5c4d 100644 --- a/src/de/bricked/main/_de.properties +++ b/src/de/bricked/main/_de.properties @@ -3,4 +3,5 @@ version.code=0 version.name=0.0.0 version.date=19.10.16 author=Max Wittig, Robert Goldmann (Vielen Dank an Tobias) + shortcut.debug.console=F12 \ No newline at end of file diff --git a/src/de/bricked/ui/LevelController.java b/src/de/bricked/ui/LevelController.java index df51672c5bacf0abb8f8158bb65968a690dad1ea..44467afa71fa93870b0897454f6fd0cbb400ef99 100644 --- a/src/de/bricked/ui/LevelController.java +++ b/src/de/bricked/ui/LevelController.java @@ -18,6 +18,7 @@ import de.bricked.game.bricks.BrickType; import de.bricked.game.paddle.Paddle; import de.bricked.game.paddle.PaddleSize; import de.bricked.game.powerups.PowerUp; +import de.bricked.game.powerups.PowerUpType; import de.bricked.utils.CountdownTimer; import fontAwesome.FontIcon; import fontAwesome.FontIconType; @@ -49,6 +50,8 @@ import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.ColumnConstraints; import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Priority; import javafx.scene.layout.RowConstraints; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; @@ -86,8 +89,7 @@ public class LevelController private static GridPane grid; private AnimationTimer timer; private double gamePaneWidth; - private double gamePaneHeight; - public final int MAX_LIVES = 7; + private double gamePaneHeight; private final int TARGET_FPS = 60; private final long OPTIMAL_TIME = 1000000000 / TARGET_FPS; private final static double BRICK_FADE_DURATION = 300.0; @@ -101,7 +103,7 @@ public class LevelController private double oldMousePosition; private static ArrayList<Label> brickLabels; private ArrayList<Label> movingPowerUps; - private ArrayList<Label> timedPowerUps; + private ArrayList<CountdownTimer> timedPowerUps; private long previousTime = 0; private float secondsElapsedSinceLastFpsUpdate = 0f; @@ -378,6 +380,10 @@ public class LevelController private void initTimer() { + previousTime = 0; + secondsElapsedSinceLastFpsUpdate = 0f; + fps = 0; + timer = new AnimationTimer() { @Override @@ -554,7 +560,13 @@ public class LevelController labelPause.setTranslateX(((gamePaneWidth - t.getLayoutBounds().getWidth() + 10) / 2) + 22); labelPause.setTranslateY(((gamePaneHeight - t.getLayoutBounds().getHeight()) / 2) + 125); - anchorPane.getChildren().add(labelPause); + anchorPane.getChildren().add(labelPause); + + //pause all timedPowerUps + for(CountdownTimer currentTimer : timedPowerUps) + { + currentTimer.stop(); + } } private void restart() @@ -564,6 +576,13 @@ public class LevelController fps = 0; anchorPaneGame.setOpacity(1.0); anchorPane.getChildren().remove(anchorPane.getChildren().size() - 1); + + //restart all timedPowerUps + for(CountdownTimer currentTimer : timedPowerUps) + { + currentTimer.start(); + } + timer.start(); } @@ -652,9 +671,9 @@ public class LevelController 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); - iv.setFitHeight(120 / MAX_LIVES); + ImageView iv = new ImageView(new Image("de/bricked/resources/textures/paddle/paddle-small.png")); + iv.setFitWidth(70); + iv.setFitHeight(120 / game.getMaxLives()); vboxLives.getChildren().add(iv); } } @@ -902,22 +921,45 @@ public class LevelController private void addTimedPowerUp(PowerUp powerUp) { - Label labelPowerUp = new Label(String.valueOf(powerUp.getDurationInSeconds())); - labelPowerUp.setStyle("-fx-background-image: url(\"de/bricked/resources/textures/powerups/" + powerUp.getID() + ".png\");" + "-fx-background-position: center center;" + "-fx-background-repeat: no-repeat;" + "-fx-background-size: contain;" + "-fx-font-size: 16;" + "-fx-font-weight: bold;" - + "-fx-text-fill: #000000;"); - labelPowerUp.setAlignment(Pos.CENTER); - labelPowerUp.setUserData(powerUp); - - labelPowerUp.setPrefWidth(35); - labelPowerUp.setPrefHeight(20); - - vboxPowerUps.getChildren().add(labelPowerUp); - - timedPowerUps.add(labelPowerUp); - - new CountdownTimer(powerUp.getDurationInSeconds(), labelPowerUp, this); - } - + boolean alreadyActivated = false; + + for(CountdownTimer currentTimer : timedPowerUps) + { + PowerUp currentPowerUp = (PowerUp)currentTimer.getHBox().getUserData(); + if(currentPowerUp.getID() == powerUp.getID()) + { + alreadyActivated = true; + currentTimer.addSecondsToTimer(powerUp.getDurationInSeconds()); + break; + } + } + + if(!alreadyActivated) + { + deactivateAllContraryPowerUps(powerUp); + + HBox hbox = new HBox(); + Label labelIcon = new Label(); + labelIcon.setStyle("-fx-background-image: url(\"de/bricked/resources/textures/powerups/" + powerUp.getID() + ".png\");" + "-fx-background-position: center center;" + "-fx-background-repeat: no-repeat;" + "-fx-background-size: contain;"); + labelIcon.setPrefWidth(35); + labelIcon.setPrefHeight(20); + + Label labelSeconds = new Label(String.valueOf(powerUp.getDurationInSeconds())); + labelSeconds.setStyle("-fx-font-size: 16;" + "-fx-font-weight: bold;"); + + hbox.getChildren().add(labelIcon); + hbox.getChildren().add(labelSeconds); + HBox.setHgrow(labelSeconds, Priority.ALWAYS); + HBox.setMargin(labelSeconds, new Insets(0, 0, 0, 7)); + hbox.setAlignment(Pos.CENTER_LEFT); + + hbox.setUserData(powerUp); + vboxPowerUps.getChildren().add(hbox); + + timedPowerUps.add(new CountdownTimer(powerUp.getDurationInSeconds(), hbox, this)); + } + } + private void resetPowerUps() { clearMovingPowerUps(); @@ -925,27 +967,34 @@ public class LevelController timedPowerUps = new ArrayList<>(); vboxPowerUps.getChildren().clear(); } - - public void deactivatePowerUp(Label label) + + public void deactivateAllContraryPowerUps(PowerUp powerUp) { - int counter = 0; - PowerUp powerUp = (PowerUp)label.getUserData(); - for(Label currentLabel : timedPowerUps) + ArrayList<Integer> deactiveIDs = PowerUpType.valueOf(powerUp.getID()).getDeactivatesPowerUpIDs(); + if(deactiveIDs != null) { - PowerUp currentPowerUp = (PowerUp)currentLabel.getUserData(); - if(currentPowerUp.getID() == powerUp.getID()) + for(int currentInt : deactiveIDs) { - counter++; - } + for(CountdownTimer currentTimer : timedPowerUps) + { + PowerUp currentPowerUp = (PowerUp)currentTimer.getHBox().getUserData(); + if(currentPowerUp.getID() == currentInt) + { + currentTimer.stop(); + deactivatePowerUp(currentTimer, currentTimer.getHBox()); + break; + } + } + } } + } - // if no other power ups of same kind are active - if(counter <= 1) - { - vboxPowerUps.getChildren().remove(label); - timedPowerUps.remove(label); - powerUp.deactivate(this, game); - } + public void deactivatePowerUp(CountdownTimer timer, HBox hbox) + { + PowerUp powerUp = (PowerUp)hbox.getUserData(); + vboxPowerUps.getChildren().remove(hbox); + timedPowerUps.remove(timer); + powerUp.deactivate(this, game); } public void showLabelFPS(boolean value) @@ -979,8 +1028,7 @@ public class LevelController game.resetPointsSinceLastMultiplicatorReset(); game.setBoard(null); game.setLevelController(null); - game.setMovingPowerUps(new ArrayList<>()); - game.setActivatedPowerUps(new ArrayList<>()); + game.setMovingPowerUps(new ArrayList<>()); anchorPaneGame.requestFocus(); } diff --git a/src/de/bricked/ui/LevelGUI.fxml b/src/de/bricked/ui/LevelGUI.fxml index dabc3a8a3ca5e10c4660fe58c2d4cdb16f18abda..b1e6a1a58e86daeca19d14dedc8087fb95ee9c5e 100644 --- a/src/de/bricked/ui/LevelGUI.fxml +++ b/src/de/bricked/ui/LevelGUI.fxml @@ -8,9 +8,9 @@ <?import javafx.scene.layout.VBox?> <?import javafx.scene.text.Font?> -<AnchorPane fx:id="anchorPane" prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.bricked.ui.LevelController"> +<AnchorPane fx:id="anchorPane" prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.bricked.ui.LevelController"> <children> - <AnchorPane fx:id="anchorPaneGame" layoutX="22.0" layoutY="125.0" minHeight="650.0" minWidth="700.0" prefHeight="650.0" prefWidth="700.0" AnchorPane.bottomAnchor="25.0" AnchorPane.leftAnchor="22.0" AnchorPane.rightAnchor="78.0" AnchorPane.topAnchor="125.0"> + <AnchorPane fx:id="anchorPaneGame" layoutX="14.0" layoutY="125.0" minHeight="650.0" minWidth="670.0" prefHeight="650.0" prefWidth="670.0" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="116.0" AnchorPane.topAnchor="125.0"> <children> <Label fx:id="labelMultiplicator" alignment="CENTER" contentDisplay="CENTER" layoutX="301.0" layoutY="502.0" prefHeight="45.0" prefWidth="100.0" textAlignment="CENTER"> <font> @@ -18,7 +18,7 @@ </font> </Label> </children></AnchorPane> - <VBox fx:id="vboxPowerUps" layoutX="745.0" layoutY="125.0" minHeight="338.0" minWidth="40.0" prefHeight="402.0" prefWidth="40.0" AnchorPane.bottomAnchor="273.0" AnchorPane.rightAnchor="15.0" AnchorPane.topAnchor="125.0" /> + <VBox fx:id="vboxPowerUps" layoutX="745.0" layoutY="125.0" maxHeight="490.0" minHeight="338.0" minWidth="40.0" prefHeight="490.0" prefWidth="90.0" AnchorPane.bottomAnchor="185.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="125.0" /> <HBox alignment="CENTER" layoutX="34.0" layoutY="23.0" prefHeight="100.0" prefWidth="275.0" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="14.0" AnchorPane.topAnchor="14.0"> <children> <Button fx:id="buttonBack" mnemonicParsing="false" onAction="#back" text="Back" /> @@ -64,7 +64,7 @@ </Label> </children> </HBox> - <VBox fx:id="vboxLives" layoutX="745.0" layoutY="603.0" minHeight="71.0" minWidth="40.0" prefHeight="227.0" prefWidth="40.0" AnchorPane.bottomAnchor="24.0" AnchorPane.rightAnchor="15.0" /> + <VBox fx:id="vboxLives" layoutX="745.0" layoutY="603.0" minHeight="71.0" minWidth="40.0" prefHeight="160.0" prefWidth="90.0" AnchorPane.bottomAnchor="14.0" AnchorPane.rightAnchor="14.0" /> <Label fx:id="labelFPS" layoutX="770.0" layoutY="6.0" text="0" AnchorPane.rightAnchor="8.0" AnchorPane.topAnchor="8.0"> <font> <Font name="System Bold" size="16.0" /> diff --git a/src/de/bricked/utils/CountdownTimer.java b/src/de/bricked/utils/CountdownTimer.java index f5a807828a9f2d5f02a8c8ffb54c8987b252bcee..e702bd266f9cea020896f1cd82970ad3ea309e5f 100644 --- a/src/de/bricked/utils/CountdownTimer.java +++ b/src/de/bricked/utils/CountdownTimer.java @@ -6,17 +6,40 @@ import java.util.TimerTask; import de.bricked.ui.LevelController; import javafx.application.Platform; import javafx.scene.control.Label; +import javafx.scene.layout.HBox; public class CountdownTimer { - private int count; + private int count; + private HBox hbox; + private LevelController levelController; + private Timer timer; + private TimerTask task; + private CountdownTimer self; - public CountdownTimer(int seconds, Label label, LevelController levelController) + public CountdownTimer(int seconds, HBox hbox, LevelController levelController) { this.count = seconds; + this.hbox = hbox; + this.levelController = levelController; + self = this; - Timer timer = new Timer(); - TimerTask task = new TimerTask() + start(); + } + + public void addSecondsToTimer(int seconds) + { + this.count += seconds; + } + + public HBox getHBox() + { + return hbox; + } + + public void start() + { + task = new TimerTask() { @Override public void run() @@ -24,7 +47,8 @@ public class CountdownTimer Platform.runLater(()->{ try { - label.setText(String.valueOf(count)); + Label labelSeconds = (Label)hbox.getChildren().get(1); + labelSeconds.setText(String.valueOf(count)); } catch(Exception e) { @@ -39,12 +63,19 @@ public class CountdownTimer if(count == 0) { Platform.runLater(()->{ - levelController.deactivatePowerUp(label); + levelController.deactivatePowerUp(self, hbox); }); timer.cancel(); } } }; + timer = new Timer(); timer.schedule(task, 0, 1000); } + + public void stop() + { + timer.cancel(); + timer.purge(); + } } \ No newline at end of file diff --git a/src/de/brickedleveleditor/ui/BrickLabel.java b/src/de/brickedleveleditor/ui/BrickLabel.java index 1ef1a69f4d00646837fbf88d47ee011dd63437b3..030ef6808b2d10ccc5b0469b517e084461964703 100644 --- a/src/de/brickedleveleditor/ui/BrickLabel.java +++ b/src/de/brickedleveleditor/ui/BrickLabel.java @@ -17,7 +17,7 @@ public class BrickLabel extends Label public BrickLabel(BrickType brickType, PowerUpType powerUpType) { - super(brickType.getID() + powerUpType.getId()); + super(brickType.getID() + powerUpType.getID()); this.brickType = brickType; this.powerUpType = powerUpType; @@ -36,7 +36,7 @@ public class BrickLabel extends Label public void setBrickType(BrickType brickType) { this.brickType = brickType; - setText(this.brickType.getID()+this.powerUpType.getId()); + setText(this.brickType.getID()+this.powerUpType.getID()); } public PowerUpType getPowerUpType() @@ -47,6 +47,6 @@ public class BrickLabel extends Label public void setPowerUpType(PowerUpType powerUpType) { this.powerUpType = powerUpType; - setText(this.brickType.getID()+this.powerUpType.getId()); + setText(this.brickType.getID()+this.powerUpType.getID()); } } diff --git a/src/de/brickedleveleditor/ui/controller/MainController.java b/src/de/brickedleveleditor/ui/controller/MainController.java index 2a013c0c4bd154c2695a8f6171db3eeed47d9838..84ea30ceef0eff97235f3275c04b306d0116cff0 100644 --- a/src/de/brickedleveleditor/ui/controller/MainController.java +++ b/src/de/brickedleveleditor/ui/controller/MainController.java @@ -1,18 +1,10 @@ package de.brickedleveleditor.ui.controller; -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Locale; -import java.util.ResourceBundle; - import de.bricked.game.bricks.Brick; import de.bricked.game.bricks.BrickType; import de.bricked.game.powerups.PowerUpType; import de.brickedleveleditor.game.levels.LevelPackWriter; -import de.bricked.game.paddle.PaddleSize; import de.brickedleveleditor.ui.BrickLabel; -import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; @@ -25,7 +17,6 @@ import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Label; import javafx.scene.control.MenuItem; import javafx.scene.image.Image; -import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.*; import javafx.scene.paint.Paint; @@ -35,6 +26,12 @@ import logger.LogLevel; import logger.Logger; import tools.Worker; +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Locale; +import java.util.ResourceBundle; + public class MainController extends AbstractController { @FXML @@ -111,7 +108,7 @@ public class MainController extends AbstractController powerupTextures.add(null); for (int i = 1; i < PowerUpType.types.length; i++) { - File powerupPath = new File(rootPath + PowerUpType.types[i].getId() + fileExt); + File powerupPath = new File(rootPath + PowerUpType.types[i].getID() + fileExt); try { Image image = new Image(powerupPath.getPath());