Feat/ui switch lobby game #222
+41
-15
@@ -11,16 +11,20 @@ import javafx.scene.layout.HBox;
|
||||
/**
|
||||
* 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 {
|
||||
|
||||
private static final org.apache.logging.log4j.Logger LOGGER =
|
||||
org.apache.logging.log4j.LogManager.getLogger(CasinoBrowserController.class);
|
||||
private static final org.apache.logging.log4j.Logger LOGGER = org.apache.logging.log4j.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;
|
||||
@@ -30,7 +34,8 @@ 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
|
||||
@@ -42,10 +47,13 @@ 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
|
||||
@@ -60,7 +68,8 @@ 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
|
||||
@@ -84,7 +93,8 @@ 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
|
||||
@@ -95,17 +105,31 @@ public class TaskbarController {
|
||||
/**
|
||||
* Wird aufgerufen, wenn der Exit-Button in der Taskleiste gedrückt wird.
|
||||
*
|
||||
* <p>TODO: Logik implementieren, um zur Lobby zurückzukehren, ohne die gesamte Anwendung zu
|
||||
* <p>
|
||||
* 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();
|
||||
javafx.application.Platform.runLater(() -> {
|
||||
// Game-Stage schließen
|
||||
javafx.stage.Stage currentStage = (javafx.stage.Stage) taskbar.getScene().getWindow();
|
||||
currentStage.close();
|
||||
// Lobby-UI starten
|
||||
try {
|
||||
new ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui.Casinomainui().start(new javafx.stage.Stage());
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Fehler beim Starten der Lobby-UI: {}", e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 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() {
|
||||
@@ -128,7 +152,9 @@ 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
|
||||
|
||||
+20
-11
@@ -12,17 +12,27 @@ import javafx.scene.shape.Rectangle;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
/** Controller for the Casono main UI lobby. Handles UI initialization and user actions. */
|
||||
/**
|
||||
* Controller for the Casono main UI lobby. Handles UI initialization and user
|
||||
* actions.
|
||||
*/
|
||||
public class CasinomainuiController {
|
||||
private static final Logger LOGGER = LogManager.getLogger(CasinomainuiController.class);
|
||||
|
||||
@FXML private AnchorPane rootPane;
|
||||
@FXML private Label titleLabel;
|
||||
@FXML private Label subtitleLabel;
|
||||
@FXML private ImageView logoView;
|
||||
@FXML private Rectangle greenBox;
|
||||
@FXML private Button exitbutton;
|
||||
@FXML private VBox casinoTable;
|
||||
@FXML
|
||||
private AnchorPane rootPane;
|
||||
@FXML
|
||||
private Label titleLabel;
|
||||
@FXML
|
||||
private Label subtitleLabel;
|
||||
@FXML
|
||||
private ImageView logoView;
|
||||
@FXML
|
||||
private Rectangle greenBox;
|
||||
@FXML
|
||||
private Button exitbutton;
|
||||
@FXML
|
||||
private VBox casinoTable;
|
||||
|
||||
private LobbyButtonTranslationManager translationManager;
|
||||
private LobbyButtonGridManager gridManager;
|
||||
@@ -39,9 +49,8 @@ public class CasinomainuiController {
|
||||
subtitleLabel.setText("Texas Hold'em Poker");
|
||||
logoView.setImage(new Image(getClass().getResource("/images/logo.png").toExternalForm()));
|
||||
|
||||
translationManager = new LobbyButtonTranslationManager();
|
||||
gridManager =
|
||||
new LobbyButtonGridManager(new javafx.scene.layout.GridPane(), translationManager);
|
||||
translationManager = LobbyButtonTranslationManager.getInstance();
|
||||
gridManager = new LobbyButtonGridManager(new javafx.scene.layout.GridPane(), translationManager);
|
||||
casinoTable.getChildren().clear();
|
||||
casinoTable.getChildren().add(gridManager.getGridPane());
|
||||
gridManager.renderLobbyButtons();
|
||||
|
||||
+18
-4
@@ -13,7 +13,8 @@ import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
/**
|
||||
* Manages the grid for lobby buttons and rendering. Uses LobbyButtonTranslationManager for mapping
|
||||
* Manages the grid for lobby buttons and rendering. Uses
|
||||
* LobbyButtonTranslationManager for mapping
|
||||
* ButtonID to LobbyID.
|
||||
*/
|
||||
public class LobbyButtonGridManager {
|
||||
@@ -46,11 +47,13 @@ public class LobbyButtonGridManager {
|
||||
public LobbyButtonGridManager(
|
||||
GridPane gridPane, LobbyButtonTranslationManager translationManager) {
|
||||
this.gridPane = gridPane;
|
||||
this.translationManager = translationManager;
|
||||
// Singleton immer verwenden
|
||||
this.translationManager = LobbyButtonTranslationManager.getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders all lobby buttons in the grid. Creates a button for each mapping with image and event
|
||||
* Renders all lobby buttons in the grid. Creates a button for each mapping with
|
||||
* image and event
|
||||
* handler.
|
||||
*/
|
||||
public void renderLobbyButtons() {
|
||||
@@ -99,8 +102,19 @@ public class LobbyButtonGridManager {
|
||||
* @param lobbyId The lobbyId to join
|
||||
*/
|
||||
public void joinLobby(int lobbyId) {
|
||||
// TODO: Replace with actual join logic
|
||||
// Game-UI starten und Lobby-UI schließen
|
||||
LOGGER.info("Joining lobby: {}", lobbyId);
|
||||
javafx.application.Platform.runLater(() -> {
|
||||
// Lobby-Stage schließen
|
||||
javafx.stage.Stage currentStage = (javafx.stage.Stage) gridPane.getScene().getWindow();
|
||||
currentStage.close();
|
||||
// Game-UI starten
|
||||
try {
|
||||
new ch.unibas.dmi.dbis.cs108.casono.client.ui.gameui.CasinoGameUI().start(new javafx.stage.Stage());
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("Fehler beim Starten der Game-UI: {}", e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+18
-3
@@ -4,18 +4,33 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Verwaltet das Mapping zwischen Button-IDs und Lobby-IDs rein im Speicher. Keine Dateioperationen,
|
||||
* Verwaltet das Mapping zwischen Button-IDs und Lobby-IDs rein im Speicher.
|
||||
* Keine Dateioperationen,
|
||||
* nur Laufzeitdatenstruktur.
|
||||
*/
|
||||
public class LobbyButtonTranslationManager {
|
||||
|
||||
// Singleton-Instanz
|
||||
private static LobbyButtonTranslationManager instance;
|
||||
|
||||
// Singleton-Zugriff
|
||||
public static LobbyButtonTranslationManager getInstance() {
|
||||
if (instance == null) {
|
||||
instance = new LobbyButtonTranslationManager();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
/** Maximale Anzahl an Buttons/Lobbys */
|
||||
private static final int MAX_BUTTONS = 8;
|
||||
|
||||
/** Zuordnung ButtonID → LobbyID */
|
||||
private final Map<Integer, Integer> buttonIdToLobbyId = new HashMap<>();
|
||||
|
||||
/** Konstruktor: initialisiert die Zuordnung leer. */
|
||||
public LobbyButtonTranslationManager() {
|
||||
/**
|
||||
* Privater Konstruktor für Singleton-Pattern
|
||||
*/
|
||||
private LobbyButtonTranslationManager() {
|
||||
// Zuordnung bleibt leer beim Start
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user