diff --git a/README.md b/README.md index d351a7e1c76dec53336acb562d9f67b5c8075daf..36649891de9120708f42d1e77509733f2abd6a23 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ ## Hier könnte ihre Werbung stehn -### Known issues - - Videos sometimes don't load in windows 11 especially on weaker systems +### Known issues: + - Videos sometimes don't load in Windows 11 especially on weaker systems + - SQL server is very slow (thanks Oracle) diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateAccountController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateAccountController.java index b725ed4ccd895b7b64f662003383a02d4c82f8b7..826cb76c7ba083c1cd0608fe5d6d83e28ef68733 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateAccountController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/CreateAccountController.java @@ -1,6 +1,9 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Label; @@ -16,15 +19,17 @@ public class CreateAccountController implements Initializable { @FXML private VBox parent; @FXML - private RadioButton local, online; + private RadioButton local; @FXML private ToggleGroup statistics; @FXML private TextField playerName, password; @FXML - private Label errorMessage; + private Label errorMessage, passwordLabel; + String selectedButton; SceneLoader sceneLoader = new SceneLoader(); + Persistence persistence = Persistence.getInstance(); @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -34,11 +39,20 @@ public class CreateAccountController implements Initializable { private void getSelected() { statistics.selectedToggleProperty().addListener((observableValue, toggle, t1) -> { if (statistics.getSelectedToggle() != null) { - RadioButton selectedButton = (RadioButton) statistics.getSelectedToggle(); - String selected = selectedButton.getText(); - System.out.println(selected); + RadioButton selectedToggle = (RadioButton) statistics.getSelectedToggle(); + selectedButton = selectedToggle.getText(); + System.out.println(selectedButton); + } + if (local.isSelected()) { + password.setEditable(false); + password.setText(""); + passwordLabel.setStyle("-fx-text-fill: rgba(0, 0, 0, 0.3)"); + password.setStyle("-fx-border-color: rgba(0, 0, 0, 0.3)"); + } else { + passwordLabel.setStyle("-fx-text-fill: black"); + password.setEditable(true); + password.setStyle("-fx-border-color: black"); } - password.setEditable(!local.isSelected()); }); } @@ -49,7 +63,20 @@ public class CreateAccountController implements Initializable { @FXML private void create() { - switchScene("MainMenu"); + AccountType accountType; + if (selectedButton.equals("Local")) { + accountType = AccountType.LOCAL; + } else { + accountType = AccountType.ONLINE; + } + try { + persistence.createAccount(playerName.getText(), password.getText(), accountType); + persistence.resetPlayerStatistics(); + persistence.loadPlayerStatistics(); + switchScene("MainMenu"); + } catch (DatabaseException e) { + errorMessage.setText(e.getMessage()); + } } @FXML diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java index f8a3824d3a16b51b79ac51e875a488c5cc3f2487..6a99c538617e193578e4a80332c60baa7c0bcf5e 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/IntroController.java @@ -1,9 +1,7 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer; -import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; -import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.StartupThread; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java index 7c3bb06651c2a8d0dae958bb795ff86632c02814..a7aa8a685f37286da95ba3edda224fc8c78f30d4 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoadingScreenController.java @@ -1,10 +1,13 @@ package de.hdm_stuttgart.battlearena.Controller; -import de.hdm_stuttgart.battlearena.Controller.Utilities.LoadingPersistence; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; -import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.StartupThread; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ThreadStartup1; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ThreadStartup2; import javafx.application.Platform; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.geometry.Rectangle2D; import javafx.scene.control.Label; @@ -26,6 +29,7 @@ public class LoadingScreenController implements Initializable { @FXML private ImageView logo, throbber; + boolean isReady = false; private int counter = 0; private boolean statsLoaded = false; private final String[] loadingTips = { @@ -51,6 +55,9 @@ public class LoadingScreenController implements Initializable { private final List<String> shuffledTips = Arrays.asList(loadingTips); private static final Logger log = LogManager.getLogger(Persistence.class); Rectangle2D screen = Screen.getPrimary().getVisualBounds(); + ThreadStartup1 thread1 = new ThreadStartup1(); + ThreadStartup2 thread2 = new ThreadStartup2(); + Persistence persistence = Persistence.getInstance(); Thread tipsThread = new Thread(() -> { try { @@ -63,7 +70,7 @@ public class LoadingScreenController implements Initializable { Thread loadingDataThread = new Thread(() -> { try { Thread.sleep(4000); - statsLoaded = new LoadingPersistence().loadingData(parent, statsLoaded, tipsThread); + loadData(); } catch (IOException e) { throw new RuntimeException(); } catch (InterruptedException e) { @@ -73,10 +80,23 @@ public class LoadingScreenController implements Initializable { @Override public void initialize(URL url, ResourceBundle resourceBundle) { - new StartupThread().start(); Collections.shuffle(shuffledTips); setImages(); + tipsThread.start(); + thread1.start(); + + boolean threadOneIsRunning = true, threadTwoIsRunning = false; + while (!isReady) { + if (!thread1.isAlive() && threadOneIsRunning) { + thread2.start(); + threadTwoIsRunning = true; + threadOneIsRunning = false; + } + if (!thread2.isAlive() && threadTwoIsRunning) { + isReady = true; + } + } loadingDataThread.start(); } @@ -106,4 +126,18 @@ public class LoadingScreenController implements Initializable { } } } + + private void loadData() throws IOException { + if (persistence.getAccount().getAccountType() != AccountType.NONE) { + try { + persistence.loadPlayerStatistics(); + statsLoaded = true; + } catch (DatabaseException e) { + log.error(e); + } + } + + Platform.runLater(tipsThread::interrupt); + parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml")))); + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoginController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoginController.java index f4669526238ef9bf39715174449bc415df61f6b6..bb09e4518c634f517185a5dbd2ce4f3691b4fa6b 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoginController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/LoginController.java @@ -1,17 +1,26 @@ package de.hdm_stuttgart.battlearena.Controller; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; +import javafx.application.Platform; import javafx.fxml.FXML; +import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; +import java.security.NoSuchAlgorithmException; + public class LoginController { @FXML private VBox parent; @FXML private TextField playerName, password; + @FXML + private Label errorMessage; SceneLoader sceneLoader = new SceneLoader(); + Persistence persistence = Persistence.getInstance(); private void switchScene(String name) { parent.getChildren().clear(); @@ -20,11 +29,24 @@ public class LoginController { @FXML private void login() { - switchScene("MainMenu"); + errorMessage.setText("Loading an eternity because of slow SQL server..."); + thread.start(); } + Thread thread = new Thread(() -> { + try { + persistence.login(playerName.getText(), password.getText()); + Platform.runLater(() -> switchScene("MainMenu")); + } catch (NoSuchAlgorithmException e) { + throw new RuntimeException(e); + } catch (DatabaseException e) { + Platform.runLater(() -> errorMessage.setText(e.getMessage())); + } + }); + @FXML private void back() { + thread.interrupt(); switchScene("PlayerCreateScene"); } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java index 7e9af037b2fafd7f4f4e41e59e8f779d04884c06..75315ab525f8037751af3070d1402fe0c9ed7f71 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Controller/MenuBorderPaneController.java @@ -1,9 +1,9 @@ package de.hdm_stuttgart.battlearena.Controller; -import de.hdm_stuttgart.battlearena.Controller.Utilities.AccountExistsSingleton; import de.hdm_stuttgart.battlearena.Controller.Utilities.CreateMediaPlayer; import de.hdm_stuttgart.battlearena.Controller.Utilities.MusicPlayerSingleton; import de.hdm_stuttgart.battlearena.Controller.Utilities.SceneLoader; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; import javafx.fxml.FXML; import javafx.fxml.Initializable; @@ -45,8 +45,7 @@ public class MenuBorderPaneController implements Initializable { @Override public void initialize(URL url, ResourceBundle resourceBundle) { - AccountExistsSingleton account = AccountExistsSingleton.getInstance(); - if (!account.getAccount()) { + if (Persistence.getInstance().getAccount().getAccountType() == AccountType.NONE) { center.getChildren().add(sceneLoader.loadScene("PlayerCreateScene")); } else { center.getChildren().add(sceneLoader.loadScene("MainMenu")); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/AccountExistsSingleton.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/AccountExistsSingleton.java deleted file mode 100644 index 3e7db2d67a673cd6fb7c5008019c19d5f4309531..0000000000000000000000000000000000000000 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/AccountExistsSingleton.java +++ /dev/null @@ -1,21 +0,0 @@ -package de.hdm_stuttgart.battlearena.Controller.Utilities; - -public class AccountExistsSingleton { - private static final AccountExistsSingleton instance = new AccountExistsSingleton(); - - private boolean accountExists; - - private AccountExistsSingleton() {} - - public static AccountExistsSingleton getInstance() { - return instance; - } - - public boolean getAccount() { - return accountExists; - } - - public void setAccount(boolean accountExists) { - this.accountExists = accountExists; - } -} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/LoadingPersistence.java b/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/LoadingPersistence.java deleted file mode 100644 index ad6b6241aac1bc9c99e52674916d5de654506617..0000000000000000000000000000000000000000 --- a/src/main/java/de/hdm_stuttgart/battlearena/Controller/Utilities/LoadingPersistence.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.hdm_stuttgart.battlearena.Controller.Utilities; - -import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Exceptions.DatabaseException; -import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Persistence; -import javafx.application.Platform; -import javafx.fxml.FXMLLoader; -import javafx.scene.layout.BorderPane; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import java.io.IOException; -import java.util.Objects; - -public class LoadingPersistence { - Persistence persistence = Persistence.getInstance(); - private static final Logger log = LogManager.getLogger(Persistence.class); - - public boolean loadingData(BorderPane parent, boolean statsLoaded, Thread tipsThread) throws IOException { - boolean isStartUp = true, accountExists = true; - while (isStartUp) { - try { - persistence.loadPlayerAccount(); - persistence.verifyPlayerAccount(); - isStartUp = false; - } catch (DatabaseException e) { - accountExists = false; - AccountExistsSingleton.getInstance().setAccount(accountExists); - break; -// TODO: reset player account if account fails to load in loadPlayerAccount() - } - } - - while (!statsLoaded) { // while loop because Martin said so - try { - persistence.loadPlayerStatistics(); - statsLoaded = true; - } catch (DatabaseException e) { - log.error(e); - } - } - AccountExistsSingleton.getInstance().setAccount(accountExists); - Platform.runLater(tipsThread::interrupt); - parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml")))); -// Platform.runLater(() -> { -// try { -// parent.getScene().setRoot(FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MenuBorderPane.fxml")))); -// } catch (IOException e) { -// log.error("MenuBorderPane.fxml error ", e); -// } -// }); - return statsLoaded; - } -} diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java index 58444069340625fa71378edd123d1171fe6fd057..5bd163f7525458e79088f6026d17a347fd12845f 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Main/Main.java @@ -41,6 +41,8 @@ public class Main extends Application { // loading font in start() because CSS can't handle whitespace in folder names Font.loadFont(getClass().getResourceAsStream("/fonts/StarshipShadow.ttf"), 50); Font.loadFont(getClass().getResourceAsStream("/fonts/AmaticSC-Bold.ttf"), 50); + Font.loadFont(getClass().getResourceAsStream("/fonts/Arthemis-mLA22.ttf"), 50); + Font.loadFont(getClass().getResourceAsStream("/fonts/ShadowsIntoLight-Regular.ttf"), 50); Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/LoadingScreen.fxml"))); diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ENUMs/ThreadStatus.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ENUMs/ThreadStatus.java index fb75fb7eef6bf215cb9545b3e455c243d5ef4123..48ef20b9c36ce3e1758460adb489b643a7175c8e 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ENUMs/ThreadStatus.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ENUMs/ThreadStatus.java @@ -4,6 +4,7 @@ public enum ThreadStatus { RUNNING, FAILED, - FINISHED + FINISHED, + NONE } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java index a27908ba0c61f640c24d0b1b8b788bfa0a52b8be..ed590c689081da1173a70e2c12f920f7e9489148 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/Persistence.java @@ -11,6 +11,7 @@ import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.Utilities.Parser; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; +import java.security.NoSuchAlgorithmException; import java.util.ArrayList; public class Persistence { @@ -454,4 +455,20 @@ public class Persistence { } } + public void login(String userName, String password) throws NoSuchAlgorithmException, RuntimeException, DatabaseException { + try { + String hash = HashGenerator.hashAndHex(password); + if (hash.equals(db.checkCredentials(userName))) { + PlayerAccount playerAccount = new PlayerAccount(userName, hash, AccountType.ONLINE); + gsonHandler.saveAccount(playerAccount); + db.getStatistics(userName); + } else { + throw new DatabaseException(); + } + } catch (GSONException | SQLException e) { + throw new RuntimeException(e); + } catch (DatabaseException e) { + throw new DatabaseException("Wrong password"); + } + } } diff --git a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java index 4d9a3a57c6c76bf29425ecd0ce5f62a1dcc43d40..4fc52e8654ba4827ef5bf22993ade103e6f44eb8 100644 --- a/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java +++ b/src/main/java/de/hdm_stuttgart/battlearena/Model/DataStorage/Classes/ThreadStartup2.java @@ -1,5 +1,6 @@ package de.hdm_stuttgart.battlearena.Model.DataStorage.Classes; +import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.AccountType; import de.hdm_stuttgart.battlearena.Model.DataStorage.Classes.ENUMs.ThreadStatus; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -18,6 +19,9 @@ public class ThreadStartup2 extends Thread{ runtimeInfoInst.setThreadStartup2Msg(""); runtimeInfoInst.setThreadStartup2(ThreadStatus.RUNNING); persistenceInst.loadPlayerAccount(); + if (persistenceInst.getAccount().getAccountType() != AccountType.NONE) { + persistenceInst.verifyPlayerAccount(); + } log.info("Startup routine part2 complete!"); runtimeInfoInst.setThreadStartup2(ThreadStatus.FINISHED); } catch (Exception e) { diff --git a/src/main/resources/fonts/Arthemis-mLA22.ttf b/src/main/resources/fonts/Arthemis-mLA22.ttf new file mode 100644 index 0000000000000000000000000000000000000000..165d0d21fda6832a71ff683dcfafe042a5d2d016 Binary files /dev/null and b/src/main/resources/fonts/Arthemis-mLA22.ttf differ diff --git a/src/main/resources/fonts/ShadowsIntoLight-Regular.ttf b/src/main/resources/fonts/ShadowsIntoLight-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d20640513b188b6627c3b11383721eba624f1b26 Binary files /dev/null and b/src/main/resources/fonts/ShadowsIntoLight-Regular.ttf differ diff --git a/src/main/resources/fxml/CreateAccount.fxml b/src/main/resources/fxml/CreateAccount.fxml index 990585a6c7c9bf5d734e37910636a0c34ac926a7..b75267745fd38367a38728324cf4b7a0aefa720c 100644 --- a/src/main/resources/fxml/CreateAccount.fxml +++ b/src/main/resources/fxml/CreateAccount.fxml @@ -23,14 +23,14 @@ <ToggleGroup fx:id="statistics" /> </toggleGroup> </RadioButton> - <RadioButton fx:id="online" mnemonicParsing="false" text="Online" toggleGroup="$statistics" /> + <RadioButton mnemonicParsing="false" text="Online" toggleGroup="$statistics" /> </children> </HBox> </children> </VBox> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Player Name:" /> <TextField fx:id="playerName" alignment="CENTER" /> - <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Password:" /> + <Label fx:id="passwordLabel" text="Password:" /> <TextField fx:id="password" alignment="CENTER" /> <Label fx:id="errorMessage" /> <Button mnemonicParsing="false" onAction="#create" text="Create" /> diff --git a/src/main/resources/fxml/Login.fxml b/src/main/resources/fxml/Login.fxml index a6342678432851059dc393d88d6489b8af71c0ac..a63c7c127ff2c30d0499ffc963851e061324bf58 100644 --- a/src/main/resources/fxml/Login.fxml +++ b/src/main/resources/fxml/Login.fxml @@ -17,7 +17,7 @@ <TextField fx:id="playerName" alignment="CENTER" /> <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Password:" /> <TextField fx:id="password" alignment="CENTER" /> - <Label text="Error Message" /> + <Label fx:id="errorMessage" /> <Button mnemonicParsing="false" onAction="#login" text="Login" /> <Button mnemonicParsing="false" onAction="#back" text="Back" /> <Pane VBox.vgrow="ALWAYS" /> diff --git a/src/main/resources/player/appSettings.json b/src/main/resources/player/appSettings.json index 6e590e0b3558f801e067de65522b508a8ae3b557..f7d371619fa1db8dd4701e6607908135293b820c 100644 --- a/src/main/resources/player/appSettings.json +++ b/src/main/resources/player/appSettings.json @@ -1,4 +1,4 @@ { "sfxVolume": 100, - "musicVolume": 13 + "musicVolume": 0 } \ No newline at end of file diff --git a/src/main/resources/player/playerStatsLocal.json b/src/main/resources/player/playerStatsLocal.json index e51de779c74b6c93fe347b5bf263508c23fff2c9..4db3d0788fb3ff0fe8d593e5baed84279916821b 100644 --- a/src/main/resources/player/playerStatsLocal.json +++ b/src/main/resources/player/playerStatsLocal.json @@ -1,8 +1,8 @@ { - "gamesLost": 5, - "gamesWon": 9, - "kills": 30, - "deaths": 20, - "blocksDestroyed": 200, - "gameTime": 3966480 + "gamesLost": 0, + "gamesWon": 0, + "kills": 0, + "deaths": 0, + "blocksDestroyed": 0, + "gameTime": 0 } \ No newline at end of file diff --git a/src/main/resources/styles/style.css b/src/main/resources/styles/style.css index 3fb5bc5d84a33bcb3615f94a6a6fedf8d6373417..0389e5bbbcc594716ff89c2a3d73e0dfd7fc61a3 100644 --- a/src/main/resources/styles/style.css +++ b/src/main/resources/styles/style.css @@ -8,7 +8,7 @@ } .root { - -fx-font-family: "Starship Shadow"; + -fx-font-family: "Arthemis"; -fx-text-fill: white; -fx-background-color: black; -fx-font-size: 50 px; @@ -26,9 +26,10 @@ .text-field { -fx-background-color: transparent; -fx-text-fill: black; - -fx-border-color: -fx-dark-brown; + -fx-border-color: black; -fx-border-width: 0 0 2 0; -fx-prompt-text-fill: rgba(0, 0, 0, 0.5); + -fx-font-family: "Shadows Into Light"; } @@ -39,6 +40,7 @@ #gameTitle { -fx-font-size: 100 px; + -fx-font-family: "Starship Shadow"; } .button {