diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d7a00b4..33db1d7 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -7,9 +7,8 @@
-
-
-
+
+
@@ -51,6 +50,10 @@
"accountId": "7694f583-f911-4763-8185-8ea3ed608804"
}
}
+
+
{
"customColor": "",
"associatedIndex": 1
@@ -67,7 +70,8 @@
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager": "true",
"RunOnceActivity.git.unshallow": "true",
- "git-widget-placeholder": "#25 on Merging Ticho",
+ "UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.WIDTH": "421",
+ "git-widget-placeholder": "#25 on Ticho",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
@@ -109,6 +113,15 @@
1758117514311
+
+
+ 1758131224799
+
+
+
+ 1758131224799
+
+
diff --git a/src/main/java/org/toop/Main.java b/src/main/java/org/toop/Main.java
index dce6be4..a52a7f5 100644
--- a/src/main/java/org/toop/Main.java
+++ b/src/main/java/org/toop/Main.java
@@ -18,6 +18,7 @@ public class Main {
public static void main(String[] args) throws ExecutionException, InterruptedException {
initSystems();
registerEvents();
+
/*
Window window = Window.setup(Window.API.GLFW, "Test", new Window.Size(1280, 720));
Renderer renderer = Renderer.setup(Renderer.API.OPENGL);
@@ -34,7 +35,9 @@ public class Main {
Window.start("");
*/
- GameSelectorWindow gameSelectorWindow = new GameSelectorWindow();
+ new Thread(() -> {
+ GameSelectorWindow gameSelectorWindow = new GameSelectorWindow();
+ }).start();
}
/**
diff --git a/src/main/java/org/toop/UI/GameSelectorWindow.form b/src/main/java/org/toop/UI/GameSelectorWindow.form
index 7a78dab..57610aa 100644
--- a/src/main/java/org/toop/UI/GameSelectorWindow.form
+++ b/src/main/java/org/toop/UI/GameSelectorWindow.form
@@ -17,7 +17,9 @@
-
+
+
+
@@ -46,7 +48,9 @@
-
+
+
+
diff --git a/src/main/java/org/toop/UI/GameSelectorWindow.java b/src/main/java/org/toop/UI/GameSelectorWindow.java
index 8d64e60..3b8f336 100644
--- a/src/main/java/org/toop/UI/GameSelectorWindow.java
+++ b/src/main/java/org/toop/UI/GameSelectorWindow.java
@@ -1,9 +1,13 @@
package org.toop.UI;
+import org.toop.eventbus.Events;
import org.toop.eventbus.GlobalEventBus;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.*;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
public class GameSelectorWindow extends JFrame {
@@ -34,10 +38,54 @@ public class GameSelectorWindow extends JFrame {
}
private void init() {
- connectButton.addActionListener((
- ActionEvent e) -> {
- if(!nameTextField.getText().equals("") && !ipTextField.getText().equals("") && !portTextField.getText().equals("")) {
- System.out.println(gameSelectorBox.getSelectedItem().toString()); //todo attempt connecting to the server with given ip, port and name.
+ connectButton.addActionListener((ActionEvent e) -> {
+ if( !nameTextField.getText().isEmpty() &&
+ !ipTextField.getText().isEmpty() &&
+ !portTextField.getText().isEmpty()) {
+
+ CompletableFuture serverIdFuture = new CompletableFuture<>();
+ GlobalEventBus.post(new Events.ServerEvents.StartServerRequest(
+ portTextField.getText(),
+ Objects.requireNonNull(gameSelectorBox.getSelectedItem()).toString().toLowerCase().replace(" ", ""),
+ serverIdFuture
+ ));
+ String serverId;
+ try {
+ serverId = serverIdFuture.get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ } // TODO: Better error handling to not crash the system.
+
+ CompletableFuture connectionIdFuture = new CompletableFuture<>();
+ GlobalEventBus.post(new Events.ServerEvents.StartConnectionRequest(
+ ipTextField.getText(),
+ portTextField.getText(),
+ connectionIdFuture
+ ));
+ String connectionId;
+ try {
+ connectionId = connectionIdFuture.get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ } // TODO: Better error handling to not crash the system.
+
+ CompletableFuture ticTacToeGame = new CompletableFuture<>();
+ GlobalEventBus.post(new Events.ServerEvents.CreateTicTacToeGameRequest( // TODO: Make this happen through commands send through the connection, instead of an event.
+ serverId,
+ nameTextField.getText(),
+ "P",
+ ticTacToeGame
+ ));
+ String ticTacToeGameId;
+ try {
+ ticTacToeGameId = ticTacToeGame.get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ } // TODO: Better error handling to not crash the system.
+
+
+ GlobalEventBus.post(new Events.ServerEvents.RunTicTacToeGame(serverId, ticTacToeGameId)); // TODO: attempt connecting to the server with given ip, port and name.
+
frame.remove(mainMenu);
UIGameBoard ttt = new UIGameBoard(gameSelectorBox.getSelectedItem().toString(),this);
frame.add(ttt.getTTTPanel());