mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 02:44:50 +00:00
readd: localization
This commit is contained in:
18
.idea/resourceBundles.xml
generated
18
.idea/resourceBundles.xml
generated
@@ -1,8 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ResourceBundleManager">
|
||||
<file url="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_de.properties" />
|
||||
<file url="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_en.properties" />
|
||||
<file url="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_es.properties" />
|
||||
<file url="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_fr.properties" />
|
||||
<file url="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_it.properties" />
|
||||
<file url="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_nl.properties" />
|
||||
<file url="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_zh.properties" />
|
||||
<custom-resource-bundle>
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/Localization.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/Localization_de.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/Localization_es.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/Localization_fr.properties" />
|
||||
@@ -11,5 +17,15 @@
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/Localization_zh.properties" />
|
||||
<base-name>localization</base-name>
|
||||
</custom-resource-bundle>
|
||||
<custom-resource-bundle>
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_de.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_en.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_es.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_fr.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_it.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_nl.properties" />
|
||||
<file value="file://$PROJECT_DIR$/app/src/main/resources/assets/localization/localization_zh.properties" />
|
||||
<base-name>localization</base-name>
|
||||
</custom-resource-bundle>
|
||||
</component>
|
||||
</project>
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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 {}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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());
|
||||
});
|
||||
|
||||
|
||||
@@ -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());
|
||||
});
|
||||
|
||||
|
||||
@@ -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<TicTacToe>());
|
||||
});
|
||||
|
||||
gamesContainer.addButton("Othello", () -> {
|
||||
gamesContainer.addButton(AppContext.getString("othello"), () -> {
|
||||
App.activate(new MultiplayerLayer<Othello>());
|
||||
});
|
||||
|
||||
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();
|
||||
});
|
||||
|
||||
|
||||
@@ -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<T extends TurnBasedGame> 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<T extends TurnBasedGame> 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<T extends TurnBasedGame> extends Layer {
|
||||
|
||||
final Container controlContainer = new VerticalContainer(5);
|
||||
|
||||
controlContainer.addButton("Back", () -> {
|
||||
controlContainer.addButton(AppContext.getString("back"), () -> {
|
||||
App.activate(new MainLayer());
|
||||
});
|
||||
|
||||
|
||||
@@ -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<Locale> 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);
|
||||
});
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
|
||||
@@ -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));
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
@@ -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<String> 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));
|
||||
// });
|
||||
//
|
||||
// }
|
||||
// }
|
||||
@@ -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));
|
||||
// });
|
||||
//
|
||||
// }
|
||||
// }
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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<Locale> languageSelectorCreation() {
|
||||
// final ChoiceBox<Locale> 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<GraphicsDevice> screenDeviceSelectorCreation() {
|
||||
// GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
// GraphicsDevice[] devices = ge.getScreenDevices();
|
||||
// final ChoiceBox<GraphicsDevice> 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<DisplayMode> displayModeSelectorCreation() {
|
||||
// final ChoiceBox<DisplayMode> 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;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
@@ -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));
|
||||
// });
|
||||
//
|
||||
// }
|
||||
// }
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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:
|
||||
chinese=\u4e2d\u6587
|
||||
dutch=Nederlands
|
||||
english=English
|
||||
french=Fran\u00e7ais
|
||||
german=Deutsch
|
||||
italian=Italiano
|
||||
spanish=Espa\u00f1ol
|
||||
@@ -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
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
chinese=\u4e2d\u6587
|
||||
dutch=Nederlands
|
||||
english=English
|
||||
french=Fran\u00e7ais
|
||||
german=Deutsch
|
||||
italian=Italiano
|
||||
spanish=Espa\u00f1ol
|
||||
@@ -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:
|
||||
chinese=\u4e2d\u6587
|
||||
dutch=Nederlands
|
||||
english=English
|
||||
french=Fran\u00e7ais
|
||||
german=Deutsch
|
||||
italian=Italiano
|
||||
spanish=Espa\u00f1ol
|
||||
@@ -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:
|
||||
chinese=\u4e2d\u6587
|
||||
dutch=Nederlands
|
||||
english=English
|
||||
french=Fran\u00e7ais
|
||||
german=Deutsch
|
||||
italian=Italiano
|
||||
spanish=Espa\u00f1ol
|
||||
@@ -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:
|
||||
chinese=\u4e2d\u6587
|
||||
dutch=Nederlands
|
||||
english=English
|
||||
french=Fran\u00e7ais
|
||||
german=Deutsch
|
||||
italian=Italiano
|
||||
spanish=Espa\u00f1ol
|
||||
@@ -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:
|
||||
chinese=\u4e2d\u6587
|
||||
dutch=Nederlands
|
||||
english=English
|
||||
french=Fran\u00e7ais
|
||||
german=Deutsch
|
||||
italian=Italiano
|
||||
spanish=Espa\u00f1ol
|
||||
@@ -1,3 +1,3 @@
|
||||
.quit_background {
|
||||
.background {
|
||||
-fx-background-color: #0000007f;
|
||||
}
|
||||
Reference in New Issue
Block a user