Feat/ui switch lobby game #222

Merged
jona.walpert merged 12 commits from feat/ui-switch-lobby-game into main 2026-04-01 12:34:31 +02:00
3 changed files with 33 additions and 52 deletions
Showing only changes of commit 1d322f5cd8 - Show all commits
@@ -7,17 +7,11 @@ import javafx.scene.layout.VBox;
/** /**
* Controller für die Casino-Spielfläche. * Controller für die Casino-Spielfläche.
* *
* <p> * <p>Verantwortlich für: - die Darstellung des Pokertisches und der Spieleroberfläche, - die
* Verantwortlich für: - die Darstellung des Pokertisches und der * Verarbeitung von Benutzereingaben, - die Schnittstelle zur GameEngine und zum Netzwerkprotokoll.
* Spieleroberfläche, - die
* Verarbeitung von Benutzereingaben, - die Schnittstelle zur GameEngine und zum
* Netzwerkprotokoll.
* *
* <p> * <p>Hinweise: - Die Methode `onTableClick()` dient aktuell nur als Test-Logik. Sie ist ggf. nicht
* Hinweise: - Die Methode `onTableClick()` dient aktuell nur als Test-Logik. * mehr funktionsfähig und wird zukünftig durch die finale Spielinteraktion ersetzt.
* Sie ist ggf. nicht
* mehr funktionsfähig und wird zukünftig durch die finale Spielinteraktion
* ersetzt.
*/ */
public class CasinoGameController { public class CasinoGameController {
@@ -26,20 +20,16 @@ public class CasinoGameController {
// default constructor for FXML // default constructor for FXML
} }
@FXML @FXML private Label welcomeText;
private Label welcomeText; @FXML private VBox casinoTable;
@FXML
private VBox casinoTable;
// TODO: Test-Logik: wird durch echte Spielinteraktionen ersetzt, // TODO: Test-Logik: wird durch echte Spielinteraktionen ersetzt,
// sobald die GameEngine fertig ist // sobald die GameEngine fertig ist
/** /**
* Temporäre Test-Methode, die bei Klick auf den Tisch eine Platzhalteraktion * Temporäre Test-Methode, die bei Klick auf den Tisch eine Platzhalteraktion ausführt.
* ausführt.
* *
* <p> * <p>Wird in der finalen Implementierung durch die Spiel-Logik ersetzt.
* Wird in der finalen Implementierung durch die Spiel-Logik ersetzt.
*/ */
@FXML @FXML
public void onTableClick() { public void onTableClick() {
@@ -27,6 +27,8 @@ import javafx.scene.shape.Rectangle;
import javafx.scene.web.WebEngine; import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView; import javafx.scene.web.WebView;
import javafx.stage.Stage; import javafx.stage.Stage;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/** /**
* Experimenteller integrierter Browser für Casono. * Experimenteller integrierter Browser für Casono.
@@ -54,13 +56,13 @@ public class CasinoBrowserController {
public CasinoBrowserController() { public CasinoBrowserController() {
// Intentionally left blank; controller initialization is FXML-driven. // Intentionally left blank; controller initialization is FXML-driven.
} }
private static final Set<String> TRUSTED_DOMAINS = new HashSet<>(); private static final Set<String> TRUSTED_DOMAINS = new HashSet<>();
private static final CookieManager COOKIE_MANAGER = private static final CookieManager COOKIE_MANAGER =
new CookieManager(null, CookiePolicy.ACCEPT_ORIGINAL_SERVER); new CookieManager(null, CookiePolicy.ACCEPT_ORIGINAL_SERVER);
private static final org.apache.logging.log4j.Logger LOGGER = private static final Logger LOGGER = LogManager.getLogger(CasinoBrowserController.class);
org.apache.logging.log4j.LogManager.getLogger(CasinoBrowserController.class);
private static final int LOGO_HEIGHT = 40; private static final int LOGO_HEIGHT = 40;
private static final int CORNER_RADIUS = 40; private static final int CORNER_RADIUS = 40;
@@ -358,8 +360,9 @@ public class CasinoBrowserController {
fwdBtn.getStyleClass().add("gray-button"); fwdBtn.getStyleClass().add("gray-button");
fwdBtn.setOnAction( fwdBtn.setOnAction(
e -> { e -> {
if (engine.getHistory().getCurrentIndex() int currentIndex = engine.getHistory().getCurrentIndex();
< engine.getHistory().getEntries().size() - 1) { int lastIndex = engine.getHistory().getEntries().size() - 1;
if (currentIndex < lastIndex) {
engine.getHistory().go(1); engine.getHistory().go(1);
} }
}); });
@@ -516,10 +519,11 @@ public class CasinoBrowserController {
alert.setTitle("Unbekannte Website"); alert.setTitle("Unbekannte Website");
alert.setHeaderText("Diese Website ist nicht bekannt"); alert.setHeaderText("Diese Website ist nicht bekannt");
alert.setContentText( String content =
host host
+ "\n\nDiese Seite ist nicht vom " + "\n\nDiese Seite ist nicht vom Casono Browser verifiziert.\n"
+ "Casono Browser verifiziert.\nMöchten Sie sie trotzdem öffnen?"); + "Möchten Sie sie trotzdem öffnen?";
alert.setContentText(content);
var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH); var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH);
Image logo = new Image(stream); Image logo = new Image(stream);
@@ -13,9 +13,7 @@ import org.apache.logging.log4j.Logger;
/** /**
* Controller für die interaktive Taskleiste innerhalb der Poker-UI. * Controller für die interaktive Taskleiste innerhalb der Poker-UI.
* *
* <p> * <p>Verantwortlich für: - Drag-and-Drop-Verschieben der Taskleiste, - Eingabe und Verwaltung von
* Verantwortlich für: - Drag-and-Drop-Verschieben der Taskleiste, - Eingabe und
* Verwaltung von
* Spieleinsätzen, - Steuerung allgemeiner Menüfunktionen wie Exit. * Spieleinsätzen, - Steuerung allgemeiner Menüfunktionen wie Exit.
*/ */
public class TaskbarController { public class TaskbarController {
@@ -27,10 +25,8 @@ public class TaskbarController {
private static final Logger LOGGER = LogManager.getLogger(CasinoBrowserController.class); private static final Logger LOGGER = LogManager.getLogger(CasinoBrowserController.class);
@FXML @FXML private HBox taskbar;
private HBox taskbar; @FXML private TextField taskbarInput;
@FXML
private TextField taskbarInput;
private double xOffset = 0; private double xOffset = 0;
private double yOffset = 0; private double yOffset = 0;
@@ -40,8 +36,7 @@ public class TaskbarController {
private static final int CREDIT_STEP = 5; private static final int CREDIT_STEP = 5;
/** /**
* Wird aufgerufen, wenn die Taskleiste mit der Maus gedrückt wird. Speichert * Wird aufgerufen, wenn die Taskleiste mit der Maus gedrückt wird. Speichert die relative
* die relative
* Position, um später korrekt zu verschieben. * Position, um später korrekt zu verschieben.
* *
* @param event Das Mausereignis * @param event Das Mausereignis
@@ -53,13 +48,10 @@ public class TaskbarController {
} }
/** /**
* Wird aufgerufen, während die Taskleiste mit der Maus gezogen wird. * Wird aufgerufen, während die Taskleiste mit der Maus gezogen wird. Aktualisiert die Position
* Aktualisiert die Position
* und skaliert die Taskleiste leicht zur visuellen Rückmeldung. * und skaliert die Taskleiste leicht zur visuellen Rückmeldung.
* *
* <p> * <p>TODO: Es muss noch gefixt werden, dass die Taskleiste nicht aus dem Fenster verschwinden
* TODO: Es muss noch gefixt werden, dass die Taskleiste nicht aus dem Fenster
* verschwinden
* kann. * kann.
* *
* @param event Das Mausereignis * @param event Das Mausereignis
@@ -74,8 +66,7 @@ public class TaskbarController {
} }
/** /**
* Wird aufgerufen, wenn die Maus über der Taskleiste losgelassen wird. Setzt * Wird aufgerufen, wenn die Maus über der Taskleiste losgelassen wird. Setzt die Skalierung der
* die Skalierung der
* Taskleiste wieder auf Normalgröße. * Taskleiste wieder auf Normalgröße.
* *
* @param event Das Mausereignis * @param event Das Mausereignis
@@ -99,8 +90,7 @@ public class TaskbarController {
} }
/** /**
* Wird aufgerufen, wenn der Submit-Button in der Taskleiste gedrückt wird. Löst * Wird aufgerufen, wenn der Submit-Button in der Taskleiste gedrückt wird. Löst die
* die
* Verarbeitung des Einsatzes aus. * Verarbeitung des Einsatzes aus.
*/ */
@FXML @FXML
@@ -112,8 +102,9 @@ public class TaskbarController {
private void onExitButtonClick() { private void onExitButtonClick() {
javafx.application.Platform.runLater( javafx.application.Platform.runLater(
() -> { () -> {
// Game-Stage schließen // Close game stage
javafx.stage.Stage currentStage = (javafx.stage.Stage) taskbar.getScene().getWindow(); javafx.stage.Stage currentStage =
(javafx.stage.Stage) taskbar.getScene().getWindow();
currentStage.close(); currentStage.close();
// Lobby-UI starten // Lobby-UI starten
try { try {
@@ -125,10 +116,8 @@ public class TaskbarController {
} }
/** /**
* Verarbeitet den im Textfeld eingegebenen Einsatz. Es werden ausschließlich * Verarbeitet den im Textfeld eingegebenen Einsatz. Es werden ausschließlich ganzzahlige Werte
* ganzzahlige Werte * im Bereich von 5 bis 100.000 Credits akzeptiert, die einem Vielfachen von 5 entsprechen
* 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. * (5er-Schritte). Der Einsatz wird aktuell nur auf der Konsole ausgegeben.
*/ */
private void processBet() { private void processBet() {
@@ -151,9 +140,7 @@ public class TaskbarController {
/** /**
* Öffnet den integrierten Casono Webbrowser. * Öffnet den integrierten Casono Webbrowser.
* *
* <p> * <p>TODO: Ersetze die Start-URL durch die offizielle Projekt-Website (z.B. Tipps & Tricks
* TODO: Ersetze die Start-URL durch die offizielle Projekt-Website (z.B. Tipps
* & Tricks
* Seite), sobald die Inhalte für Strategien und Support bereitstehen. * Seite), sobald die Inhalte für Strategien und Support bereitstehen.
*/ */
@FXML @FXML