diff options
| -rw-r--r-- | .classpath | 38 | ||||
| -rw-r--r-- | .vscode/settings.json | 3 | ||||
| -rw-r--r-- | src/gui/Driver.java | 33 | ||||
| -rw-r--r-- | src/gui/Leaderboard.java | 2 | ||||
| -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 | ||||
| -rw-r--r-- | src/main/Level.java | 20 | ||||
| -rw-r--r-- | src/main/LevelController.java | 39 | ||||
| -rw-r--r-- | src/test/Level.java (renamed from src/gui/Level.java) | 3 | 
13 files changed, 179 insertions, 82 deletions
| @@ -1,19 +1,19 @@ -<?xml version="1.0" encoding="UTF-8"?>
 -<classpath>
 -	<classpathentry kind="src" path="src"/>
 -	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11">
 -		<attributes>
 -			<attribute name="module" value="true"/>
 -		</attributes>
 -	</classpathentry>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx.base.jar"/>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx.controls.jar"/>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx.fxml.jar"/>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx.graphics.jar"/>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx.media.jar"/>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx.swing.jar"/>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx.web.jar"/>
 -	<classpathentry kind="lib" path="lib/windows/lib/javafx-swt.jar"/>
 -	<classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/>
 -	<classpathentry kind="output" path="bin"/>
 -</classpath>
 +<?xml version="1.0" encoding="UTF-8"?> +<classpath> +	<classpathentry kind="src" path="src"/> +	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"> +		<attributes> +			<attribute name="module" value="true"/> +		</attributes> +	</classpathentry> +	<classpathentry kind="lib" path="lib/windows/lib/javafx.base.jar"/> +	<classpathentry kind="lib" path="lib/windows/lib/javafx.controls.jar"/> +	<classpathentry kind="lib" path="lib/windows/lib/javafx.fxml.jar"/> +	<classpathentry kind="lib" path="lib/windows/lib/javafx.graphics.jar"/> +	<classpathentry kind="lib" path="lib/windows/lib/javafx.media.jar"/> +	<classpathentry kind="lib" path="lib/windows/lib/javafx.swing.jar"/> +	<classpathentry kind="lib" path="lib/windows/lib/javafx.web.jar"/> +	<classpathentry kind="lib" path="lib/windows/lib/javafx-swt.jar"/> +	<classpathentry kind="lib" path="lib/json-simple-1.1.1.jar"/> +	<classpathentry kind="output" path="bin"/> +</classpath> diff --git a/.vscode/settings.json b/.vscode/settings.json index d84211f..4321e74 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,8 @@      "java.project.sourcePaths": ["src"],      "java.project.outputPath": "bin",      "java.project.referencedLibraries": [ -        "lib/linux/**/*.jar" +        "lib/linux/**/*.jar", +        "lib/**/*.jar"      ],      "java.debug.settings.onBuildFailureProceed": true  }
\ No newline at end of file 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/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 diff --git a/src/main/Level.java b/src/main/Level.java index 52047fd..71560d2 100644 --- a/src/main/Level.java +++ b/src/main/Level.java @@ -8,18 +8,22 @@ import javafx.scene.paint.Color;  public class Level   { -    private Color[] colors; -    private Image background; -    private Image preview; -    private String text; -    private String desc; -    //private ArrayList<String>(); +    public Image preview; +    public String title; +    public String aritst; +    public String desc; +    public ArrayList<String> diffList = new ArrayList<String>(); + +    public Image background; +    public Color[] colors; -    //google "varargs" to see how this works      public void setColors(Color... newColors)      {          colors = newColors;      } -    //INCOMPLETE +    public String toString() +    { +        return title+" - "+aritst; +    }  } diff --git a/src/main/LevelController.java b/src/main/LevelController.java index daf7ae3..6dec953 100644 --- a/src/main/LevelController.java +++ b/src/main/LevelController.java @@ -1 +1,38 @@ -//coming soon
\ No newline at end of file +package main; + +import java.util.ArrayList; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.paint.Color; + +public class LevelController +{ +    public static ObservableList<Level> levelList = FXCollections.observableArrayList(); + +    public LevelController() +    { +        Level testLevel = new Level(); +        testLevel.title = "test level class"; +        testLevel.desc = "this level is being used to test the LevelController class"; +        testLevel.aritst = "testArtist"; +        testLevel.setColors(Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE, Color.PURPLE); +        testLevel.diffList.add("Hello"); +        testLevel.diffList.add("Easy"); +        testLevel.diffList.add("Med"); +        levelList.add(testLevel); + +        Level testLevel2 = new Level(); +        testLevel2.title = "another one"; +        testLevel2.desc = "it can say something else too"; +        testLevel2.aritst = "testArtist2"; +        testLevel2.setColors(Color.RED, Color.BLUE, Color.GREEN, Color.ORANGE, Color.PURPLE); +        testLevel2.diffList.add("Hard"); +        testLevel2.diffList.add("Easy"); +        testLevel2.diffList.add("Med"); +        testLevel2.diffList.add("insane+++"); +        levelList.add(testLevel2); +         +    } + +}
\ No newline at end of file diff --git a/src/gui/Level.java b/src/test/Level.java index ecb741d..6647b6d 100644 --- a/src/gui/Level.java +++ b/src/test/Level.java @@ -1,5 +1,6 @@ -package gui; +package test; +import gui.Block;  import javafx.application.Application;  import javafx.event.ActionEvent;  import javafx.event.EventHandler; | 
