From 268cf283bd3917f9e797736ea1fbf3fac60d842d Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:18:18 +0100 Subject: [PATCH 01/23] chore(launcher): start Casinogameui for development --- .../dmi/dbis/cs108/casono/client/ui/Launcher.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/Launcher.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/Launcher.java index 5096144..12fe6ef 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/Launcher.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/Launcher.java @@ -2,9 +2,20 @@ package ch.unibas.dmi.dbis.cs108.casono.client.ui; import javafx.application.Application; +/** + * Launcher-Klasse für die Casino-Anwendung. + * + * Startet die JavaFX-Anwendung. Während der Entwicklung kann hier direkt + * `Casinogameui` für Tests aufgerufen werden. Im fertigen Spiel erfolgt + * der Aufruf von `Casinogameui` über die `Casinomainui`. + * + * Aufgaben: + * - Dient als Einstiegspunkt für die JVM. + */ public class Launcher { public static void main(String[] args) { - Application.launch(ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui.Casinomainui.class, args); + // Application.launch(ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui.Casinomainui.class, args); + Application.launch(ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui.Casinogameui.class, args); } } \ No newline at end of file From 23faf0f371c694ddc46f2f54f8ed7cdba61372b9 Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:21:16 +0100 Subject: [PATCH 02/23] feat(game-ui): add Casinogameui base class --- .../client/ui/lobbyui/Casinogameui.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogameui.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogameui.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogameui.java new file mode 100644 index 0000000..4ef1dc3 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogameui.java @@ -0,0 +1,37 @@ +package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.stage.Stage; + +import java.io.IOException; + +/** + * Hauptklasse für das Casino-Spiel-UI. + * + * Startet die JavaFX-Anwendung, lädt die grafische Oberfläche aus der FXML-Datei + * und initialisiert die Haupt-Stage für das Spiel. + * + * Aufgaben: + * - Lädt die FXML-Oberfläche "/ui-structure/Casinogameui.fxml". + * - Lädt das Anwendungs-Icon aus "/images/logoinverted.png". + * - Startet die Anwendung im Vollbildmodus. + */ +public class Casinogameui extends Application { + @Override + public void start(Stage stage) throws IOException { + FXMLLoader fxmlLoader = new FXMLLoader(Casinogameui.class.getResource("/ui-structure/Casinogameui.fxml")); + Scene scene = new Scene(fxmlLoader.load(), 1200, 800); + stage.setTitle("Casono (GAME)"); + + stage.getIcons().add(new javafx.scene.image.Image(getClass().getResource("/images/logoinverted.png").toExternalForm())); + stage.setScene(scene); + stage.setFullScreen(true); + stage.show(); + } + + public static void main(String[] args) { + launch(); + } +} From c87e6f14633773eb393c1fa32c94b8e34fcceba5 Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:22:50 +0100 Subject: [PATCH 03/23] feat(game-ui): add Casinogamecontroller --- .../ui/lobbyui/Casinogamecontroller.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogamecontroller.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogamecontroller.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogamecontroller.java new file mode 100644 index 0000000..92feb7b --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/Casinogamecontroller.java @@ -0,0 +1,48 @@ +package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; + +// import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.scene.control.Label; +// 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; +// import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; +// import javafx.stage.Stage; +// import javafx.scene.Scene; +// import javafx.scene.web.WebView; + +/** + * Controller für die Casino-Spielfläche. + * + * Verantwortlich für: + * - die Darstellung des Pokertisches und der Spieleroberfläche, + * - die Verarbeitung von Benutzereingaben, + * - die Schnittstelle zur GameEngine und zum Netzwerkprotokoll. + * + * Hinweise: + * - Die Methode `onTableClick()` dient aktuell als Test-Logik und wird später + * durch echte Spielinteraktionen ersetzt. + * - Die Browserfunktion (`onBrowserButtonClick()`) ist geplant, um ein + * integriertes Hilfetool für Regeln oder Support bereitzustellen. + */ +public class Casinogamecontroller { + + @FXML private Label welcomeText; + @FXML private VBox casinoTable; + + // TODO: Test-Logik: wird durch echte Spielinteraktionen ersetzt, sobald die GameEngine fertig ist + @FXML + public void onTableClick() { + welcomeText.setText("Einsatz akzeptiert!"); + } + + // TODO: Implementierung des Casono-Browsers. + // Dient als integriertes Hilfe-Tool bei technischen Problemen oder Regelfragen + // und wird vervollständigt, sobald die Support-Inhalte bereitstehen. + // @FXML + // private void onBrowserButtonClick() { + // } +} \ No newline at end of file From d47084d6f54d477990b57f857261dbb978b53ac3 Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:24:28 +0100 Subject: [PATCH 04/23] feat(game-ui): add TaskbarController --- .../gameuicomponents/TaskbarController.java | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create 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/lobbyui/gameuicomponents/TaskbarController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/gameuicomponents/TaskbarController.java new file mode 100644 index 0000000..995d4c9 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/gameuicomponents/TaskbarController.java @@ -0,0 +1,84 @@ +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 From 25d145cffdcfd76a1ba48c7195ca569d9c581fb9 Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:25:09 +0100 Subject: [PATCH 05/23] feat(game-ui): add Casinogameui FXML layout --- .../resources/ui-structure/Casinogameui.fxml | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 src/main/resources/ui-structure/Casinogameui.fxml diff --git a/src/main/resources/ui-structure/Casinogameui.fxml b/src/main/resources/ui-structure/Casinogameui.fxml new file mode 100644 index 0000000..9e98e9c --- /dev/null +++ b/src/main/resources/ui-structure/Casinogameui.fxml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From f9b32bc97984f6cfe06de29075d50a607d7bbe60 Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:26:39 +0100 Subject: [PATCH 06/23] feat(game-ui): add Chatbox FXML layout --- .../gameuicomponents/chatbox.fxml | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/resources/ui-structure/gameuicomponents/chatbox.fxml diff --git a/src/main/resources/ui-structure/gameuicomponents/chatbox.fxml b/src/main/resources/ui-structure/gameuicomponents/chatbox.fxml new file mode 100644 index 0000000..d5970de --- /dev/null +++ b/src/main/resources/ui-structure/gameuicomponents/chatbox.fxml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From c0b6a5424a9ec3167a194453fd3109dbe9685a9b Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:28:27 +0100 Subject: [PATCH 07/23] feat(game-ui): add PlayerStatus FXML layout --- .../gameuicomponents/playerstatus.fxml | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/main/resources/ui-structure/gameuicomponents/playerstatus.fxml diff --git a/src/main/resources/ui-structure/gameuicomponents/playerstatus.fxml b/src/main/resources/ui-structure/gameuicomponents/playerstatus.fxml new file mode 100644 index 0000000..fc111eb --- /dev/null +++ b/src/main/resources/ui-structure/gameuicomponents/playerstatus.fxml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 89d4cad3364bef6f60ef81adbcefec6fff64d8e7 Mon Sep 17 00:00:00 2001 From: Julian Kropff Date: Thu, 12 Mar 2026 07:30:35 +0100 Subject: [PATCH 08/23] feat(game-ui): add Tastbar FXML layout --- .../gameuicomponents/taskbar.fxml | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/resources/ui-structure/gameuicomponents/taskbar.fxml diff --git a/src/main/resources/ui-structure/gameuicomponents/taskbar.fxml b/src/main/resources/ui-structure/gameuicomponents/taskbar.fxml new file mode 100644 index 0000000..d08402d --- /dev/null +++ b/src/main/resources/ui-structure/gameuicomponents/taskbar.fxml @@ -0,0 +1,53 @@ + + + + + + + + + + +