Style: translate comments to english

This commit is contained in:
Julian Kropff
2026-04-01 13:37:51 +02:00
parent 01a72a6719
commit c600b6422d
4 changed files with 129 additions and 130 deletions
@@ -5,17 +5,17 @@ import javafx.scene.control.Label;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
/** /**
* Controller für die Casino-Spielfläche. * Controller for the casino gaming area.
* *
* <p>Verantwortlich für: - die Darstellung des Pokertisches und der Spieleroberfläche, - die * <p>Responsible for: - the display of the poker table and the player interface, - the
* Verarbeitung von Benutzereingaben, - die Schnittstelle zur GameEngine und zum Netzwerkprotokoll. * processing of user input, - the interface to the game engine and the network protocol.
* *
* <p>Hinweise: - Die Methode `onTableClick()` dient aktuell nur als Test-Logik. Sie ist ggf. nicht * <p>Notes: - The `onTableClick()` method currently serves only as test logic.
* mehr funktionsfähig und wird zukünftig durch die finale Spielinteraktion ersetzt. * It may no longer be functional and will be replaced by the final game interaction in the future.
*/ */
public class CasinoGameController { public class CasinoGameController {
/** Standardkonstruktor. Wird von FXML verwendet. */ /** Standard constructor. Used by FXML. */
public CasinoGameController() { public CasinoGameController() {
// default constructor for FXML // default constructor for FXML
} }
@@ -23,13 +23,13 @@ public class CasinoGameController {
@FXML private Label welcomeText; @FXML private Label welcomeText;
@FXML private VBox casinoTable; @FXML private VBox casinoTable;
// TODO: Test-Logik: wird durch echte Spielinteraktionen ersetzt, // TODO: Test logic: will be replaced by real game interactions,
// sobald die GameEngine fertig ist // once the game engine is finished
/** /**
* Temporäre Test-Methode, die bei Klick auf den Tisch eine Platzhalteraktion ausführt. * Temporary test method that performs a placeholder action when the table is clicked.
* *
* <p>Wird in der finalen Implementierung durch die Spiel-Logik ersetzt. * <p>In the final implementation, this will be replaced by the game logic.
*/ */
@FXML @FXML
public void onTableClick() { public void onTableClick() {
@@ -7,17 +7,17 @@ import javafx.scene.Scene;
import javafx.stage.Stage; import javafx.stage.Stage;
/** /**
* Hauptklasse für das Casino-Spiel-UI. * Main class for the Casono Game UI.
* *
* <p>Startet die JavaFX-Anwendung, lädt die grafische Oberfläche aus der FXML-Datei und * <p>Starts the JavaFX application, loads the graphical user interface from the FXML file, and
* initialisiert die Haupt-Stage für das Spiel. * initializes the main stage for the game.
* *
* <p>Aufgaben: - Lädt die FXML-Oberfläche "/ui-structure/Casinogameui.fxml". - Lädt das * <p>Tasks: - Loads the FXML interface "/ui-structure/Casinogameui.fxml". - Loads the
* Anwendungs-Icon aus "/images/logoinverted.png". - Startet die Anwendung im Vollbildmodus. * application icon from "/images/logoinverted.png". - Starts the application in full-screen mode.
*/ */
public class CasinoGameUI extends Application { public class CasinoGameUI extends Application {
/** Standardkonstruktor. */ /** default constructor */
public CasinoGameUI() { public CasinoGameUI() {
// default no-arg constructor // default no-arg constructor
} }
@@ -26,10 +26,10 @@ public class CasinoGameUI extends Application {
private static final int DEFAULT_HEIGHT = 800; private static final int DEFAULT_HEIGHT = 800;
/** /**
* Startet die Haupt-Stage der Anwendung. * Starts the main stage of the application.
* *
* @param stage Die vom System bereitgestellte Haupt-Stage. * @param stage The main stage provided by the system.
* @throws IOException Wenn die FXML-Datei oder Ressourcen nicht geladen werden können. * @throws IOException If the FXML file or resources cannot be loaded.
*/ */
@Override @Override
public void start(Stage stage) throws IOException { public void start(Stage stage) throws IOException {
@@ -46,9 +46,9 @@ public class CasinoGameUI extends Application {
} }
/** /**
* Startpunkt der Anwendung. * Starting point of the application.
* *
* @param args Befehlszeilenargumente. * @param args Command line arguments.
*/ */
public static void main(String[] args) { public static void main(String[] args) {
launch(); launch();
@@ -31,28 +31,28 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
/** /**
* Experimenteller integrierter Browser für Casono. * Experimental embedded browser for Casono.
* *
* <p>Diese Klasse implementiert einen einfachen eingebetteten Webbrowser auf Basis von {@link * <p>This class implements a simple embedded web browser based on {@link
* javafx.scene.web.WebView}. Der Browser dient primär als Hilfswerkzeug innerhalb des Spiels, um * javafx.scene.web.WebView}. The browser primarily serves as a utility within the game to
* externe Inhalte wie Webseiten oder Videos anzuzeigen. * display external content such as web pages or videos.
* *
* <p>Status Der Browser befindet sich derzeit in einer experimentellen Phase. Einige * <p>Status The browser is currently in an experimental phase. Some
* Sicherheitsmechanismen basieren auf experimentellen KI-gestützten Empfehlungen und können sich in * security mechanisms are based on experimental AI-driven recommendations and may
* zukünftigen Versionen noch ändern. * change in future versions.
* *
* <p>Zweck Der Browser wird aktuell experimentell genutzt, um: Pokerregeln direkt im Spiel zu * <p>Purpose The browser is currently being used experimentally to: Explain poker rules directly within the game
* erklären Hilfeseiten oder Dokumentationen anzuzeigen Videos (z.B. Tutorials oder Erklärungen) * Display help pages or documentation Play videos (e.g., tutorials or explanations)
* über Plattformen wie YouTube abzuspielen * via platforms such as YouTube
* *
* <p>Sicherheitsmechanismen Da externe Webseiten geladen werden können, wurden einige grundlegende * <p>Security Mechanisms Since external websites can be loaded, some basic
* Schutzmaßnahmen integriert: - HTTPS-Zwang für Webseiten - Whitelist für bekannte Domains - * protective measures have been integrated: - Mandatory HTTPS for websites - Whitelist for known domains -
* Warnung bei unbekannten Webseiten - JavaScript standardmäßig deaktiviert (man kann es jedoch für * Warning for unknown websites - JavaScript disabled by default (but can be enabled for
* Google etc. einschalten) - Popup-Blocker - Automatische Cookie-Löschung beim Schließen * Google, etc.) - Pop-up blocker - Automatic cookie deletion upon closing
*/ */
public class CasinoBrowserController { public class CasinoBrowserController {
/** Standardkonstruktor. Initialisiert den CasinoBrowserController. */ /** Default constructor. Initializes the CasinoBrowserController. */
public CasinoBrowserController() { public CasinoBrowserController() {
// Intentionally left blank; controller initialization is FXML-driven. // Intentionally left blank; controller initialization is FXML-driven.
} }
@@ -101,7 +101,7 @@ public class CasinoBrowserController {
private static boolean javascriptEnabled = false; private static boolean javascriptEnabled = false;
/** Löscht alle gespeicherten Cookies der aktuellen Browser-Sitzung. */ /** Deletes all cookies stored during the current browser session. */
private static void clearCookies() { private static void clearCookies() {
try { try {
COOKIE_MANAGER.getCookieStore().removeAll(); COOKIE_MANAGER.getCookieStore().removeAll();
@@ -110,12 +110,12 @@ public class CasinoBrowserController {
} }
/** /**
* Öffnet ein neues Browserfenster und lädt eine angegebene Webseite. * Opens a new browser window and loads a specified webpage.
* *
* <p>Falls die Webseite nicht zur Liste vertrauenswürdiger Domains gehört, wird der Benutzer * <p>If the webpage is not on the list of trusted domains, the user
* gefragt, ob die Seite dennoch geladen werden soll. * will be asked whether the page should be loaded anyway.
* *
* @param url die Startadresse der Webseite, die geladen werden soll * @param url the URL of the webpage to be loaded
*/ */
public static void open(String url) { public static void open(String url) {
Platform.runLater( Platform.runLater(
@@ -182,10 +182,10 @@ public class CasinoBrowserController {
} }
/** /**
* WebView Container * WebView container
* *
* @param webView WebView Inhalt * @param webView WebView content
* @return StackPane Container * @return StackPane container
*/ */
public static StackPane createWebContainer(WebView webView) { public static StackPane createWebContainer(WebView webView) {
StackPane webContainer = new StackPane(webView); StackPane webContainer = new StackPane(webView);
@@ -198,7 +198,7 @@ public class CasinoBrowserController {
/** /**
* Popup Blocker * Popup Blocker
* *
* @param engine WebEngine nutzen * @param engine Use WebEngine
*/ */
public static void configurePopupBlocker(WebEngine engine) { public static void configurePopupBlocker(WebEngine engine) {
engine.setCreatePopupHandler( engine.setCreatePopupHandler(
@@ -212,8 +212,7 @@ public class CasinoBrowserController {
var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH); var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH);
Image logo = new Image(stream); Image logo = new Image(stream);
// Variable 'streamM' abgekürzt, um das 100-Zeichen-Limit (LineLength) // Variable streamM abbreviated to comply with the 100-character limit (LineLength)
// einzuhalten
var streamM = var streamM =
CasinoBrowserController.class.getResourceAsStream(LOGO_PATH_MAIN); CasinoBrowserController.class.getResourceAsStream(LOGO_PATH_MAIN);
Image logomain = new Image(streamM); Image logomain = new Image(streamM);
@@ -232,7 +231,7 @@ public class CasinoBrowserController {
alert.setGraphic(logoView); alert.setGraphic(logoView);
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Logo konnte nicht geladen werden"); LOGGER.error("The logo could not be loaded");
} }
alert.showAndWait(); alert.showAndWait();
@@ -241,9 +240,9 @@ public class CasinoBrowserController {
} }
/** /**
* Logos laden * Load logos
* *
* @param stage Fenster Stage * @param stage Window Stage
* @return ImageView Logo * @return ImageView Logo
*/ */
private static ImageView loadLogos(Stage stage) { private static ImageView loadLogos(Stage stage) {
@@ -253,8 +252,7 @@ public class CasinoBrowserController {
var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH); var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH);
Image logo = new Image(stream); Image logo = new Image(stream);
// Variable 'streamM' abgekürzt, um das 100-Zeichen-Limit (LineLength) // Variable streamM abbreviated to comply with the 100-character limit (LineLength)
// einzuhalten
var streamM = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH_MAIN); var streamM = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH_MAIN);
Image logomain = new Image(streamM); Image logomain = new Image(streamM);
@@ -268,17 +266,17 @@ public class CasinoBrowserController {
browserLogo.setPreserveRatio(true); browserLogo.setPreserveRatio(true);
} }
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Logo konnte nicht geladen werden"); LOGGER.error("The logo could not be loaded");
} }
return browserLogo; return browserLogo;
} }
/** /**
* URL Feld * URL field
* *
* @param url Start URL * @param url Start URL
* @return TextField Eingabe * @return TextField input
*/ */
public static TextField createUrlField(String url) { public static TextField createUrlField(String url) {
TextField urlField = new TextField(url); TextField urlField = new TextField(url);
@@ -289,12 +287,12 @@ public class CasinoBrowserController {
} }
/** /**
* Sicherheits Label * Security Label
* *
* @return Label Anzeige * @return Label display
*/ */
public static Label createSecurityLabel() { public static Label createSecurityLabel() {
Label securityLabel = new Label("SICHER"); Label securityLabel = new Label("SAFE");
securityLabel.getStyleClass().add("security-label"); securityLabel.getStyleClass().add("security-label");
return securityLabel; return securityLabel;
@@ -303,8 +301,8 @@ public class CasinoBrowserController {
/** /**
* JS Toggle * JS Toggle
* *
* @param engine WebEngine nutzen * @param engine Use WebEngine
* @return Button Umschalten * @return Toggle button
*/ */
public static Button createJsToggle(WebEngine engine) { public static Button createJsToggle(WebEngine engine) {
Button jsToggle = new Button("JS EINSCHALTEN"); Button jsToggle = new Button("JS EINSCHALTEN");
@@ -316,7 +314,7 @@ public class CasinoBrowserController {
engine.setJavaScriptEnabled(javascriptEnabled); engine.setJavaScriptEnabled(javascriptEnabled);
if (javascriptEnabled) { if (javascriptEnabled) {
jsToggle.setText("JS AUSSCHALTEN"); jsToggle.setText("JS TURN OFF");
jsToggle.getStyleClass().removeAll("red-button"); jsToggle.getStyleClass().removeAll("red-button");
jsToggle.getStyleClass().add("yellow-button"); jsToggle.getStyleClass().add("yellow-button");
@@ -331,10 +329,10 @@ public class CasinoBrowserController {
} }
/** /**
* Zurück Button * Back Button
* *
* @param engine WebEngine nutzen * @param engine Use WebEngine
* @return Button Zurück * @return Back button
*/ */
public static Button createBackButton(WebEngine engine) { public static Button createBackButton(WebEngine engine) {
Button backBtn = new Button("<"); Button backBtn = new Button("<");
@@ -350,10 +348,10 @@ public class CasinoBrowserController {
} }
/** /**
* Vorwärts Button * Forward Button
* *
* @param engine WebEngine nutzen * @param engine Use WebEngine
* @return Button Vorwärts * @return Forward button
*/ */
public static Button createForwardButton(WebEngine engine) { public static Button createForwardButton(WebEngine engine) {
Button fwdBtn = new Button(">"); Button fwdBtn = new Button(">");
@@ -373,8 +371,8 @@ public class CasinoBrowserController {
/** /**
* Reload Button * Reload Button
* *
* @param engine WebEngine nutzen * @param engine Use WebEngine
* @return Button Reload * @return Reload button
*/ */
public static Button createReloadButton(WebEngine engine) { public static Button createReloadButton(WebEngine engine) {
Button reloadBtn = new Button(""); Button reloadBtn = new Button("");
@@ -386,9 +384,9 @@ public class CasinoBrowserController {
/** /**
* Close Button * Close Button
* *
* @param stage Fenster Stage * @param stage Window stage
* @param webView WebView Inhalt * @param webView WebView content
* @return Button Schließen * @return Close button
*/ */
public static Button createCloseButton(Stage stage, WebView webView) { public static Button createCloseButton(Stage stage, WebView webView) {
Button closeBtn = new Button("X"); Button closeBtn = new Button("X");
@@ -406,9 +404,9 @@ public class CasinoBrowserController {
/** /**
* URL Events * URL Events
* *
* @param engine WebEngine nutzen * @param engine Use WebEngine
* @param urlField URL Textfeld * @param urlField URL text field
* @param securityLabel Sicherheits Label * @param securityLabel Security label
*/ */
public static void configureUrlEvents( public static void configureUrlEvents(
WebEngine engine, TextField urlField, Label securityLabel) { WebEngine engine, TextField urlField, Label securityLabel) {
@@ -417,11 +415,11 @@ public class CasinoBrowserController {
} }
/** /**
* Scene erstellen * Create a scene
* *
* @param taskbar Taskbar HBox * @param taskbar Taskbar HBox
* @param webContainer Web Container * @param webContainer Web container
* @return Scene Fenster * @return Scene window
*/ */
public static Scene createScene(HBox taskbar, StackPane webContainer) { public static Scene createScene(HBox taskbar, StackPane webContainer) {
VBox root = new VBox(VBOX_SPACING, taskbar, webContainer); VBox root = new VBox(VBOX_SPACING, taskbar, webContainer);
@@ -442,8 +440,8 @@ public class CasinoBrowserController {
/** /**
* Key Events * Key Events
* *
* @param scene Scene Fenster * @param scene Scene window
* @param engine WebEngine nutzen * @param engine Use WebEngine
*/ */
public static void configureKeyEvents(Scene scene, WebEngine engine) { public static void configureKeyEvents(Scene scene, WebEngine engine) {
scene.setOnKeyPressed( scene.setOnKeyPressed(
@@ -455,18 +453,18 @@ public class CasinoBrowserController {
} }
/** /**
* Lädt eine URL in den Browser, nachdem grundlegende Sicherheitsprüfungen durchgeführt wurden. * Loads a URL in the browser after performing basic security checks.
* *
* <p>Vor dem Laden einer Seite werden folgende Prüfungen durchgeführt: - Überprüfung des * <p>Before loading a page, the following checks are performed: - Verification of the
* Protokolls (nur HTTPS erlaubt) - Überprüfung der Domain gegen eine Whitelist - Schutz vor * protocol (only HTTPS allowed) - Verification of the domain against a whitelist - Protection against
* Domain-Spoofing (Domain-Vortäuschung) * domain spoofing
* *
* <p>Falls eine Domain nicht als vertrauenswürdig eingestuft wird, muss der Benutzer * <p>If a domain is not classified as trustworthy, the user must
* bestätigen, dass die Seite dennoch geöffnet werden darf. * confirm that the page may still be opened.
* *
* @param engine der WebEngine-Renderer des Browsers * @param engine the browser's WebEngine renderer
* @param url die zu ladende Webadresse * @param url the web address to be loaded
* @param securityLabel Label zur Anzeige des aktuellen Sicherheitsstatus * @param securityLabel label for displaying the current security status
*/ */
private static void loadUrlSafely(WebEngine engine, String url, Label securityLabel) { private static void loadUrlSafely(WebEngine engine, String url, Label securityLabel) {
try { try {
@@ -476,9 +474,9 @@ public class CasinoBrowserController {
URI uri = new URI(url); URI uri = new URI(url);
// HTTPS Pflicht // HTTPS required
if (!"https".equalsIgnoreCase(uri.getScheme())) { if (!"https".equalsIgnoreCase(uri.getScheme())) {
securityLabel.setText("BLOCKIERT"); securityLabel.setText("BLOCKED");
return; return;
} }
@@ -488,19 +486,19 @@ public class CasinoBrowserController {
return; return;
} }
// Sicherer Domain Check // Secure Domain Check
boolean trusted = boolean trusted =
TRUSTED_DOMAINS.stream() TRUSTED_DOMAINS.stream()
.anyMatch(domain -> host.equals(domain) || host.endsWith("." + domain)); .anyMatch(domain -> host.equals(domain) || host.endsWith("." + domain));
if (!trusted) { if (!trusted) {
if (!showUnknownWebsiteAlert(host)) { if (!showUnknownWebsiteAlert(host)) {
securityLabel.setText("BLOCKIERT"); securityLabel.setText("BLOCKED");
return; return;
} }
securityLabel.setText("UNBEKANNT"); securityLabel.setText("UNBEKANNT");
} else { } else {
securityLabel.setText("SICHER"); securityLabel.setText("SAFE");
} }
engine.load(uri.toString()); engine.load(uri.toString());
} catch (Exception e) { } catch (Exception e) {
@@ -509,20 +507,20 @@ public class CasinoBrowserController {
} }
/** /**
* Zeigt Warnung an. * Displays a warning.
* *
* @param host Website Host * @param host Website host
* @return OK gedrückt * @return OK pressed
*/ */
private static boolean showUnknownWebsiteAlert(String host) { private static boolean showUnknownWebsiteAlert(String host) {
Alert alert = new Alert(Alert.AlertType.CONFIRMATION); Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
alert.setTitle("Unbekannte Website"); alert.setTitle("Unknown website");
alert.setHeaderText("Diese Website ist nicht bekannt"); alert.setHeaderText("This website is unknown");
String content = String content =
host host
+ "\n\nDiese Seite ist nicht vom Casono Browser verifiziert.\n" + "\n\nThis site has not been verified by the Casono browser.\n"
+ "Möchten Sie sie trotzdem öffnen?"; + "Do you still want to open it?";
alert.setContentText(content); alert.setContentText(content);
var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH); var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH);
@@ -11,14 +11,15 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
/** /**
* Controller für die interaktive Taskleiste innerhalb der Poker-UI. * Controller for the interactive taskbar within the poker UI.
* *
* <p>Verantwortlich für: - Drag-and-Drop-Verschieben der Taskleiste, - Eingabe und Verwaltung von * Responsible for: - Drag-and-drop movement of the taskbar,
* Spieleinsätzen, - Steuerung allgemeiner Menüfunktionen wie Exit. * - Input and management of game stakes, - Control of general
* menu functions such as Exit.
*/ */
public class TaskbarController { public class TaskbarController {
/** Standardkonstruktor. Wird von FXML verwendet. */ /** Standard constructor. Used by FXML. */
public TaskbarController() { public TaskbarController() {
// default constructor for FXML // default constructor for FXML
} }
@@ -36,10 +37,10 @@ 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 die relative * Called when the taskbar is clicked with the mouse. Saves the relative
* Position, um später korrekt zu verschieben. * position for later, correct repositioning.
* *
* @param event Das Mausereignis * @param event The mouse event
*/ */
@FXML @FXML
private void onTaskbarPressed(MouseEvent event) { private void onTaskbarPressed(MouseEvent event) {
@@ -48,11 +49,11 @@ public class TaskbarController {
} }
/** /**
* Wird aufgerufen, während die Taskleiste mit der Maus gezogen wird. Aktualisiert die Position * Called while dragging the taskbar with the mouse. Updates the position
* und skaliert die Taskleiste leicht zur visuellen Rückmeldung. * and slightly scales the taskbar for visual feedback.
* *
* <p>TODO: Es muss noch gefixt werden, dass die Taskleiste nicht aus dem Fenster verschwinden * <p>TODO: It still needs to be fixed that the taskbar cannot disappear out
* kann. * of the window.
* *
* @param event Das Mausereignis * @param event Das Mausereignis
*/ */
@@ -66,10 +67,10 @@ public class TaskbarController {
} }
/** /**
* Wird aufgerufen, wenn die Maus über der Taskleiste losgelassen wird. Setzt die Skalierung der * Called when the mouse cursor is released over the taskbar. Resets the
* Taskleiste wieder auf Normalgröße. * taskbar scaling to normal size.
* *
* @param event Das Mausereignis * @param event The mouse event
*/ */
@FXML @FXML
private void onTaskbarReleased(MouseEvent event) { private void onTaskbarReleased(MouseEvent event) {
@@ -78,9 +79,9 @@ public class TaskbarController {
} }
/** /**
* Wird aufgerufen, wenn im Textfeld die Enter-Taste gedrückt wird. * Called up when the Enter key is pressed in the text field.
* *
* @param event Das Tastaturereignis * @param event The keyboard event
*/ */
@FXML @FXML
private void onInputSubmitted(KeyEvent event) { private void onInputSubmitted(KeyEvent event) {
@@ -90,8 +91,8 @@ public class TaskbarController {
} }
/** /**
* Wird aufgerufen, wenn der Submit-Button in der Taskleiste gedrückt wird. Löst die * Called when the submit button in the taskbar is pressed. Triggers the
* Verarbeitung des Einsatzes aus. * processing of the deployment.
*/ */
@FXML @FXML
private void onInputSubmittedAction() { private void onInputSubmittedAction() {
@@ -106,7 +107,7 @@ public class TaskbarController {
javafx.stage.Stage currentStage = javafx.stage.Stage currentStage =
(javafx.stage.Stage) taskbar.getScene().getWindow(); (javafx.stage.Stage) taskbar.getScene().getWindow();
currentStage.close(); currentStage.close();
// Lobby-UI starten // Start lobby UI
try { try {
new Casinomainui().start(new javafx.stage.Stage()); new Casinomainui().start(new javafx.stage.Stage());
} catch (Exception e) { } catch (Exception e) {
@@ -116,9 +117,9 @@ public class TaskbarController {
} }
/** /**
* Verarbeitet den im Textfeld eingegebenen Einsatz. Es werden ausschließlich ganzzahlige Werte * Processes the stake entered in the text field. Only integer values between 5
* im Bereich von 5 bis 100.000 Credits akzeptiert, die einem Vielfachen von 5 entsprechen * and 100,000 credits are accepted, in multiples of 5 (in increments of 5).
* (5er-Schritte). Der Einsatz wird aktuell nur auf der Konsole ausgegeben. * The stake is currently only displayed on the console.
*/ */
private void processBet() { private void processBet() {
String input = taskbarInput.getText(); String input = taskbarInput.getText();
@@ -126,22 +127,22 @@ public class TaskbarController {
int credits = Integer.parseInt(input.trim()); int credits = Integer.parseInt(input.trim());
if (credits >= MIN_CREDITS && credits <= MAX_CREDITS && credits % CREDIT_STEP == 0) { if (credits >= MIN_CREDITS && credits <= MAX_CREDITS && credits % CREDIT_STEP == 0) {
// TODO: Credits müssen an die GameEngine gesendet werden // TODO: Credits must be sent to the GameEngine
LOGGER.info("Einsatz gesetzt: {} Casono Credits", credits); LOGGER.info("Bet set: {} Casono Credits", credits);
taskbarInput.clear(); taskbarInput.clear();
} else { } else {
LOGGER.info("Fehler: Nur 5er-Schritte (5, 10, ... 100.000) erlaubt!"); LOGGER.error("Error: Only increments of 5 (5, 10, ... 100,000) are allowed!");
} }
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
LOGGER.info("Fehler: Bitte nur eine Zahl eingeben!"); LOGGER.error("Error: Please enter only one number!");
} }
} }
/** /**
* Öffnet den integrierten Casono Webbrowser. * Opens the integrated Casono web browser.
* *
* <p>TODO: Ersetze die Start-URL durch die offizielle Projekt-Website (z.B. Tipps & Tricks * <p> TODO: Replace the start URL with the official project website
* Seite), sobald die Inhalte für Strategien und Support bereitstehen. * (e.g., Tips & Tricks page) once the content for strategies and support is available.
*/ */
@FXML @FXML
private void onBrowserButtonClick() { private void onBrowserButtonClick() {