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