diff --git a/.idea/resourceBundles.xml b/.idea/resourceBundles.xml index 362dcdf..328097e 100644 --- a/.idea/resourceBundles.xml +++ b/.idea/resourceBundles.xml @@ -1,8 +1,14 @@ + + + + + + + - @@ -11,5 +17,15 @@ localization + + + + + + + + + localization + \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/App.java b/app/src/main/java/org/toop/app/App.java index 9646f46..83c1626 100644 --- a/app/src/main/java/org/toop/app/App.java +++ b/app/src/main/java/org/toop/app/App.java @@ -5,6 +5,7 @@ import org.toop.app.layer.layers.MainLayer; import org.toop.app.layer.layers.QuitLayer; import org.toop.framework.asset.ResourceManager; import org.toop.framework.asset.resources.CssAsset; +import org.toop.local.AppContext; import javafx.application.Application; import javafx.scene.Scene; @@ -34,7 +35,7 @@ public final class App extends Application { final Scene scene = new Scene(root); scene.getStylesheets().add(ResourceManager.get(CssAsset.class, "app.css").getUrl()); - stage.setTitle("pism"); + stage.setTitle(AppContext.getString("appTitle")); stage.setWidth(1080); stage.setHeight(720); @@ -100,6 +101,8 @@ public final class App extends Application { } public static void reloadAll() { + stage.setTitle(AppContext.getString("appTitle")); + for (final Layer layer : stack) { layer.reload(); } diff --git a/app/src/main/java/org/toop/app/events/AppEvents.java b/app/src/main/java/org/toop/app/events/AppEvents.java index 00a1d4d..a982290 100644 --- a/app/src/main/java/org/toop/app/events/AppEvents.java +++ b/app/src/main/java/org/toop/app/events/AppEvents.java @@ -5,6 +5,4 @@ import org.toop.framework.eventbus.events.EventsBase; public class AppEvents extends EventsBase { public record OnNodeHover() implements EventWithoutSnowflake {} - - public record OnLanguageChange(String language) implements EventWithoutSnowflake {} } \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/layer/Layer.java b/app/src/main/java/org/toop/app/layer/Layer.java index 695f420..263220c 100644 --- a/app/src/main/java/org/toop/app/layer/Layer.java +++ b/app/src/main/java/org/toop/app/layer/Layer.java @@ -12,22 +12,17 @@ public abstract class Layer { protected StackPane layer; protected Region background; - protected Layer(String cssFile, String backgroundCssClass) { + protected Layer(String cssFile) { layer = new StackPane(); - layer.setPickOnBounds(false); layer.getStylesheets().add(ResourceManager.get(CssAsset.class, cssFile).getUrl()); background = new Region(); + background.getStyleClass().add("background"); background.setPrefSize(Double.MAX_VALUE, Double.MAX_VALUE); - background.getStyleClass().add(backgroundCssClass); layer.getChildren().addLast(background); } - protected Layer(String cssFile) { - this(cssFile, "background"); - } - protected void addContainer(Container container, Pos position, int xOffset, int yOffset, int widthPercent, int heightPercent) { StackPane.setAlignment(container.getContainer(), position); @@ -72,9 +67,5 @@ public abstract class Layer { return layer; } - public Region getBackground() { - return background; - } - public abstract void reload(); } \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/layer/layers/CreditsLayer.java b/app/src/main/java/org/toop/app/layer/layers/CreditsLayer.java index 4b2a5dd..b6f3852 100644 --- a/app/src/main/java/org/toop/app/layer/layers/CreditsLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/CreditsLayer.java @@ -5,6 +5,7 @@ import org.toop.app.layer.Container; import org.toop.app.layer.Layer; import org.toop.app.layer.containers.HorizontalContainer; import org.toop.app.layer.containers.VerticalContainer; +import org.toop.local.AppContext; import javafx.animation.PauseTransition; import javafx.animation.TranslateTransition; @@ -14,17 +15,6 @@ import javafx.util.Duration; public final class CreditsLayer extends Layer { private final int lineHeight = 100; - private final String[] credits = { - "Scrum Master: Stef", - "Product Owner: Omar", - "Merge Commander: Bas", - "Localization: Ticho", - "AI: Michiel", - "Developers: Michiel, Bas, Stef, Omar, Ticho", - "Moral Support: Wesley (voor 1 week)", - "OpenGL: Omar" - }; - CreditsLayer() { super("credits.css"); reload(); @@ -34,6 +24,17 @@ public final class CreditsLayer extends Layer { public void reload() { popAll(); + final String[] credits = { + AppContext.getString("scrumMaster") + ": Stef", + AppContext.getString("productOwner") + ": Omar", + AppContext.getString("mergeCommander") + ": Bas", + AppContext.getString("localization") + ": Ticho", + AppContext.getString("ai") + ": Michiel", + AppContext.getString("developers") + ": Michiel, Bas, Stef, Omar, Ticho", + AppContext.getString("moralSupport") + ": Wesley", + AppContext.getString("opengl") + ": Omar" + }; + final Container creditsContainer = new HorizontalContainer(0); final Container animatedContainer = new VerticalContainer("animated_credits_container", lineHeight); @@ -44,7 +45,7 @@ public final class CreditsLayer extends Layer { } final Container controlContainer = new VerticalContainer(5); - controlContainer.addButton("Back", () -> { + controlContainer.addButton(AppContext.getString("back"), () -> { App.activate(new MainLayer()); }); diff --git a/app/src/main/java/org/toop/app/layer/layers/GameLayer.java b/app/src/main/java/org/toop/app/layer/layers/GameLayer.java index 53cca28..ac9daa2 100644 --- a/app/src/main/java/org/toop/app/layer/layers/GameLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/GameLayer.java @@ -4,6 +4,7 @@ import org.toop.app.App; import org.toop.app.layer.Container; import org.toop.app.layer.Layer; import org.toop.app.layer.containers.VerticalContainer; +import org.toop.local.AppContext; import javafx.geometry.Pos; @@ -19,7 +20,7 @@ public class GameLayer extends Layer { final Container controlContainer = new VerticalContainer(5); - controlContainer.addButton("Back", () -> { + controlContainer.addButton(AppContext.getString("back"), () -> { App.activate(new MainLayer()); }); diff --git a/app/src/main/java/org/toop/app/layer/layers/MainLayer.java b/app/src/main/java/org/toop/app/layer/layers/MainLayer.java index ae5fedf..9f97970 100644 --- a/app/src/main/java/org/toop/app/layer/layers/MainLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/MainLayer.java @@ -6,6 +6,7 @@ import org.toop.app.layer.Layer; import org.toop.app.layer.containers.VerticalContainer; import org.toop.game.othello.Othello; import org.toop.game.tictactoe.TicTacToe; +import org.toop.local.AppContext; import javafx.geometry.Pos; @@ -21,25 +22,25 @@ public final class MainLayer extends Layer { final Container gamesContainer = new VerticalContainer(5); - gamesContainer.addButton("Tic Tac Toe", () -> { + gamesContainer.addButton(AppContext.getString("tictactoe"), () -> { App.activate(new MultiplayerLayer()); }); - gamesContainer.addButton("Othello", () -> { + gamesContainer.addButton(AppContext.getString("othello"), () -> { App.activate(new MultiplayerLayer()); }); final Container controlContainer = new VerticalContainer(5); - controlContainer.addButton("Credits", () -> { + controlContainer.addButton(AppContext.getString("credits"), () -> { App.activate(new CreditsLayer()); }); - controlContainer.addButton("Options", () -> { + controlContainer.addButton(AppContext.getString("options"), () -> { App.activate(new OptionsLayer()); }); - controlContainer.addButton("Quit", () -> { + controlContainer.addButton(AppContext.getString("quit"), () -> { App.quitPopup(); }); diff --git a/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java b/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java index dd30ba1..0402f1d 100644 --- a/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/MultiplayerLayer.java @@ -6,6 +6,7 @@ import org.toop.app.layer.Layer; import org.toop.app.layer.containers.HorizontalContainer; import org.toop.app.layer.containers.VerticalContainer; import org.toop.game.TurnBasedGame; +import org.toop.local.AppContext; import javafx.geometry.Pos; @@ -34,7 +35,7 @@ public final class MultiplayerLayer extends Layer { final Container mainContainer = new VerticalContainer(5); - mainContainer.addToggle("Local", "Server", !isConnectionLocal, (server) -> { + mainContainer.addToggle(AppContext.getString("local"), AppContext.getString("server"), !isConnectionLocal, (server) -> { isConnectionLocal = !server; reload(); }); @@ -54,56 +55,56 @@ public final class MultiplayerLayer extends Layer { playersContainer.addContainer(player2Container, true); if (isConnectionLocal) { - mainContainer.addButton("Start", () -> { + mainContainer.addButton(AppContext.getString("start"), () -> { }); } else { - mainContainer.addButton("Connect", () -> { + mainContainer.addButton(AppContext.getString("connect"), () -> { }); } - player1Container.addToggle("Human", "Computer", !isPlayer1Human, (computer) -> { + player1Container.addToggle(AppContext.getString("human"), AppContext.getString("computer"), !isPlayer1Human, (computer) -> { isPlayer1Human = !computer; reload(); }); if (isPlayer1Human) { - player1Container.addText("Player name", true); + player1Container.addText(AppContext.getString("playerName"), true); player1Container.addInput(player1Name, (name) -> { player1Name = name; }); } else { - player1Container.addText("Computer difficulty", true); + player1Container.addText(AppContext.getString("computerDifficulty"), true); player1Container.addSlider(5, computer1Difficulty, (difficulty) -> { computer1Difficulty = difficulty; }); } if (isConnectionLocal) { - player2Container.addToggle("Human", "Computer", !isPlayer2Human, (computer) -> { + player2Container.addToggle(AppContext.getString("human"), AppContext.getString("computer"), !isPlayer2Human, (computer) -> { isPlayer2Human = !computer; reload(); }); if (isPlayer2Human) { - player2Container.addText("Player name", true); + player2Container.addText(AppContext.getString("playerName"), true); player2Container.addInput(player2Name, (name) -> { player2Name = name; }); } else { - player2Container.addText("Computer difficulty", true); + player2Container.addText(AppContext.getString("computerDifficulty"), true); player2Container.addSlider(5, computer2Difficulty, (difficulty) -> { computer2Difficulty = difficulty; }); } } else { - player2Container.addText("Server IP", true); + player2Container.addText(AppContext.getString("serverIP"), true); player2Container.addInput(serverIP, (ip) -> { serverIP = ip; }); player2Container.addSeparator(true); - player2Container.addText("Server Port", true); + player2Container.addText(AppContext.getString("serverPort"), true); player2Container.addInput(serverPort, (port) -> { serverPort = port; }); @@ -111,7 +112,7 @@ public final class MultiplayerLayer extends Layer { final Container controlContainer = new VerticalContainer(5); - controlContainer.addButton("Back", () -> { + controlContainer.addButton(AppContext.getString("back"), () -> { App.activate(new MainLayer()); }); diff --git a/app/src/main/java/org/toop/app/layer/layers/OptionsLayer.java b/app/src/main/java/org/toop/app/layer/layers/OptionsLayer.java index f617f66..4f7dce6 100644 --- a/app/src/main/java/org/toop/app/layer/layers/OptionsLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/OptionsLayer.java @@ -4,8 +4,6 @@ import org.toop.app.App; import org.toop.app.layer.Container; import org.toop.app.layer.Layer; import org.toop.app.layer.containers.VerticalContainer; -import org.toop.framework.asset.ResourceManager; -import org.toop.framework.asset.resources.LocalizationAsset; import org.toop.framework.audio.events.AudioEvents; import org.toop.framework.eventbus.EventFlow; import org.toop.local.AppContext; @@ -16,9 +14,6 @@ import javafx.scene.control.ChoiceBox; import java.util.Locale; public final class OptionsLayer extends Layer { - private Locale currentLocale = AppContext.getLocale(); - private LocalizationAsset locale = ResourceManager.get("localization"); - private static int currentVolume = 25; private static boolean isWindowed = true; @@ -32,20 +27,22 @@ public final class OptionsLayer extends Layer { popAll(); final Container optionsContainer = new VerticalContainer(5); - optionsContainer.addText("Language", false); + optionsContainer.addText(AppContext.getString("language"), false); addLanguageBox(optionsContainer); optionsContainer.addSeparator(true); - optionsContainer.addText("Volume", false); + + optionsContainer.addText(AppContext.getString("volume"), false); addVolumeSlider(optionsContainer); optionsContainer.addSeparator(true); + addFullscreenToggle(optionsContainer); final Container mainContainer = new VerticalContainer(50); - mainContainer.addText("Options", false); + mainContainer.addText(AppContext.getString("options"), false); mainContainer.addContainer(optionsContainer, true); final Container controlContainer = new VerticalContainer(5); - controlContainer.addButton("Back", () -> { + controlContainer.addButton(AppContext.getString("back"), () -> { App.activate(new MainLayer()); }); @@ -54,24 +51,34 @@ public final class OptionsLayer extends Layer { } private void addLanguageBox(Container container) { + assert AppContext.getLocalization() != null; + final ChoiceBox languageBox = container.addChoiceBox((locale) -> { - if (locale == currentLocale) { + if (locale == AppContext.getLocale()) { return; } AppContext.setLocale(locale); - - this.currentLocale = AppContext.getLocale(); - this.locale = ResourceManager.get("localization"); - App.reloadAll(); }); - for (final Locale localeFile : locale.getAvailableLocales()) { + for (final Locale localeFile : AppContext.getLocalization().getAvailableLocales()) { languageBox.getItems().add(localeFile); } - languageBox.setValue(currentLocale); + languageBox.setConverter(new javafx.util.StringConverter<>() { + @Override + public String toString(Locale locale) { + return AppContext.getString(locale.getDisplayName().toLowerCase()); + } + + @Override + public Locale fromString(String string) { + return null; + } + }); + + languageBox.setValue(AppContext.getLocale()); } private void addVolumeSlider(Container container) { @@ -82,7 +89,7 @@ public final class OptionsLayer extends Layer { } private void addFullscreenToggle(Container container) { - container.addToggle("Windowed", "Fullscreen", !isWindowed, (fullscreen) -> { + container.addToggle(AppContext.getString("windowed"), AppContext.getString("fullscreen"), !isWindowed, (fullscreen) -> { isWindowed = !fullscreen; App.setFullscreen(fullscreen); }); diff --git a/app/src/main/java/org/toop/app/layer/layers/QuitLayer.java b/app/src/main/java/org/toop/app/layer/layers/QuitLayer.java index 2c56c21..13fc367 100644 --- a/app/src/main/java/org/toop/app/layer/layers/QuitLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/QuitLayer.java @@ -5,12 +5,13 @@ import org.toop.app.layer.Container; import org.toop.app.layer.Layer; import org.toop.app.layer.containers.HorizontalContainer; import org.toop.app.layer.containers.VerticalContainer; +import org.toop.local.AppContext; import javafx.geometry.Pos; public final class QuitLayer extends Layer { public QuitLayer() { - super("quit.css", "quit_background"); + super("quit.css"); reload(); } @@ -19,18 +20,17 @@ public final class QuitLayer extends Layer { popAll(); final Container mainContainer = new VerticalContainer(30); - - mainContainer.addText("Are you sure?", false); + mainContainer.addText(AppContext.getString("quitSure"), false); final Container controlContainer = new HorizontalContainer(30); mainContainer.addContainer(controlContainer, false); - controlContainer.addButton("Yes", () -> { + controlContainer.addButton(AppContext.getString("yes"), () -> { App.quit(); }); - controlContainer.addButton("No", () -> { + controlContainer.addButton(AppContext.getString("no"), () -> { App.pop(); }); diff --git a/app/src/main/java/org/toop/app/menu/CreditsMenu.java b/app/src/main/java/org/toop/app/menu/CreditsMenu.java deleted file mode 100644 index 3817d69..0000000 --- a/app/src/main/java/org/toop/app/menu/CreditsMenu.java +++ /dev/null @@ -1,100 +0,0 @@ -// package org.toop.app.menu; -// -// import javafx.animation.Interpolator; -// import javafx.animation.PauseTransition; -// import javafx.animation.TranslateTransition; -// import javafx.application.Platform; -// import javafx.geometry.Pos; -// import javafx.scene.control.Button; -// import javafx.scene.layout.Region; -// import javafx.scene.layout.StackPane; -// import javafx.scene.layout.VBox; -// import javafx.util.Duration; -// import org.toop.app.App; -// import org.toop.framework.asset.ResourceManager; -// import org.toop.framework.asset.resources.LocalizationAsset; -// import org.toop.framework.eventbus.EventFlow; -// import org.toop.local.AppContext; -// import org.toop.local.LocalizationEvents; -// -// import java.util.Locale; -// -// public final class CreditsMenu extends Menu { ; -// private Locale currentLocale = AppContext.getLocale(); -// private LocalizationAsset loc = ResourceManager.get("localization_en_us.properties"); -// -// String[] credits = { -// "Scrum Master: Stef", -// "Product Owner: Omar", -// "Merge Commander: Bas", -// "Localization: Ticho", -// "AI: Michiel", -// "Developers: Michiel, Bas, Stef, Omar, Ticho", -// "Moral Support: Wesley (voor 1 week)", -// "OpenGL: Omar" -// }; -// -// double scrollDuration = 20.0; -// double lineHeight = 40.0; -// -// public CreditsMenu() { -// VBox creditsBox = new VBox(lineHeight / 2); -// for (int i = credits.length - 1; i >= 0; i--) { -// creditsBox.getChildren().add(createText(credits[i])); -// creditsBox.setAlignment(Pos.CENTER); -// } -// -// Button exit = new Button("<"); -// exit.setStyle( -// "-fx-background-color: transparent;" + -// "-fx-text-fill: white;" + -// "-fx-font-size: 72px;" + -// "-fx-padding: 10 20 10 20;" -// ); -// exit.setOnAction(e -> App.pop()); -// -// final Region background = createBackground(); -// StackPane.setAlignment(exit, Pos.TOP_LEFT); -// pane = new StackPane(background, creditsBox, exit); -// -// Platform.runLater(() -> playCredits(creditsBox, 800)); -// -// try { -// new EventFlow() -// .listen(this::handleChangeLanguage); -// -// }catch (Exception e){ -// System.out.println("Something went wrong while trying to change the language."); -// throw e; -// } -// } -// -// public void playCredits(VBox creditsBox, double sceneLength) { -// double height = (credits.length * lineHeight); -// double startY = -sceneLength; -// double endY = height; -// -// creditsBox.setTranslateY(startY); -// -// TranslateTransition scrollCredits = new TranslateTransition(); -// scrollCredits.setNode(creditsBox); -// scrollCredits.setFromY(startY); -// scrollCredits.setToY(endY / 2 - 200); -// scrollCredits.setDuration(Duration.seconds(scrollDuration)); -// scrollCredits.setInterpolator(Interpolator.LINEAR); -// -// scrollCredits.setOnFinished(e -> { -// PauseTransition pauseCredits = new PauseTransition(Duration.seconds(5)); -// pauseCredits.setOnFinished(a -> playCredits(creditsBox, sceneLength)); -// pauseCredits.play(); -// }); -// -// scrollCredits.play(); -// } -// private void handleChangeLanguage(LocalizationEvents.LanguageHasChanged event) { -// Platform.runLater(() -> { -// currentLocale = AppContext.getLocale(); -// //credits.setText(loc.getString("credits",currentLocale)); -// }); -// } -// } \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/menu/GameSelectMenu.java b/app/src/main/java/org/toop/app/menu/GameSelectMenu.java deleted file mode 100644 index 89d9a89..0000000 --- a/app/src/main/java/org/toop/app/menu/GameSelectMenu.java +++ /dev/null @@ -1,66 +0,0 @@ -// package org.toop.app.menu; -// -// import javafx.application.Platform; -// import javafx.scene.control.ComboBox; -// import javafx.scene.control.TextField; -// import javafx.scene.layout.HBox; -// import javafx.scene.layout.Region; -// import javafx.scene.layout.StackPane; -// import javafx.scene.layout.VBox; -// import org.toop.app.GameType; -// import org.toop.framework.asset.ResourceManager; -// import org.toop.framework.asset.resources.LocalizationAsset; -// import org.toop.framework.eventbus.EventFlow; -// import org.toop.local.AppContext; -// -// import java.util.Locale; -// -// public class GameSelectMenu extends Menu { -// private Locale currentLocale = AppContext.getLocale(); -// private final LocalizationAsset loc = ResourceManager.get("localization"); -// -// final ComboBox selectedMode, selectedGame; -// final TextField serverIpField; -// -// public GameSelectMenu(GameType type) { -// final Region background = createBackground(); -// -// selectedGame = new ComboBox<>(); -// selectedGame.getItems().add(GameType.toName(GameType.TICTACTOE)); -// selectedGame.getItems().add(GameType.toName(GameType.REVERSI)); -// selectedGame.setValue(GameType.toName(type)); -// -// selectedMode = new ComboBox<>(); -// selectedMode.getItems().add("Local"); -// selectedMode.getItems().add("Online"); -// selectedMode.setValue("Local"); -// -// final HBox selectedContainer = new HBox(10, selectedGame, selectedMode); -// -// serverIpField = new TextField(); -// serverIpField.setPromptText(loc.getString("gameSelectMenuEnterIP",currentLocale)); -// -// VBox box = new VBox(selectedContainer, serverIpField); -// pane = new StackPane(background, box); -// try { -// new EventFlow() -// .listen(this::handleChangeLanguage); -// -// }catch (Exception e){ -// System.out.println("Something went wrong while trying to change the language."); -// throw e; -// } -// -// } -// private void handleChangeLanguage(LocalizationEvents.LanguageHasChanged event) { -// Platform.runLater(() -> { -// currentLocale = AppContext.getLocale(); -// serverIpField.setPromptText(loc.getString("gameSelectMenuEnterIP",currentLocale)); -// selectedGame.getItems().set(0, loc.getString("mainMenuSelectTicTacToe",currentLocale)); -// selectedGame.getItems().set(1, loc.getString("mainMenuSelectReversi",currentLocale)); -// selectedMode.getItems().set(0, loc.getString("gameSelectMenuLocal",currentLocale)); -// selectedMode.getItems().set(1, loc.getString("gameSelectMenuOnline",currentLocale)); -// }); -// -// } -// } \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/menu/MainMenu.java b/app/src/main/java/org/toop/app/menu/MainMenu.java deleted file mode 100644 index 9696b5d..0000000 --- a/app/src/main/java/org/toop/app/menu/MainMenu.java +++ /dev/null @@ -1,69 +0,0 @@ -// package org.toop.app.menu; -// -// import javafx.application.Platform; -// import org.toop.app.App; -// import org.toop.app.GameType; -// -// import javafx.geometry.Pos; -// import javafx.scene.control.Button; -// import javafx.scene.layout.*; -// import org.toop.framework.asset.ResourceManager; -// import org.toop.framework.asset.resources.LocalizationAsset; -// import org.toop.framework.eventbus.EventFlow; -// import org.toop.game.tictactoe.TicTacToe; -// import org.toop.local.AppContext; -// import org.toop.local.LocalizationEvents; -// -// import java.util.Locale; -// -// public final class MainMenu extends Menu { -// private Locale currentLocale = AppContext.getLocale(); -// private final LocalizationAsset loc = ResourceManager.get("localization"); -// private final Button tictactoe,reversi,credits,options,quit; -// public MainMenu() { -// final Region background = createBackground(); -// -// tictactoe = createButton( -// loc.getString("mainMenuSelectTicTacToe",currentLocale), () -> { App.activate(new GameSelectMenu(GameType.TICTACTOE)); }); -// reversi = createButton( -// loc.getString("mainMenuSelectReversi",currentLocale), () -> { App.activate(new GameSelectMenu(GameType.REVERSI)); }); -// -// final VBox gamesBox = new VBox(10, tictactoe, reversi); -// gamesBox.setAlignment(Pos.TOP_LEFT); -// gamesBox.setPickOnBounds(false); -// gamesBox.setTranslateY(50); -// gamesBox.setTranslateX(25); -// -// credits = createButton(loc.getString("mainMenuSelectCredits",currentLocale), () -> { App.push(new CreditsMenu()); }); -// options = createButton(loc.getString("mainMenuSelectOptions",currentLocale), () -> { App.push(new OptionsMenu()); }); -// quit = createButton(loc.getString("mainMenuSelectQuit",currentLocale), () -> { App.quitPopup(); }); -// -// final VBox controlBox = new VBox(10, credits, options, quit); -// controlBox.setAlignment(Pos.BOTTOM_LEFT); -// controlBox.setPickOnBounds(false); -// controlBox.setTranslateY(-50); -// controlBox.setTranslateX(25); -// -// pane = new StackPane(background, gamesBox, controlBox); -// try { -// new EventFlow() -// .listen(this::handleChangeLanguage); -// -// }catch (Exception e){ -// System.out.println("Something went wrong while trying to change the language."); -// throw e; -// } -// -// } -// private void handleChangeLanguage(LocalizationEvents.LanguageHasChanged event) { -// Platform.runLater(() -> { -// currentLocale = AppContext.getLocale(); -// tictactoe.setText(loc.getString("mainMenuSelectTicTacToe",currentLocale)); -// reversi.setText(loc.getString("mainMenuSelectReversi",currentLocale)); -// credits.setText(loc.getString("mainMenuSelectCredits",currentLocale)); -// options.setText(loc.getString("mainMenuSelectOptions",currentLocale)); -// quit.setText(loc.getString("mainMenuSelectQuit",currentLocale)); -// }); -// -// } -// } \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/menu/Menu.java b/app/src/main/java/org/toop/app/menu/Menu.java deleted file mode 100644 index 6863d8e..0000000 --- a/app/src/main/java/org/toop/app/menu/Menu.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.toop.app.menu; - -import javafx.scene.control.Button; -import javafx.scene.layout.Pane; -import javafx.scene.layout.Region; -import javafx.scene.text.Text; -import org.toop.framework.audio.events.AudioEvents; -import org.toop.framework.eventbus.EventFlow; - -public abstract class Menu { - protected Pane pane; - public Pane getPane() { return pane; } - - public Region createBackground(String css) { - final Region background = new Region(); - background.setPrefSize(Double.MAX_VALUE, Double.MAX_VALUE); - background.getStyleClass().add(css); - - return background; - } - - public Region createBackground() { - return createBackground("background"); - } - - public Text createText(String css, String x) { - final Text text = new Text(x); - text.getStyleClass().add(css); - - return text; - } - - public Text createText(String x) { - return createText("text", x); - } - - public Button createButton(String css, String x, Runnable runnable) { - final Button button = new Button(x); - button.setOnAction(_ -> { - new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); - runnable.run(); - }); - button.getStyleClass().add(css); - - return button; - } - - public Button createButton(String x, Runnable runnable) { - return createButton("button", x, runnable); - } -} \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/menu/OptionsMenu.java b/app/src/main/java/org/toop/app/menu/OptionsMenu.java deleted file mode 100644 index c738d32..0000000 --- a/app/src/main/java/org/toop/app/menu/OptionsMenu.java +++ /dev/null @@ -1,174 +0,0 @@ -// package org.toop.app.menu; -// -// import javafx.geometry.Pos; -// import javafx.scene.control.*; -// import javafx.scene.control.Button; -// import javafx.scene.control.Label; -// import javafx.scene.layout.Region; -// import javafx.scene.layout.StackPane; -// import javafx.scene.layout.VBox; -// import org.toop.app.App; -// import org.toop.framework.asset.ResourceManager; -// import org.toop.framework.asset.resources.LocalizationAsset; -// import org.toop.framework.audio.events.AudioEvents; -// import org.toop.framework.eventbus.EventFlow; -// import org.toop.local.AppContext; -// -// import java.awt.*; -// import java.util.Locale; -// -// public final class OptionsMenu extends Menu { -// private Locale currentLocale = AppContext.getLocale(); -// private LocalizationAsset loc = ResourceManager.get("localization"); -// private GraphicsDevice currentScreenDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0]; -// -// public OptionsMenu() { -// final Label selectLanguageLabel = new Label( -// loc.getString("optionsMenuLabelSelectLanguage", currentLocale) -// ); -// -// final Button exitOptionsButton = createButton("Exit Options", () -> { App.pop(); } ); -// -// final VBox optionsBox = new VBox(10, -// selectLanguageLabel, -// languageSelectorCreation(), -// screenDeviceSelectorCreation(), -// displayModeSelectorCreation(), -// selectFullscreenCreation(), -// volumeSelectorCreation(), -// exitOptionsButton); -// -// optionsBox.setAlignment(Pos.CENTER); -// optionsBox.setPickOnBounds(false); -// optionsBox.setTranslateY(50); -// optionsBox.setTranslateX(25); -// -// pane = new StackPane(optionsBox); -// -// } -// -// private ChoiceBox languageSelectorCreation() { -// final ChoiceBox selectLanguage = new ChoiceBox<>(); -// selectLanguage.setValue(currentLocale); -// -// for (Locale locFile : loc.getAvailableLocales()) { -// selectLanguage.getItems().add(locFile); -// } -// -// selectLanguage.setConverter(new javafx.util.StringConverter<>() { -// @Override -// public String toString(Locale locale) { -// return locale.getDisplayName(); -// } -// -// @Override -// public Locale fromString(String string) { -// return null; -// } -// }); -// -// selectLanguage.setOnShowing(event -> { -// new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); -// }); -// -// selectLanguage.setOnAction(event -> { -// new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); -// Locale selectedLocale = selectLanguage.getSelectionModel().getSelectedItem(); -// if (selectedLocale != null) { -// AppContext.setLocale(selectedLocale); -// App.pop(); -// App.push(new OptionsMenu()); -// } -// }); -// -// return selectLanguage; -// } -// -// private ChoiceBox screenDeviceSelectorCreation() { -// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); -// GraphicsDevice[] devices = ge.getScreenDevices(); -// final ChoiceBox selectScreen = new ChoiceBox<>(); -// for (GraphicsDevice screen : devices) { -// selectScreen.getItems().add(screen); -// } -// -// selectScreen.setOnShowing(event -> { -// new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); -// }); -// -// selectScreen.setOnAction(event -> { -// new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); -// int selectedIndex = selectScreen.getSelectionModel().getSelectedIndex(); -// Object selectedItem = selectScreen.getSelectionModel().getSelectedItem(); -// -// System.out.println("Selection made: [" + selectedIndex + "] " + selectedItem); -// System.out.println(" ChoiceBox.getValue(): " + selectScreen.getValue()); -// }); -// return selectScreen; -// } -// -// private ChoiceBox displayModeSelectorCreation() { -// final ChoiceBox selectWindowSize = new ChoiceBox<>(); -// for (DisplayMode displayMode : currentScreenDevice.getDisplayModes()) { -// selectWindowSize.getItems().add(displayMode); -// } -// selectWindowSize.setOnShowing(event -> { -// new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); -// }); -// selectWindowSize.setOnAction(event -> { -// new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); -// int selectedIndex = selectWindowSize.getSelectionModel().getSelectedIndex(); -// Object selectedItem = selectWindowSize.getSelectionModel().getSelectedItem(); -// -// System.out.println("Selection made: [" + selectedIndex + "] " + selectedItem); -// System.out.println(" ChoiceBox.getValue(): " + selectWindowSize.getValue()); -// }); -// return selectWindowSize; -// } -// -// private CheckBox selectFullscreenCreation() { -// final CheckBox setFullscreen = new CheckBox("Fullscreen"); -// setFullscreen.setSelected(App.isFullscreen()); -// setFullscreen.setOnAction(event -> { -// new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent(); -// boolean isSelected = setFullscreen.isSelected(); -// App.setFullscreen(isSelected); -// }); -// return setFullscreen; -// } -// -// private Slider volumeSelectorCreation() { -// Slider volumeSlider = new Slider(0, 100, 50); -// new EventFlow() -// .addPostEvent(AudioEvents.GetCurrentVolume.class) -// .onResponse(AudioEvents.GetCurrentVolumeReponse.class, event -> { -// volumeSlider.setValue(event.currentVolume() * 100); -// }, true).asyncPostEvent(); -// volumeSlider.setShowTickLabels(true); -// volumeSlider.setShowTickMarks(true); -// volumeSlider.setMajorTickUnit(25); -// volumeSlider.setMinorTickCount(4); -// volumeSlider.setBlockIncrement(5); -// volumeSlider.setMaxWidth(225); -// -// Label valueLabel = new Label(String.valueOf((int) volumeSlider.getValue())); -// -// final long[] lastPlayed = {0}; -// final long cooldown = 50; -// volumeSlider.valueProperty().addListener((obs, oldVal, newVal) -> { -// long now = System.currentTimeMillis(); -// -// if (now - lastPlayed[0] >= cooldown) { -// lastPlayed[0] = now; -// // new EventFlow().addPostEvent(new AudioEvents.clickButton()) -// // .asyncPostEvent(); // TODO: creates double sound bug, WHYYY???? -// } -// valueLabel.setText(String.valueOf(newVal.intValue())); -// new EventFlow().addPostEvent(new AudioEvents.ChangeVolume(newVal.doubleValue()/100.0)) -// .asyncPostEvent(); -// }); -// -// return volumeSlider; -// } -// -// } \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/menu/game/GameMenu.java b/app/src/main/java/org/toop/app/menu/game/GameMenu.java deleted file mode 100644 index 13ab5e1..0000000 --- a/app/src/main/java/org/toop/app/menu/game/GameMenu.java +++ /dev/null @@ -1,127 +0,0 @@ -// package org.toop.app.menu.game; -// -// import javafx.application.Platform; -// import javafx.geometry.Pos; -// import javafx.scene.canvas.Canvas; -// import javafx.scene.canvas.GraphicsContext; -// import javafx.scene.control.Button; -// import javafx.scene.layout.HBox; -// import javafx.scene.layout.Region; -// import javafx.scene.layout.StackPane; -// import javafx.scene.layout.VBox; -// import javafx.scene.text.Text; -// import org.toop.app.App; -// import org.toop.app.menu.MainMenu; -// import org.toop.app.menu.Menu; -// import org.toop.framework.asset.ResourceManager; -// import org.toop.framework.asset.resources.LocalizationAsset; -// import org.toop.framework.eventbus.EventFlow; -// import org.toop.local.AppContext; -// -// import java.util.Locale; -// -// public abstract class GameMenu extends Menu { -// protected final class Cell { -// public float x; -// public float y; -// -// public float width; -// public float height; -// -// public Cell(float x, float y, float width, float height) { -// this.x = x; -// this.y = y; -// -// this.width = width; -// this.height = height; -// } -// -// public boolean check(float x, float y) { -// return x >= this.x && y >= this.y && x <= this.x + width && y <= this.y + height; -// } -// } -// -// protected final int size; -// -// protected final Canvas canvas; -// protected final GraphicsContext graphics; -// -// protected final int rows; -// protected final int columns; -// -// protected final int gapSize; -// -// protected final Cell[] cells; -// -// private Locale currentLocale = AppContext.getLocale(); -// private final LocalizationAsset loc = ResourceManager.get("localization"); -// private final Button hint,back; -// protected GameMenu(int rows, int columns, int gapSize) { -// -// final int size = Math.min(App.getWidth(), App.getHeight()) / 5 * 4; -// -// final Canvas canvas = new Canvas(size, size); -// -// final GraphicsContext graphics = canvas.getGraphicsContext2D(); -// -// this.size = size; -// -// this.canvas = canvas; -// this.graphics = graphics; -// -// this.rows = rows; -// this.columns = columns; -// -// this.gapSize = gapSize; -// -// cells = new Cell[rows * columns]; -// -// final float cellWidth = ((float)size - (rows - 1) * gapSize) / rows; -// final float cellHeight = ((float)size - (columns - 1) * gapSize) / rows; -// -// for (int y = 0; y < columns; y++) { -// final float startY = y * cellHeight + y * gapSize; -// -// for (int x = 0; x < rows; x++) { -// final float startX = x * cellWidth + x * gapSize; -// cells[y * rows + x] = new Cell(startX, startY, cellWidth, cellHeight); -// } -// } -// -// final Region background = createBackground(); -// -// final Text player1 = createText("player_1", "Player 1"); -// final Text player2 = createText("player_2", "Player 2"); -// -// final HBox playersContainer = new HBox(100, player1, player2); -// playersContainer.setAlignment(Pos.TOP_CENTER); -// playersContainer.setPickOnBounds(false); -// playersContainer.setTranslateY(50); -// -// hint = createButton(loc.getString("gameMenuHint",currentLocale), () -> {}); -// back = createButton(loc.getString("gameMenuBack",currentLocale), () -> { App.activate(new MainMenu()); }); -// -// final VBox controlContainer = new VBox(hint, back); -// StackPane.setAlignment(controlContainer, Pos.BOTTOM_LEFT); -// controlContainer.setPickOnBounds(false); -// -// pane = new StackPane(background, canvas, playersContainer, controlContainer); -// try { -// new EventFlow() -// .listen(this::handleChangeLanguage); -// -// }catch (Exception e){ -// System.out.println("Something went wrong while trying to change the language."); -// throw e; -// } -// -// } -// private void handleChangeLanguage(LocalizationEvents.LanguageHasChanged event) { -// Platform.runLater(() -> { -// currentLocale = AppContext.getLocale(); -// hint.setText(loc.getString("gameMenuHint",currentLocale)); -// back.setText(loc.getString("gameMenuBack",currentLocale)); -// }); -// -// } -// } \ No newline at end of file diff --git a/app/src/main/java/org/toop/local/AppContext.java b/app/src/main/java/org/toop/local/AppContext.java index 277940e..4a50029 100644 --- a/app/src/main/java/org/toop/local/AppContext.java +++ b/app/src/main/java/org/toop/local/AppContext.java @@ -1,24 +1,28 @@ package org.toop.local; -import org.toop.app.events.AppEvents; -import org.toop.framework.eventbus.EventFlow; +import org.toop.framework.asset.ResourceManager; +import org.toop.framework.asset.resources.LocalizationAsset; import java.util.Locale; public class AppContext { - private static Locale currentLocale = Locale.getDefault(); + private static final LocalizationAsset localization = ResourceManager.get("localization"); + private static Locale locale = Locale.forLanguageTag("en"); - public static void setLocale(Locale locale) { - currentLocale = locale; - new EventFlow().addPostEvent(new AppEvents.OnLanguageChange(locale.getLanguage())).asyncPostEvent(); - } + public static LocalizationAsset getLocalization() { + return localization; + } - public static void setCurrentLocale(Locale locale) { - currentLocale = locale; - new EventFlow().addPostEvent(new AppEvents.OnLanguageChange(locale.getLanguage())).asyncPostEvent(); - } + public static void setLocale(Locale locale) { + AppContext.locale = locale; + } - public static Locale getLocale() { - return currentLocale; - } -} + public static Locale getLocale() { + return locale; + } + + public static String getString(String key) { + assert localization != null; + return localization.getString(key, locale); + } +} \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_de.properties b/app/src/main/resources/assets/localization/localization_de.properties index e38762e..6ce186e 100644 --- a/app/src/main/resources/assets/localization/localization_de.properties +++ b/app/src/main/resources/assets/localization/localization_de.properties @@ -1,40 +1,40 @@ -# Window title -windowTitle=ISY Spiele-Auswahl +ai=K\u00fcnstliche Intelligenz +appTitle=ISY Spieleauswahl +back=Zur\u00fcck +computer=Computer +computerDifficulty=Computerschwierigkeit +connect=Verbinden +credits=Credits +developers=Entwickler +fullscreen=Vollbild +human=Mensch +language=Sprache +local=Lokal +localization=Lokalisierung +mergeCommander=Merge-Kommandant +moralSupport=Mentale Unterst\u00fctzung +no=Nein +opengl=OpenGL +options=Optionen +othello=Othello +playerName=Spielername +productOwner=Produktverantwortlicher +quit=Beenden +quitSure=Bist du dir sicher? +scrumMaster=Scrum Master +server=Server +serverIP=Server-IP +serverPort=Server-Port +start=Start +tictactoe=Tic Tac Toe +volume=Lautst\u00e4rke +windowed=Fenstermodus +yes=Ja -# Main Menu buttons -mainMenuSelectTicTacToe=Tic Tac Toe -mainMenuSelectReversi=Reversi -mainMenuSelectSudoku=Sudoku -mainMenuSelectBattleship=Flottenman\u00F6ver -mainMenuSelectOther=Andere -mainMenuSelectCredits=Credits -mainMenuSelectOptions=Optionen -mainMenuSelectQuit=Beenden - -# Quit Menu text and buttons -quitMenuTextSure=Bist du sicher? -quitMenuButtonYes=Ja -quitMenuButtonNo=Nein - -# Language menu -languageChangeText=Sprache w\u00E4hlen. -languageEnglish=Englisch -languageDutch=Niederl\u00E4ndisch -languageGerman=Deutsch -languageFrench=Franz\u00F6sisch -languageItalian=Italienisch -languageSpanish=Spanisch -languageChinese=Chinesisch - -# Game select menu -gameSelectMenuLocal=Lokal -gameSelectMenuOnline=Online -gameSelectMenuEnterIP=Gib hier deine IP-Adresse ein: - -# Game Menu -gameMenuHint=Tipp -gameMenuBack=Zur\u00FCck - - -# Options menu -optionsMenuLabelSelectLanguage=Sprache: \ No newline at end of file +chinese=\u4e2d\u6587 +dutch=Nederlands +english=English +french=Fran\u00e7ais +german=Deutsch +italian=Italiano +spanish=Espa\u00f1ol \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_en.properties b/app/src/main/resources/assets/localization/localization_en.properties new file mode 100644 index 0000000..e8035e2 --- /dev/null +++ b/app/src/main/resources/assets/localization/localization_en.properties @@ -0,0 +1,40 @@ +ai=Artificial Intelligence +appTitle=ISY Games Selector +back=Back +computer=Computer +computerDifficulty=Computer Difficulty +connect=Connect +credits=Credits +developers=Developers +fullscreen=Fullscreen +human=Human +language=Language +local=Local +localization=Localization +mergeCommander=Merge Commander +moralSupport=Moral Support +no=No +opengl=OpenGL +options=Options +othello=Othello +playerName=Player Name +productOwner=Product Owner +quit=Quit +quitSure=Are you sure? +scrumMaster=Scrum Master +server=Server +serverIP=Server IP +serverPort=Server Port +start=Start +tictactoe=Tic Tac Toe +volume=Volume +windowed=Windowed +yes=Yes + +chinese=\u4e2d\u6587 +dutch=Nederlands +english=English +french=Fran\u00e7ais +german=Deutsch +italian=Italiano +spanish=Espa\u00f1ol \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_en_US.properties b/app/src/main/resources/assets/localization/localization_en_US.properties deleted file mode 100644 index 2d5da19..0000000 --- a/app/src/main/resources/assets/localization/localization_en_US.properties +++ /dev/null @@ -1,39 +0,0 @@ -# Window title -windowTitle=ISY Games Selector - -# Main Menu buttons -mainMenuSelectTicTacToe=Tic Tac Toe -mainMenuSelectReversi=Reversi -mainMenuSelectSudoku=Sudoku -mainMenuSelectBattleship=Battleship -mainMenuSelectOther=Other -mainMenuSelectCredits=Credits -mainMenuSelectOptions=Options -mainMenuSelectQuit=Quit - -# Quit Menu text and buttons -quitMenuTextSure=Are you sure? -quitMenuButtonYes=Yes -quitMenuButtonNo=No - -# Language menu -languageChangeText=Choose a language. -languageEnglish=English -languageDutch=Dutch -languageGerman=German -languageFrench=French -languageItalian=Italian -languageSpanish=Spanish -languageChinese=Chinese - -# Game select menu -gameSelectMenuLocal=Local -gameSelectMenuOnline=Online -gameSelectMenuEnterIP=Enter your IP address here: - -# Game Menu -gameMenuHint=Hint -gameMenuBack=Back - -# Options menu -optionsMenuLabelSelectLanguage=Language: \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_es.properties b/app/src/main/resources/assets/localization/localization_es.properties index c6c0648..f407436 100644 --- a/app/src/main/resources/assets/localization/localization_es.properties +++ b/app/src/main/resources/assets/localization/localization_es.properties @@ -1,40 +1,40 @@ -# Window title -windowTitle=Selector de juegos ISY +ai=Inteligencia Artificial +appTitle=Selector de Juegos ISY +back=Atr\u00e1s +computer=Ordenador +computerDifficulty=Dificultad del Ordenador +connect=Conectar +credits=Cr\u00e9ditos +developers=Desarrolladores +fullscreen=Pantalla completa +human=Humano +language=Idioma +local=Local +localization=Localizaci\u00f3n +mergeCommander=Comandante de Merge +moralSupport=Apoyo moral +no=No +opengl=OpenGL +options=Opciones +othello=Othello +playerName=Nombre del Jugador +productOwner=Propietario del Producto +quit=Salir +quitSure=\u00BFAst\u00e1s seguro? +scrumMaster=Scrum Master +server=Servidor +serverIP=Servidor-IP +serverPort=Servidor-puerto +start=Iniciar +tictactoe=Tres en Raya +volume=Volumen +windowed=Ventana +yes=S\u00ed -# Main Menu buttons -mainMenuSelectTicTacToe=Tres en raya -mainMenuSelectReversi=Reversi -mainMenuSelectSudoku=Sudoku -mainMenuSelectBattleship=Batalla naval -mainMenuSelectOther=Otros -mainMenuSelectCredits=Cr\u00E9ditos -mainMenuSelectOptions=Opciones -mainMenuSelectQuit=Salir - -# Quit Menu text and buttons -quitMenuTextSure=\u00BFEst\u00E1s seguro? -quitMenuButtonYes=S\u00ED -quitMenuButtonNo=No - -# Language menu -languageChangeText=Elige un idioma. -languageEnglish=Ingl\u00E9s -languageDutch=Neerland\u00E9s -languageGerman=Alem\u00E1n -languageFrench=Franc\u00E9s -languageItalian=Italiano -languageSpanish=Espa\u00F1ol -languageChinese=Chino - -# Game select menu -gameSelectMenuLocal=Local -gameSelectMenuOnline=En l\u00EDnea -gameSelectMenuEnterIP=Introduce aqu\u00ED tu direcci\u00F3n IP: - -# Game Menu -gameMenuHint=Pista -gameMenuBack=Atr\u00E1s - - -# Options menu -optionsMenuLabelSelectLanguage=Idioma: \ No newline at end of file +chinese=\u4e2d\u6587 +dutch=Nederlands +english=English +french=Fran\u00e7ais +german=Deutsch +italian=Italiano +spanish=Espa\u00f1ol \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_fr.properties b/app/src/main/resources/assets/localization/localization_fr.properties index 6b71c6e..83b5b5f 100644 --- a/app/src/main/resources/assets/localization/localization_fr.properties +++ b/app/src/main/resources/assets/localization/localization_fr.properties @@ -1,40 +1,40 @@ -# Window title -windowTitle=S\u00E9lecteur de jeux ISY +ai=Intelligence Artificielle +appTitle=S\u00e9lecteur de Jeux ISY +back=Retour +computer=Ordinateur +computerDifficulty=Difficult\u00e9 de l'Ordinateur +connect=Connecter +credits=Cr\u00e9dits +developers=D\u00e9veloppeurs +fullscreen=Plein \u00e9cran +human=Humain +language=Langue +local=Local +localization=Localisation +mergeCommander=Commandant de Merge +moralSupport=Soutien moral +no=Non +opengl=OpenGL +options=Options +othello=Othello +playerName=Nom du joueur +productOwner=Responsable du produit +quit=Quitter +quitSure=Es-tu s\u00fbr ? +scrumMaster=Scrum Master +server=Serveur +serverIP=Serveur-IP +serverPort=Serveur-Port +start=D\u00e9marrer +tictactoe=Morpion +volume=Volume +windowed=Fen\u00eatre +yes=Oui -# Main Menu buttons -mainMenuSelectTicTacToe=Morpion -mainMenuSelectReversi=Reversi -mainMenuSelectSudoku=Sudoku -mainMenuSelectBattleship=Bataille navale -mainMenuSelectOther=Autres -mainMenuSelectCredits=Cr\u00E9dits -mainMenuSelectOptions=Options -mainMenuSelectQuit=Quitter - -# Quit Menu text and buttons -quitMenuTextSure=\u00CAtes-vous s\u00FBr? -quitMenuButtonYes=Oui -quitMenuButtonNo=Non - -# Language menu -languageChangeText=Choisissez une langue. -languageEnglish=Anglais -languageDutch=N\u00E9erlandais -languageGerman=Allemand -languageFrench=Fran\u00E7ais -languageItalian=Italien -languageSpanish=Espagnol -languageChinese=Chinois - -# Game select menu -gameSelectMenuLocal=Local -gameSelectMenuOnline=En ligne -gameSelectMenuEnterIP=Entrez votre adresse IP ici : - -# Game Menu -gameMenuHint=Indice -gameMenuBack=Retour - - -# Options menu -optionsMenuLabelSelectLanguage=Langue: \ No newline at end of file +chinese=\u4e2d\u6587 +dutch=Nederlands +english=English +french=Fran\u00e7ais +german=Deutsch +italian=Italiano +spanish=Espa\u00f1ol \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_it.properties b/app/src/main/resources/assets/localization/localization_it.properties index c608a87..86e91ea 100644 --- a/app/src/main/resources/assets/localization/localization_it.properties +++ b/app/src/main/resources/assets/localization/localization_it.properties @@ -1,41 +1,40 @@ -# Window title -windowTitle=Selettore giochi ISY +ai=Intelligenza Artificiale +appTitle=Selettore di Giochi ISY +back=Indietro +computer=Computer +computerDifficulty=Difficolt\u00e0 del computer +connect=Connetti +credits=Crediti +developers=Sviluppatori +fullscreen=Schermo intero +human=Umano +language=Lingua +local=Locale +localization=Localizzazione +mergeCommander=Comandante di Merge +moralSupport=Supporto morale +no=No +opengl=OpenGL +options=Opzioni +othello=Othello +playerName=Nome del giocatore +productOwner=Proprietario del prodotto +quit=Uscire +quitSure=Sei sicuro? +scrumMaster=Scrum Master +server=Server +serverIP=Server-IP +serverPort=Porta del server +start=Inizia +tictactoe=Tic Tac Toe +volume=Volume +windowed=Finestra +yes=S\u00ec -# Main Menu buttons -mainMenuSelectTicTacToe=Tris -mainMenuSelectReversi=Reversi -mainMenuSelectSudoku=Sudoku -mainMenuSelectBattleship=Battaglia navale -mainMenuSelectOther=Altro -mainMenuSelectCredits=Crediti -mainMenuSelectOptions=Opzioni -mainMenuSelectQuit=Esci - -# Quit Menu text and buttons -quitMenuTextSure=Sei sicuro? -quitMenuButtonYes=S\u00EC -quitMenuButtonNo=No - -# Language menu -languageChangeText=Scegli una lingua. -languageEnglish=Inglese -languageDutch=Olandese -languageGerman=Tedesco -languageFrench=Francese -languageItalian=Italiano -languageSpanish=Spagnolo -languageChinese=Cinese - -# Game select menu -gameSelectMenuLocal=Locale -gameSelectMenuOnline=Online -gameSelectMenuEnterIP=Inserisci qui il tuo indirizzo IP: - -# Game Menu -gameMenuHint=Suggerimento -gameMenuBack=Indietro - - - -# Options menu -optionsMenuLabelSelectLanguage=Lingua: \ No newline at end of file +chinese=\u4e2d\u6587 +dutch=Nederlands +english=English +french=Fran\u00e7ais +german=Deutsch +italian=Italiano +spanish=Espa\u00f1ol \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_nl.properties b/app/src/main/resources/assets/localization/localization_nl.properties index 2f3cf82..58604ed 100644 --- a/app/src/main/resources/assets/localization/localization_nl.properties +++ b/app/src/main/resources/assets/localization/localization_nl.properties @@ -1,40 +1,40 @@ -# Window title -windowTitle=ISY Spellen Kiezer +ai=Kunstmatige Intelligentie +appTitle=ISY Spel Kiezer +back=Terug +computer=Computer +computerDifficulty=Computermoeilijkheid +connect=Verbinden +credits=Credits +developers=Ontwikkelaars +fullscreen=Volledig scherm +human=Mens +language=Taal +local=Lokaal +localization=Lokalisatie +mergeCommander=Merge-commandant +moralSupport=Moraalsteun +no=Nee +opengl=OpenGL +options=Opties +othello=Othello +playerName=Spelernaam +productOwner=Producteigenaar +quit=Afsluiten +quitSure=Weet je het zeker? +scrumMaster=Scrum Master +server=Server +serverIP=Server-IP +serverPort=Serverpoort +start=Start +tictactoe=Boter Kaas en Eieren +volume=Volume +windowed=Venstermodus +yes=Ja -# Main Menu buttons -mainMenuSelectTicTacToe=Boter Kaas En Eieren -mainMenuSelectReversi=Reversi -mainMenuSelectSudoku=Sudoku -mainMenuSelectBattleship=Zeeslag -mainMenuSelectOther=Anders -mainMenuSelectCredits=Credits -mainMenuSelectOptions=Opties -mainMenuSelectQuit=Afsluiten - -# Quit Menu text and buttons -quitMenuTextSure=Weet je het zeker? -quitMenuButtonYes=Ja -quitMenuButtonNo=Nee - -# Language menu -languageChangeText=Kies een taal. -languageEnglish=Engels -languageDutch=Nederlands -languageGerman=Duits -languageFrench=Frans -languageItalian=Italiaans -languageSpanish=Spaans -languageChinese=Chinees - -# Game select menu -gameSelectMenuLocal=Lokaal -gameSelectMenuOnline=Online -gameSelectMenuEnterIP=Voer hier je IP-adres in: - -# Game Menu -gameMenuHint=Hint -gameMenuBack=Terug - - -# Options menu -optionsMenuLabelSelectLanguage=Taal: \ No newline at end of file +chinese=\u4e2d\u6587 +dutch=Nederlands +english=English +french=Fran\u00e7ais +german=Deutsch +italian=Italiano +spanish=Espa\u00f1ol \ No newline at end of file diff --git a/app/src/main/resources/assets/localization/localization_zh.properties b/app/src/main/resources/assets/localization/localization_zh.properties index 2e82178..898fe12 100644 --- a/app/src/main/resources/assets/localization/localization_zh.properties +++ b/app/src/main/resources/assets/localization/localization_zh.properties @@ -1,52 +1,40 @@ -# suppress inspection "LossyEncoding" for whole file -# Window title -windowTitle=ISY \u6E38\u620F\u9009\u62E9\u5668 -# ????? +ai=\u4eba\u5de5\u667a\u80fd +appTitle=ISY \u6e38\u620f\u9009\u62e9\u5668 +back=\u8fd4\u56de +computer=\u8ba1\u7b97\u673a +computerDifficulty=\u8ba1\u7b97\u673a\u96be\u5ea6 +connect=\u8fde\u63a5 +credits=\u6b23\u8d4f +developers=\u5f00\u53d1\u8005 +fullscreen=\u5168\u5c4f +human=\u4eba +language=\u8bed\u8a00 +local=\u672c\u5730 +localization=\u6d88\u606f\u5c55\u793a / \u672c\u5730\u5316 +mergeCommander=Merge \u63a7\u4e3b +moralSupport=\u795e\u7cbe\u652f\u6301 +no=\u5426 +opengl=OpenGL +options=\u9009\u9879 +othello=Othello +playerName=\u73a9\u5bb6\u540d\u79f0 +productOwner=\u54c1\u76d8\u4ea7\u54c1\u4eba +quit=\u9000\u51fa +quitSure=\u4f60\u786e\u5b9a\u5417? +scrumMaster=Scrum \u4f1a\u5458 +server=\u670d\u52a1\u5668 +serverIP=\u670d\u52a1\u5668 IP +serverPort=\u670d\u52a1\u5668 \u7aef\u53e3 +start=\u5f00\u59cb +tictactoe=Tic Tac Toe +volume=\u97f3\u91cf +windowed=\u7a97\u53e3\u6a21\u5f0f +yes=\u662f -# Main Menu buttons -mainMenuSelectTicTacToe=\u4E95\u5B57\u68CB -# ??? -mainMenuSelectReversi=\u9ED1\u767D\u68CB -# ??? -mainMenuSelectSudoku=\u6570\u72EC -# ?? -mainMenuSelectBattleship=\u6D77\u6218\u68CB -# ??? -mainMenuSelectOther=\u5176\u4ED6 -# ?? -mainMenuSelectCredits=\u5236\u4F5C\u4EBA\u5458 -# ???? -mainMenuSelectOptions=\u9009\u9879 -# ?? -mainMenuSelectQuit=\u9000\u51FA -# ?? - -# Quit Menu text and buttons -quitMenuTextSure=\u4F60\u786E\u5B9A\u5417\uFF1F -# ????? -quitMenuButtonYes=\u662F -# ? -quitMenuButtonNo=\u5426 -# ? -# Language menu -languageChangeText=\u9009\u62E9\u4E00\u79CD\u8BED\u8A00\u3002 -languageEnglish=\u82F1\u8BED -languageDutch=\u8377\u5170\u8BED -languageGerman=\u5FB7\u8BED -languageFrench=\u6CD5\u8BED -languageItalian=\u610F\u5927\u5229\u8BED -languageSpanish=\u897F\u73ED\u7259\u8BED -languageChinese=\u4E2D\u6587 - -# Game select menu -gameSelectMenuLocal=\u672C\u5730 -gameSelectMenuOnline=\u5728\u7EBF -gameSelectMenuEnterIP=\u5728\u6B64\u8F93\u5165\u4F60\u7684IP\u5730\u5740\uFF1A - -# Game Menu -gameMenuHint=\u63D0\u793A -gameMenuBack=\u8FD4\u56DE - - -# Options menu -optionsMenuLabelSelectLanguage=\u8BED\u8A00: \ No newline at end of file +chinese=\u4e2d\u6587 +dutch=Nederlands +english=English +french=Fran\u00e7ais +german=Deutsch +italian=Italiano +spanish=Espa\u00f1ol \ No newline at end of file diff --git a/app/src/main/resources/assets/style/quit.css b/app/src/main/resources/assets/style/quit.css index b49bf21..bc0615c 100644 --- a/app/src/main/resources/assets/style/quit.css +++ b/app/src/main/resources/assets/style/quit.css @@ -1,3 +1,3 @@ -.quit_background { +.background { -fx-background-color: #0000007f; } \ No newline at end of file