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/resources/assets/localization/localization_ka.properties
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package org.toop.app.layer.layers;
|
||||
|
||||
import javafx.application.Platform;
|
||||
import org.toop.app.layer.Container;
|
||||
import org.toop.app.layer.Layer;
|
||||
import org.toop.app.layer.NodeBuilder;
|
||||
@@ -26,12 +27,15 @@ public final class ConnectedLayer extends Layer {
|
||||
|
||||
this.clientId = clientId;
|
||||
this.user = user;
|
||||
reload();
|
||||
|
||||
new EventFlow().addPostEvent(new NetworkEvents.SendLogin(this.clientId, this.user)).postEvent();
|
||||
new EventFlow().listen(this::handleReceivedChallenge);
|
||||
|
||||
new Thread(this::populatePlayerList).start();
|
||||
Thread popThread = new Thread(this::populatePlayerList);
|
||||
popThread.setDaemon(false);
|
||||
popThread.start();
|
||||
|
||||
reload();
|
||||
}
|
||||
|
||||
private void populatePlayerList() {
|
||||
@@ -50,11 +54,12 @@ public final class ConnectedLayer extends Layer {
|
||||
TimerTask task = new TimerTask() {
|
||||
public void run() {
|
||||
sendGetPlayerList.postEvent();
|
||||
Platform.runLater(() -> reload());
|
||||
}
|
||||
};
|
||||
|
||||
Timer pollTimer = new Timer();
|
||||
pollTimer.schedule(task, 0L, 5000L);
|
||||
pollTimer.schedule(task, 0L, 5000L); // TODO: Block app exit, fix later
|
||||
}
|
||||
|
||||
private void sendChallenge(String oppUsername, String gameType) {
|
||||
@@ -75,9 +80,10 @@ public final class ConnectedLayer extends Layer {
|
||||
ListView<Label> players = new ListView<>();
|
||||
|
||||
for (int i = 0; i < onlinePlayers.size(); i++) {
|
||||
players.getItems().add(NodeBuilder.button(onlinePlayers.get(i), () -> {
|
||||
// get clicked player name with: onlinePlayers.get(i)
|
||||
// connection logic here
|
||||
int finalI = i;
|
||||
players.getItems().add(NodeBuilder.button(onlinePlayers.get(i), () -> {
|
||||
String clickedPlayer = onlinePlayers.get(finalI);
|
||||
sendChallenge(clickedPlayer, "tic-tac-toe");
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
@@ -38,6 +38,9 @@ public final class OptionsPopup extends Popup {
|
||||
final var volumeHeader = NodeBuilder.header(AppContext.getString("volume"));
|
||||
final var volumeSeparator = NodeBuilder.separator();
|
||||
|
||||
final var fxVolumeHeader = NodeBuilder.header(AppContext.getString("fxVolume"));
|
||||
final var fxVolumeSeparator = NodeBuilder.separator();
|
||||
|
||||
final var themeHeader = NodeBuilder.header(AppContext.getString("theme"));
|
||||
final var themeSeparator = NodeBuilder.separator();
|
||||
|
||||
@@ -47,6 +50,7 @@ public final class OptionsPopup extends Popup {
|
||||
final var optionsContainer = new VerticalContainer(5);
|
||||
optionsContainer.addNodes(languageHeader, languageChoiceBox(), languageSeparator);
|
||||
optionsContainer.addNodes(volumeHeader, volumeSlider(), volumeSeparator);
|
||||
optionsContainer.addNodes(fxVolumeHeader, fxVolumeSlider(), fxVolumeSeparator);
|
||||
optionsContainer.addNodes(themeHeader, themeChoiceBox(), themeSeparator);
|
||||
optionsContainer.addNodes(layoutSizeHeader, layoutSizeChoiceBox(), layoutSizeSeparator);
|
||||
optionsContainer.addNodes(fullscreenToggle());
|
||||
@@ -104,6 +108,14 @@ public final class OptionsPopup extends Popup {
|
||||
});
|
||||
}
|
||||
|
||||
private Slider fxVolumeSlider() {
|
||||
return NodeBuilder.slider(100, settings.getFxVolume(), (volume) -> {
|
||||
settings.setFxVolume(volume);
|
||||
new EventFlow().addPostEvent(new AudioEvents.ChangeFxVolume(volume.doubleValue())).asyncPostEvent();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private Label fullscreenToggle() {
|
||||
return NodeBuilder.toggle(AppContext.getString("windowed"), AppContext.getString("fullscreen"), !isWindowed, (fullscreen) -> {
|
||||
isWindowed = !fullscreen;
|
||||
|
||||
@@ -75,8 +75,11 @@ public final class TicTacToeLayer extends Layer {
|
||||
.addPostEvent(NetworkEvents.StartClient.class,
|
||||
information.serverIP(),
|
||||
Integer.parseInt(information.serverPort()))
|
||||
.onResponse(NetworkEvents.StartClientResponse.class, event ->
|
||||
new Thread(() -> serverGameThread(event)).start())
|
||||
.onResponse(NetworkEvents.StartClientResponse.class, event -> {
|
||||
Thread a = new Thread(() -> serverGameThread(event));
|
||||
a.setDaemon(false);
|
||||
a.start();
|
||||
})
|
||||
.postEvent();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user