mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 19:04:49 +00:00
Merge remote-tracking branch 'origin/UI' into UI
# Conflicts: # app/src/main/java/org/toop/app/menu/CreditsMenu.java # app/src/main/java/org/toop/app/menu/MainMenu.java # app/src/main/java/org/toop/app/menu/OptionsMenu.java
This commit is contained in:
@@ -1,32 +1,100 @@
|
||||
// package org.toop.app.menu;
|
||||
//
|
||||
// import javafx.application.Platform;
|
||||
// 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 final class CreditsMenu extends Menu {
|
||||
// private Locale currentLocale = AppContext.getLocale();
|
||||
// private LocalizationAsset loc = ResourceManager.get("localization_en_us.properties");
|
||||
// public CreditsMenu() {
|
||||
// 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();
|
||||
// //credits.setText(loc.getString("credits",currentLocale));
|
||||
// });
|
||||
//
|
||||
// }
|
||||
// }
|
||||
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,65 +1,69 @@
|
||||
// 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.local.AppContext;
|
||||
//
|
||||
// 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));
|
||||
// });
|
||||
//
|
||||
// }
|
||||
// }
|
||||
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));
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,8 @@ 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;
|
||||
@@ -34,7 +36,10 @@ public abstract class Menu {
|
||||
|
||||
public Button createButton(String css, String x, Runnable runnable) {
|
||||
final Button button = new Button(x);
|
||||
button.setOnAction(_ -> runnable.run());
|
||||
button.setOnAction(_ -> {
|
||||
new EventFlow().addPostEvent(new AudioEvents.clickButton()).asyncPostEvent();
|
||||
runnable.run();
|
||||
});
|
||||
button.getStyleClass().add(css);
|
||||
|
||||
return button;
|
||||
|
||||
@@ -1,142 +1,174 @@
|
||||
// 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<Locale>() {
|
||||
// @Override
|
||||
// public String toString(Locale locale) {
|
||||
// return locale.getDisplayName();
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public Locale fromString(String string) {
|
||||
// return null;
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// selectLanguage.setOnAction(event -> {
|
||||
// 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.setOnAction(event -> {
|
||||
// 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);
|
||||
// }
|
||||
// return selectWindowSize;
|
||||
// }
|
||||
//
|
||||
// private CheckBox selectFullscreenCreation() {
|
||||
// final CheckBox setFullscreen = new CheckBox("Fullscreen");
|
||||
// setFullscreen.setSelected(App.isFullscreen());
|
||||
// setFullscreen.setOnAction(event -> {
|
||||
// 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);
|
||||
// }).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()));
|
||||
//
|
||||
// volumeSlider.valueProperty().addListener((obs, oldVal, newVal) -> {
|
||||
// valueLabel.setText(String.valueOf(newVal.intValue()));
|
||||
// new EventFlow().addPostEvent(new AudioEvents.ChangeVolume(newVal.doubleValue()/100.0))
|
||||
// .asyncPostEvent();
|
||||
// });
|
||||
// return volumeSlider;
|
||||
// }
|
||||
//
|
||||
// }
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user