From 5a9b0b1de00f0c79c0ade0398fe097c5a66b3c43 Mon Sep 17 00:00:00 2001
From: Lukas Bauer <157071544+Heady045@users.noreply.github.com>
Date: Mon, 7 Oct 2024 20:11:15 +0200
Subject: [PATCH] fix Aufgabe 11 edited class NetworkDialog to change the logic
that the checkbox works now as intended moved BattleshipServer and
ReceivedMessage into own folders to separate server from client
---
Projekte/.run/BattleshipApp (Mac).run.xml | 31 +++++-----
Projekte/.run/BattleshipApp.run.xml | 2 +-
.../pp/battleship/client/NetworkDialog.java | 56 +++++++++----------
.../client/{ => server}/BattleshipServer.java | 13 +++--
.../client/{ => server}/ReceivedMessage.java | 2 +-
.../src/main/resources/battleship.properties | 2 +-
6 files changed, 52 insertions(+), 54 deletions(-)
rename Projekte/battleship/client/src/main/java/pp/battleship/client/{ => server}/BattleshipServer.java (95%)
rename Projekte/battleship/client/src/main/java/pp/battleship/client/{ => server}/ReceivedMessage.java (92%)
diff --git a/Projekte/.run/BattleshipApp (Mac).run.xml b/Projekte/.run/BattleshipApp (Mac).run.xml
index f2d99013..8e6b3dec 100644
--- a/Projekte/.run/BattleshipApp (Mac).run.xml
+++ b/Projekte/.run/BattleshipApp (Mac).run.xml
@@ -1,18 +1,17 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Projekte/.run/BattleshipApp.run.xml b/Projekte/.run/BattleshipApp.run.xml
index 66457cd2..3ef3ae04 100644
--- a/Projekte/.run/BattleshipApp.run.xml
+++ b/Projekte/.run/BattleshipApp.run.xml
@@ -8,7 +8,7 @@
-
+
diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java
index 55938714..7b22287d 100644
--- a/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java
+++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/NetworkDialog.java
@@ -9,6 +9,7 @@
import com.simsilica.lemur.*;
import com.simsilica.lemur.component.SpringGridLayout;
+import pp.battleship.client.server.BattleshipServer;
import pp.dialog.Dialog;
import pp.dialog.DialogBuilder;
import pp.dialog.SimpleDialog;
@@ -38,6 +39,7 @@ class NetworkDialog extends SimpleDialog {
private BattleshipServer battleshipServer;
private boolean GUI = true;
private Container menu;
+ private boolean serverToggle = false;
/**
* Constructs a new NetworkDialog.
@@ -61,41 +63,20 @@ class NetworkDialog extends SimpleDialog {
*/
private void menu() {
- Button soloGame = new Button("Solo Game");
- soloGame.addClickCommands(source -> soloGame());
- Button preview = new Button("Preview");
- preview.addClickCommands(source -> preview());
Button connectGame = new Button("Multiplayer");
- connectGame.addClickCommands(source -> hostServer());
+ connectGame.addClickCommands(source -> serverConnectGUI());
Checkbox serverHost = new Checkbox("Host own Game");
- serverHost.addClickCommands(source -> connect());
+ serverHost.addClickCommands(source -> toggleServer());
+
- menu.addChild(preview);
- menu.addChild(soloGame);
menu.addChild(serverHost);
menu.addChild(connectGame);
}
/**
- * work in progress
+ * Logic for the ServerGUI
*/
- private void soloGame() {
- LOGGER.log(Level.INFO, "Starting Solo Game...");
- //TODO implement Game against KI
- }
-
- /**
- * work in progress
- */
- private void preview() {
- LOGGER.log(Level.INFO, "Starting Preview...");
- //TODO implement Preview of the Game like in the "Einführungsveranstaltung"
- }
-
- /**
- * Logic for the Menu Button Multiplayer
- */
- private void hostServer() {
+ private void serverConnectGUI() {
LOGGER.log(Level.INFO, "Hosting Server...");
if (GUI) {
@@ -114,13 +95,23 @@ private void hostServer() {
DialogBuilder.simple(app.getDialogManager())
.setTitle(lookup("server.dialog"))
.setExtension(d -> d.addChild(input))
- .setOkButton(lookup("button.connect"), d -> connectServer())
+ .setOkButton(lookup("button.connect"), d -> connect())
.setOkClose(false)
.build(this);
GUI = false;
}
}
+ /**
+ * Connect to server if serverToggle is false hosts otherwise
+ */
+ private void connect(){
+ if (serverToggle) {
+ hostServer();
+ } else {
+ connectServer();
+ }
+ }
/**
* Handles the action for the connect button in the connection dialog.
@@ -141,7 +132,7 @@ private void connectServer() {
/**
* Checks if the Server is running or starts the Server and handles Exceptions *
*/
- private void connect() {
+ private void hostServer() {
if (battleshipServer == null) {
startServer(); // Starts the server in a new thread
try {
@@ -154,6 +145,13 @@ private void connect() {
connectServer();
}
+ /**
+ * Toggle Method for Boolean
+ */
+ private void toggleServer(){
+ serverToggle = !serverToggle;
+ }
+
/**
* Allows Client to Start a Server in a new Thread
*/
@@ -162,7 +160,7 @@ private void startServer() {
try {
// Initialize and run the server
battleshipServer = new BattleshipServer();
- battleshipServer.run();
+ battleshipServer.run(Integer.parseInt(port.getText()));
} catch (Exception e) {
LOGGER.log(Level.ERROR, e);
}
diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/BattleshipServer.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/server/BattleshipServer.java
similarity index 95%
rename from Projekte/battleship/client/src/main/java/pp/battleship/client/BattleshipServer.java
rename to Projekte/battleship/client/src/main/java/pp/battleship/client/server/BattleshipServer.java
index 5f5b255c..a206cf8a 100644
--- a/Projekte/battleship/client/src/main/java/pp/battleship/client/BattleshipServer.java
+++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/server/BattleshipServer.java
@@ -5,11 +5,12 @@
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
-package pp.battleship.client;
+package pp.battleship.client.server;
import com.jme3.network.*;
import com.jme3.network.serializing.Serializer;
import pp.battleship.BattleshipConfig;
+import pp.battleship.client.server.ReceivedMessage;
import pp.battleship.game.server.Player;
import pp.battleship.game.server.ServerGameLogic;
import pp.battleship.game.server.ServerSender;
@@ -61,22 +62,22 @@ public class BattleshipServer implements MessageListener, Conn
/**
* Creates the server.
*/
- BattleshipServer() {
+ public BattleshipServer() {
config.readFromIfExists(CONFIG_FILE);
LOGGER.log(Level.INFO, "Configuration: {0}", config); //NON-NLS
logic = new ServerGameLogic(this, config);
}
- public void run() {
- startServer();
+ public void run(int port) {
+ startServer(port);
while (true)
processNextMessage();
}
- private void startServer() {
+ private void startServer(int port) {
try {
LOGGER.log(Level.INFO, "Starting server..."); //NON-NLS
- myServer = Network.createServer(config.getPort());
+ myServer = Network.createServer(port);
initializeSerializables();
myServer.start();
registerListeners();
diff --git a/Projekte/battleship/client/src/main/java/pp/battleship/client/ReceivedMessage.java b/Projekte/battleship/client/src/main/java/pp/battleship/client/server/ReceivedMessage.java
similarity index 92%
rename from Projekte/battleship/client/src/main/java/pp/battleship/client/ReceivedMessage.java
rename to Projekte/battleship/client/src/main/java/pp/battleship/client/server/ReceivedMessage.java
index 767a802c..a688fe98 100644
--- a/Projekte/battleship/client/src/main/java/pp/battleship/client/ReceivedMessage.java
+++ b/Projekte/battleship/client/src/main/java/pp/battleship/client/server/ReceivedMessage.java
@@ -5,7 +5,7 @@
// (c) Mark Minas (mark.minas@unibw.de)
////////////////////////////////////////
-package pp.battleship.client;
+package pp.battleship.client.server;
import pp.battleship.message.client.ClientInterpreter;
import pp.battleship.message.client.ClientMessage;
diff --git a/Projekte/battleship/model/src/main/resources/battleship.properties b/Projekte/battleship/model/src/main/resources/battleship.properties
index 6219bcf1..1e32682f 100644
--- a/Projekte/battleship/model/src/main/resources/battleship.properties
+++ b/Projekte/battleship/model/src/main/resources/battleship.properties
@@ -38,4 +38,4 @@ dialog.error=Error
dialog.question=Question
port.must.be.integer=Port must be an integer number
map.doesnt.fit=The map doesn't fit to this game
-map.is.invalid=The Map is invalid
\ No newline at end of file
+map.is.invalid=The Map is invalid