From 18d8b68fc8843703c90b9d39bef25d4d532b72ea Mon Sep 17 00:00:00 2001 From: jk Date: Sat, 14 Mar 2026 11:28:02 +0100 Subject: [PATCH] fix: update and rename taskbar controller logic --- .../gameuicomponents/TaskbarController.java | 133 ++++++++++++++++++ .../gameuicomponents/TaskbarController.java | 84 ----------- 2 files changed, 133 insertions(+), 84 deletions(-) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java delete mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/gameuicomponents/TaskbarController.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java new file mode 100644 index 0000000..cb25954 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java @@ -0,0 +1,133 @@ +package ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.gameuicomponents; + +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.scene.control.TextField; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; +import javafx.scene.input.MouseEvent; +import javafx.scene.layout.HBox; + +/** + * Controller für die interaktive Taskleiste innerhalb der Poker-UI. + * + * Verantwortlich für: + * - Drag-and-Drop-Verschieben der Taskleiste, + * - Eingabe und Verwaltung von Spieleinsätzen, + * - Steuerung allgemeiner Menüfunktionen wie Exit. + */ +public class TaskbarController { + + @FXML private HBox taskbar; + @FXML private TextField taskbarInput; + + private double xOffset = 0; + private double yOffset = 0; + + /** + * Wird aufgerufen, wenn die Taskleiste mit der Maus gedrückt wird. + * Speichert die relative Position, um später korrekt zu verschieben. + * + * @param event Das Mausereignis + */ + @FXML + private void onTaskbarPressed(MouseEvent event) { + xOffset = event.getSceneX() - taskbar.getLayoutX(); + yOffset = event.getSceneY() - taskbar.getLayoutY(); + } + + /** + * Wird aufgerufen, während die Taskleiste mit der Maus gezogen wird. + * Aktualisiert die Position und skaliert die Taskleiste leicht zur visuellen Rückmeldung. + * + * TODO: Es muss noch gefixt werden, dass die Taskleiste nicht aus dem Fenster verschwinden kann. + * + * @param event Das Mausereignis + */ + @FXML + private void onTaskbarDragged(MouseEvent event) { + taskbar.setLayoutX(event.getSceneX() - xOffset); + taskbar.setLayoutY(event.getSceneY() - yOffset); + + taskbar.setScaleX(0.9); + taskbar.setScaleY(0.9); + } + + /** + * Wird aufgerufen, wenn die Maus über der Taskleiste losgelassen wird. + * Setzt die Skalierung der Taskleiste wieder auf Normalgröße. + * + * @param event Das Mausereignis + */ + @FXML + private void onTaskbarReleased(MouseEvent event) { + taskbar.setScaleX(1.0); + taskbar.setScaleY(1.0); + } + + /** + * Wird aufgerufen, wenn im Textfeld die Enter-Taste gedrückt wird. + * + * @param event Das Tastaturereignis + */ + @FXML + private void onInputSubmitted(KeyEvent event) { + if (event.getCode() == KeyCode.ENTER) { + processBet(); + } + } + + /** + * Wird aufgerufen, wenn der Submit-Button in der Taskleiste gedrückt wird. + * Löst die Verarbeitung des Einsatzes aus. + */ + @FXML + private void onInputSubmittedAction() { + processBet(); + } + + /** + * Wird aufgerufen, wenn der Exit-Button in der Taskleiste gedrückt wird. + * + * TODO: Logik implementieren, um zur Lobby zurückzukehren, + * ohne die gesamte Anwendung zu schließen (kein System.exit/Platform.exit). + */ + @FXML + private void onExitButtonClick() { + Platform.exit(); + } + + /** + * Verarbeitet den im Textfeld eingegebenen Einsatz. + * Es werden ausschließlich ganzzahlige Werte im Bereich von 5 bis 100.000 + * Credits akzeptiert, die einem Vielfachen von 5 entsprechen (5er-Schritte). + * Der Einsatz wird aktuell nur auf der Konsole ausgegeben. + */ + private void processBet() { + String input = taskbarInput.getText(); + try { + int credits = Integer.parseInt(input.trim()); + + if (credits >= 5 && credits <= 100000 && credits % 5 == 0) { + // TODO: Credits müssen an die GameEngine gesendet werden + System.out.println("Einsatz gesetzt: " + credits + " Casono Credits"); + taskbarInput.clear(); + } else { + System.out.println("Fehler: Nur 5er-Schritte (5, 10, ... 100.000) erlaubt!"); + } + } catch (NumberFormatException e) { + System.out.println("Fehler: Bitte nur eine Zahl eingeben!"); + } + } + + /** + * Öffnet den integrierten Casono Webbrowser. + * + * TODO: Ersetze die Start-URL durch die offizielle Projekt-Website (z.B. Tipps & Tricks Seite), + * sobald die Inhalte für Strategien und Support bereitstehen. + */ + @FXML + private void onBrowserButtonClick() { + CasinoBrowserController.open("wikipedia.org"); + } +} \ No newline at end of file diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/gameuicomponents/TaskbarController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/gameuicomponents/TaskbarController.java deleted file mode 100644 index 995d4c9..0000000 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/gameuicomponents/TaskbarController.java +++ /dev/null @@ -1,84 +0,0 @@ -package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui.gameuicomponents; - -import javafx.application.Platform; -import javafx.fxml.FXML; -import javafx.scene.control.TextField; -import javafx.scene.input.KeyCode; -import javafx.scene.input.KeyEvent; -import javafx.scene.input.MouseEvent; -import javafx.scene.layout.HBox; - -/** - * Controller für die interaktive Taskleiste innerhalb der Poker-UI. - * - * Verantwortlich für: - * - Drag-and-Drop-Verschieben der Taskleiste, - * - Eingabe und Verwaltung von Spieleinsätzen, - * - Steuerung allgemeiner Menüfunktionen wie Exit. - * - * Dient als Schnittstelle zwischen Benutzerinteraktionen und der Spiellogik. - */ -public class TaskbarController { - - @FXML private HBox taskbar; - @FXML private TextField taskbarInput; - - private double xOffset = 0; - private double yOffset = 0; - - // Logik für das Verschieben der Taskleiste: Maus gedrückt - @FXML - private void onTaskbarPressed(MouseEvent event) { - xOffset = event.getSceneX() - taskbar.getLayoutX(); - yOffset = event.getSceneY() - taskbar.getLayoutY(); - } - - // Logik für das Verschieben der Taskleiste: Maus ziehen - @FXML - private void onTaskbarDragged(MouseEvent event) { - taskbar.setLayoutX(event.getSceneX() - xOffset); - taskbar.setLayoutY(event.getSceneY() - yOffset); - - taskbar.setScaleX(0.9); - taskbar.setScaleY(0.9); - } - - // Logik für das Verschieben der Taskleiste: Maus loslassen - @FXML - private void onTaskbarReleased(MouseEvent event) { - taskbar.setScaleX(1.0); - taskbar.setScaleY(1.0); - } - - // Enter-Taste im Textfeld (in der Taskleiste) - @FXML - private void onInputSubmitted(KeyEvent event) { - if (event.getCode() == KeyCode.ENTER) { - processBet(); - } - } - - // Submit-Button (in der Taskleiste) - @FXML - private void onInputSubmittedAction() { - processBet(); - } - - // Exit-Button (in der Taskleiste) - // TODO: Logik implementieren, um zur Lobby zurückzukehren, - // ohne die gesamte Anwendung zu schließen (kein System.exit/Platform.exit). - @FXML - private void onExitButtonClick() { - Platform.exit(); - } - - // Logik zum Verarbeiten des Einsatzes - private void processBet() { - String input = taskbarInput.getText(); - if (input != null && !input.isEmpty()) { - // TODO: System.out durch echte Kommunikation mit der GameEngine ersetzen, sobald die Logik steht - System.out.println("Einsatz gesetzt: " + input + " Credits"); - taskbarInput.clear(); - } - } -} \ No newline at end of file