diff options
author | sowgro <tpoke.ferrari@gmail.com> | 2023-05-19 01:15:47 -0400 |
---|---|---|
committer | sowgro <tpoke.ferrari@gmail.com> | 2023-05-19 01:15:47 -0400 |
commit | 7c106e7dda744e7d3782737262601de693db0dca (patch) | |
tree | fccec4b5825bb63e2d1195dce431f063ac87f5cb /src/gui | |
parent | fe9794bdc8270b43ed5ae847d65ea2a2eecd4a79 (diff) | |
download | NPEhero-7c106e7dda744e7d3782737262601de693db0dca.tar.gz NPEhero-7c106e7dda744e7d3782737262601de693db0dca.tar.bz2 NPEhero-7c106e7dda744e7d3782737262601de693db0dca.zip |
- overhaul css (not done)
- rewrite driver
- add difficulty buttons
- remove placeholders (not done)
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/Driver.java | 33 | ||||
-rw-r--r-- | src/gui/Leaderboard.java | 2 | ||||
-rw-r--r-- | src/gui/Level.java | 105 | ||||
-rw-r--r-- | src/gui/LevelDetails.java | 37 | ||||
-rw-r--r-- | src/gui/LevelSelector.java | 13 | ||||
-rw-r--r-- | src/gui/LevelSurround.java | 9 | ||||
-rw-r--r-- | src/gui/MainMenu.java | 6 | ||||
-rw-r--r-- | src/gui/Settings.java | 2 | ||||
-rw-r--r-- | src/gui/style.css | 56 |
9 files changed, 106 insertions, 157 deletions
diff --git a/src/gui/Driver.java b/src/gui/Driver.java index 56bc36a..b93dbce 100644 --- a/src/gui/Driver.java +++ b/src/gui/Driver.java @@ -13,12 +13,12 @@ import javafx.scene.layout.BackgroundRepeat; import javafx.scene.layout.BackgroundSize; import javafx.scene.layout.Pane; import javafx.stage.Stage; +import main.LevelController; public class Driver extends Application { static Stage primaryStage; - static HashMap<String,Pane> menus = new HashMap<String,Pane>(); static Pane primaryPane = new Pane(); public static void main(String[] args) @@ -29,43 +29,22 @@ public class Driver extends Application @Override public void start(Stage newPrimaryStage) { + new LevelController(); primaryStage = newPrimaryStage; - menus.put("MainMenu", new MainMenu()); - menus.put("LevelSelector", new LevelSelector()); - menus.put("Settings", new Settings()); - menus.put("Leaderboard", new Leaderboard()); - for (Pane value : menus.values()) { - System.out.println(primaryStage.heightProperty()); - value.prefHeightProperty().bind(primaryPane.heightProperty()); - value.prefWidthProperty().bind(primaryPane.widthProperty()); - } - - Scene primaryScene = new Scene(primaryPane, 800, 600); primaryScene.getStylesheets().add("gui/style.css"); primaryStage.setScene(primaryScene); primaryStage.setTitle("NPE Hero"); - setMenu("MainMenu"); + setMenu(new MainMenu()); setBackground("assets/water.png"); primaryStage.show(); } - - public static void setMenu(String name) - { - if (! primaryPane.getChildren().isEmpty()) - { - primaryPane.getChildren().remove(0); - } - primaryPane.getChildren().add(menus.get(name)); - primaryPane.requestFocus(); - } - - public static void setCustomMenu(Pane pane) + public static void setMenu(Pane pane) { if (! primaryPane.getChildren().isEmpty()) { @@ -77,6 +56,10 @@ public class Driver extends Application primaryPane.requestFocus(); } + public static Pane getMenu(){ + return (Pane) primaryPane.getChildren().get(0); + } + public static void setBackground(String url) { primaryPane.setBackground(new Background( diff --git a/src/gui/Leaderboard.java b/src/gui/Leaderboard.java index b91fa7c..2b12d25 100644 --- a/src/gui/Leaderboard.java +++ b/src/gui/Leaderboard.java @@ -22,7 +22,7 @@ public class Leaderboard extends Pane Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("MainMenu")); + exit.setOnAction(e -> Driver.setMenu(new MainMenu())); VBox centerBox = new VBox(); centerBox.setAlignment(Pos.CENTER); diff --git a/src/gui/Level.java b/src/gui/Level.java deleted file mode 100644 index ecb741d..0000000 --- a/src/gui/Level.java +++ /dev/null @@ -1,105 +0,0 @@ -package gui; - -import javafx.application.Application; -import javafx.event.ActionEvent; -import javafx.event.EventHandler; -import javafx.geometry.Insets; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.scene.effect.BlurType; -import javafx.scene.effect.DropShadow; -import javafx.scene.layout.Background; -import javafx.scene.layout.BackgroundFill; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.CornerRadii; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.Pane; -import javafx.scene.paint.Color; -import javafx.stage.Stage; - -// will eventually extend pane -public class Level extends Application { - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage primaryStage) { - primaryStage.setTitle("program"); - - BorderPane background = new BorderPane(); - Scene game = new Scene(background, 800, 600); - GridPane blockGrid = new GridPane(); - blockGrid.setBackground(new Background(new BackgroundFill(Color.BLACK, CornerRadii.EMPTY, Insets.EMPTY))); - background.setCenter(blockGrid); - - blockGrid.maxWidthProperty().bind(game.heightProperty().multiply(0.53)); - blockGrid.maxHeightProperty().bind(game.heightProperty()); - System.out.println(game.heightProperty()); - - //blockGrid.setMaxHeight(700); - //blockGrid.setMaxWidth(500); - //blockGrid.setScaleX(1); - //blockGrid.setScaleY(1); - //blockGrid.scaleXProperty().bind(game.heightProperty().divide(1000)); - //blockGrid.scaleYProperty().bind(game.heightProperty().divide(1000)); - //blockGrid.hgapProperty().bind(blockGrid.heightProperty().divide(11)); - //blockGrid.vgapProperty().bind(blockGrid.widthProperty().divide(21)); - blockGrid.setVgap(10); - blockGrid.setHgap(25); - - int blocksize = 50; - //AnchorPane b11 = new AnchorPane(); - //b11.getChildren().add(new Block(Color.ORANGE, b11, 10)); - Block b1 = new Block(Color.RED, blocksize, blocksize, 10); - //b1.heightProperty().bind(blockGrid.heightProperty().divide((blockGrid.getColumnCount()*2)+1)); - //b1.widthProperty().bind(blockGrid.widthProperty().divide((blockGrid.getRowCount()*2)+1)); - - Block b2 = new Block(Color.BLUE, blocksize, blocksize, 10); - //b2.heightProperty().bind(blockGrid.heightProperty().divide(21)); - //b2.widthProperty().bind(blockGrid.widthProperty().divide(11)); - - Block b3 = new Block(Color.GREEN, blocksize, blocksize, 10); - //b3.heightProperty().bind(blockGrid.heightProperty().divide(21)); - //b3.widthProperty().bind(blockGrid.widthProperty().divide(11)); - - Block b4 = new Block(Color.YELLOW, blocksize, blocksize, 10); - //b4.heightProperty().bind(blockGrid.heightProperty().divide(21)); - //b4.widthProperty().bind(blockGrid.widthProperty().divide(11)); - - Pane test = new Pane(); - - Block b5 = new Block(Color.ORANGE, blocksize, blocksize, 10); - DropShadow dropShadow = new DropShadow(); - dropShadow.setRadius(200.0); - dropShadow.setColor(Color.ORANGE); - dropShadow.setBlurType(BlurType.GAUSSIAN); - test.getChildren().add(b5); - test.setEffect(dropShadow); - - - - blockGrid.add(b1, 0, 0); - blockGrid.add(b2, 1, 0); - blockGrid.add(b3, 0, 1); - blockGrid.add(b4, 1, 1); - blockGrid.add(test, 1, 2); - - Button btn = new Button(); - btn.setText("Test"); - btn.setOnAction(new EventHandler<ActionEvent>() - { - @Override - public void handle(ActionEvent event) - { - System.out.println("test"); - } - }); - - background.setLeft(btn); - - primaryStage.setScene(game); - primaryStage.show(); - - } -}
\ No newline at end of file diff --git a/src/gui/LevelDetails.java b/src/gui/LevelDetails.java index 93a43cd..427ede0 100644 --- a/src/gui/LevelDetails.java +++ b/src/gui/LevelDetails.java @@ -4,18 +4,22 @@ import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.control.ListView; +import javafx.scene.control.ToggleButton; +import javafx.scene.control.ToggleGroup; import javafx.scene.image.Image; import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.scene.text.TextAlignment; +import main.Level; public class LevelDetails extends VBox { - public LevelDetails(ListView<String> list) + public LevelDetails(Level level) { VBox details = new VBox(); details.prefWidthProperty().bind(super.prefWidthProperty()); @@ -26,9 +30,10 @@ public class LevelDetails extends VBox details.setPadding(new Insets(10)); Button play = new Button(); + play.setDisable(true); play.setText("Play"); - if (list.getSelectionModel().getSelectedItem() == null) + if (level == null) { Text desc = new Text(); desc.setText("Select a level from the left pane"); @@ -37,30 +42,44 @@ public class LevelDetails extends VBox desc.setTextAlignment(TextAlignment.CENTER); details.setAlignment(Pos.CENTER); details.getChildren().addAll(desc); - play.setDisable(true); } else { Text title = new Text(); - title.setText("Test level 1"); + title.setText(level.title); title.setFill(Color.WHITE); title.setFont(new Font(50)); title.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10)); Text desc = new Text(); - desc.setText("long description with lots of words. what we write does not actually need to be long i just wan t make sure it can word wrap"); + desc.setText(level.desc); desc.setFill(Color.WHITE); desc.wrappingWidthProperty().bind(super.prefWidthProperty().subtract(10)); ImageView previewView = new ImageView(); - Image preview = new Image("assets/pico.png"); + Image preview = level.preview; previewView.setImage(preview); - //previewView.setFitHeight(100); previewView.fitWidthProperty().bind(super.prefWidthProperty().multiply(0.5)); previewView.setPreserveRatio(true); - details.getChildren().addAll(title,desc,previewView); - play.setOnAction(e -> Driver.setCustomMenu(new LevelSurround())); + + HBox diffBox = new HBox(); + diffBox.setPadding(new Insets(30,0,0,0)); + HBox diffSelector = new HBox(); + diffSelector.setAlignment(Pos.CENTER); + ToggleGroup diffToggleGroup = new ToggleGroup(); + for (String diff : level.diffList) + { + ToggleButton temp = new ToggleButton(); + temp.setText(diff); + diffToggleGroup.getToggles().add(temp); + diffSelector.getChildren().add(temp); + } + play.disableProperty().bind(diffToggleGroup.selectedToggleProperty().isNull()); + + diffBox.getChildren().add(diffSelector); + details.getChildren().addAll(title,desc,previewView, diffBox); + play.setOnAction(e -> Driver.setMenu(new LevelSurround(level, "easy", Driver.getMenu()))); } VBox rightBox = new VBox(); diff --git a/src/gui/LevelSelector.java b/src/gui/LevelSelector.java index 9ae6033..38dc15f 100644 --- a/src/gui/LevelSelector.java +++ b/src/gui/LevelSelector.java @@ -13,20 +13,21 @@ import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; +import main.LevelController; +import main.Level; public class LevelSelector extends Pane { public LevelSelector() { - ListView<String> levels = new ListView<String>(); - ObservableList<String> levelList= FXCollections.observableArrayList ("Test Level 1", "Test Level 2", "Test Level 3", "Test Level 4"); - levels.setItems(levelList); + ListView<Level> levels = new ListView<Level>(); + levels.setItems(main.LevelController.levelList); levels.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.25)); levels.prefHeightProperty().bind(super.prefHeightProperty().multiply(0.75)); Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("MainMenu")); + exit.setOnAction(e -> Driver.setMenu(new MainMenu())); VBox leftBox = new VBox(); leftBox.setAlignment(Pos.CENTER_LEFT); @@ -48,9 +49,9 @@ public class LevelSelector extends Pane super.getChildren().add(rootBox); } - private void addDetails(Pane rightBox, ListView<String> levels) + private void addDetails(Pane rightBox, ListView<Level> levels) { - VBox details = new LevelDetails(levels); + VBox details = new LevelDetails(levels.getSelectionModel().getSelectedItem()); if (! rightBox.getChildren().isEmpty()) { rightBox.getChildren().remove(0); diff --git a/src/gui/LevelSurround.java b/src/gui/LevelSurround.java index 204ec3a..3371c3e 100644 --- a/src/gui/LevelSurround.java +++ b/src/gui/LevelSurround.java @@ -12,15 +12,16 @@ import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.scene.text.Font; import javafx.scene.text.Text; +import main.Level; public class LevelSurround extends Pane { //will have param (Level l) - public LevelSurround() + public LevelSurround(Level level, String diff2, Pane prev) { Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("LevelSelector")); + exit.setOnAction(e -> Driver.setMenu(prev)); Button pause = new Button(); pause.setText("Pause"); @@ -31,12 +32,12 @@ public class LevelSurround extends Pane buttonBox.setSpacing(10); Text title = new Text(); - title.setText("Test level 1"); + title.setText(level.title); title.setFill(Color.WHITE); title.setFont(new Font(50)); Text diff = new Text(); - diff.setText("Easy"); + diff.setText(diff2); diff.setFill(Color.WHITE); VBox titleTextBox = new VBox(); diff --git a/src/gui/MainMenu.java b/src/gui/MainMenu.java index 39fb2be..f3cd75d 100644 --- a/src/gui/MainMenu.java +++ b/src/gui/MainMenu.java @@ -27,15 +27,15 @@ public class MainMenu extends Pane Button play = new Button(); play.setText("Play"); - play.setOnAction(e -> Driver.setMenu("LevelSelector")); + play.setOnAction(e -> Driver.setMenu(new LevelSelector())); Button settings = new Button(); settings.setText("Settings"); - settings.setOnAction(e -> Driver.setMenu("Settings")); + settings.setOnAction(e -> Driver.setMenu(new Settings())); Button leaderboard = new Button(); leaderboard.setText("Leaderboard"); - leaderboard.setOnAction(e -> Driver.setMenu("Leaderboard")); + leaderboard.setOnAction(e -> Driver.setMenu(new Leaderboard())); VBox buttonBox = new VBox(); buttonBox.getChildren().addAll(play, settings, leaderboard); diff --git a/src/gui/Settings.java b/src/gui/Settings.java index d3c2632..c89953f 100644 --- a/src/gui/Settings.java +++ b/src/gui/Settings.java @@ -35,7 +35,7 @@ public class Settings extends Pane Button exit = new Button(); exit.setText("Exit"); - exit.setOnAction(e -> Driver.setMenu("MainMenu")); + exit.setOnAction(e -> Driver.setMenu(new MainMenu())); VBox options = new VBox(); options.setSpacing(10); diff --git a/src/gui/style.css b/src/gui/style.css index 1e2dfcc..957025f 100644 --- a/src/gui/style.css +++ b/src/gui/style.css @@ -3,7 +3,10 @@ Button { -fx-background-color: rgba(0, 0, 0, 0.5); -fx-text-fill: white; - -fx-padding: .5em; + /* -fx-padding: .5em; */ + -fx-border-color: transparent; + -fx-border-width: 3; + -fx-border-radius: 5; -fx-font-size: 25; -fx-background-radius: 5; } @@ -13,12 +16,15 @@ Button:hover { } Button:focused { - -fx-background-color: rgb(255, 255, 255); - -fx-text-fill: rgb(0, 0, 0); + /* -fx-background-color: rgb(255, 255, 255); */ + -fx-background-color: rgb(50, 50, 50, 0.5); + -fx-border-color: rgb(255, 255, 255); + /* -fx-text-fill: rgb(0, 0, 0); */ } Button:pressed { -fx-background-color: rgb(231, 231, 231); + -fx-border-color: transparent; -fx-text-fill: rgb(0, 0, 0); } @@ -27,12 +33,18 @@ Button:pressed { ListView { -fx-background-color: rgba(0, 0, 0, 0.5); -fx-background-radius: 5; + -fx-padding: 5; + -fx-effect: none; } .list-cell { -fx-padding: .5em; -fx-background-color: transparent; + -fx-background-radius: 5; -fx-text-fill: rgb(255, 255, 255); + -fx-border-width: 3; + -fx-border-radius: 5; + -fx-border-color: transparent; } .list-cell:hover { @@ -40,6 +52,11 @@ ListView { } +.list-cell:focused { + -fx-background-color: rgb(50, 50, 50, 0.5); + -fx-border-color: rgb(255, 255, 255); +} + .list-cell:selected { -fx-background-color: rgb(255, 255, 255); -fx-text-fill: rgb(0, 0, 0); @@ -96,4 +113,37 @@ Slider:focused .thumb{ -fx-border-color: red; -fx-text-fill: white; -fx-border-width: 20; +} + +/* toggle button */ + +ToggleButton { + -fx-background-color: rgba(0, 0, 0, 0.5); + -fx-text-fill: white; + -fx-border-color: transparent; + -fx-border-width: 3; + -fx-border-radius: 5; + -fx-font-size: 25; + -fx-background-radius: 5; +} + +ToggleButton:hover { + -fx-background-color: rgb(50, 50, 50, 0.5); +} + +ToggleButton:focused { + -fx-background-color: rgb(50, 50, 50, 0.5); + -fx-border-color: rgb(255, 255, 255); +} + +ToggleButton:selected { + -fx-background-color: rgb(255, 255, 255); + -fx-text-fill: rgb(0, 0, 0); + +} + +ToggleButton:pressed { + -fx-background-color: rgb(231, 231, 231); + -fx-border-color: transparent; + -fx-text-fill: rgb(0, 0, 0); }
\ No newline at end of file |