Make fit for beta release (#51)

* removed

* edited a lot of stuff
This commit is contained in:
Valentin Heiserer
2024-04-26 01:41:50 +02:00
committed by GitHub
parent 2e5a42b6d3
commit 539e29dc56
94 changed files with 843 additions and 8636 deletions

View File

@@ -48,15 +48,13 @@ public class BackendServer implements MessageSender {
// Configure CORS settings
configureCors(context);
if (openFrontend) {
URL webContentUrl = getClass().getClassLoader().getResource("web-content");
if (webContentUrl == null) {
throw new RuntimeException("Unable to find 'web-content' directory");
}
String webContentPath = webContentUrl.toExternalForm();
context.setResourceBase(webContentPath);
context.addServlet(new ServletHolder("frontend", DefaultServlet.class), "/");
URL webContentUrl = getClass().getClassLoader().getResource("web-content");
if (webContentUrl == null) {
throw new RuntimeException("Unable to find 'web-content' directory");
}
String webContentPath = webContentUrl.toExternalForm();
context.setResourceBase(webContentPath);
context.addServlet(new ServletHolder("frontend", DefaultServlet.class), "/");
// Configure specific websocket behavior
JettyWebSocketServletContainerInitializer.configure(

View File

@@ -1,6 +1,5 @@
package org.schafkopf;
import com.google.gson.JsonObject;
import java.net.URI;
import java.util.concurrent.CountDownLatch;
import org.eclipse.jetty.websocket.api.Session;
@@ -13,7 +12,6 @@ import org.eclipse.jetty.websocket.client.ClientUpgradeRequest;
import org.eclipse.jetty.websocket.client.WebSocketClient;
import org.schafkopf.SchafkopfMessage.SchafkopfBaseMessage;
import org.schafkopf.SchafkopfMessage.SchafkopfMessageOrigin;
import org.schafkopf.SchafkopfMessage.SchafkopfMessageType;
/**
* Main Class that represents the Backend Server.
@@ -75,7 +73,6 @@ public class DedicatedServerConnection implements MessageSender {
try {
session.getRemote().sendString(
new SchafkopfMessage(SchafkopfMessageOrigin.BACKEND, message).getMessageAsString());
System.out.println("Sent message to server: " + message);
} catch (Exception e) {
System.err.println("Error sending message: " + e.getMessage());
}
@@ -116,26 +113,5 @@ public class DedicatedServerConnection implements MessageSender {
}
});
connectionThread.start();
start();
}
/**
* Class that represents one Frontend Connection.
*/
public void start() {
JsonObject messageObject = new JsonObject();
messageObject.addProperty("message_type", "START_GAME");
sendMessage(new SchafkopfBaseMessage(SchafkopfMessageType.START_GAME));
}
/**
* Class that represents one Frontend Connection.
*/
public void join() {
JsonObject messageObject = new JsonObject();
messageObject.addProperty("message_type", "JOIN_GAME");
sendMessage(new SchafkopfBaseMessage(SchafkopfMessageType.JOIN_GAME));
}
}

View File

@@ -32,49 +32,90 @@ public class SchafkopfClient implements MessageListener {
public void receiveMessage(String jsonMessage) {
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonMessage, JsonObject.class);
// Check if the origin is "frontend"
// Check if the origin is "frontend" or "dedicated_server"
String origin = jsonObject.get("origin").getAsString();
if (SchafkopfMessageOrigin.FRONTEND.toString().equals(origin)) {
JsonObject message = jsonObject.getAsJsonObject("message");
JsonObject content = message.getAsJsonObject("content");
String messageType = message.get("message_type").getAsString();
if (SchafkopfMessageType.REQUEST_SERVER_CONNECTION.toString().equals(messageType)) {
switch (SchafkopfMessageOrigin.valueOf(origin)) {
case FRONTEND:
handleFrontendMessage(jsonObject);
break;
case DEDICATED_SERVER:
handleDedicatedServerMessage(jsonObject);
break;
default:
// Handle messages from unknown origins
System.out.println("Received message from unknown origin: " + origin);
break;
}
}
private void handleFrontendMessage(JsonObject jsonObject) {
JsonObject message = jsonObject.getAsJsonObject("message");
JsonObject content = message.getAsJsonObject("content");
String messageType = message.get("message_type").getAsString();
switch (SchafkopfMessageType.valueOf(messageType)) {
case REQUEST_SERVER_CONNECTION:
dedicatedServerConnection = new DedicatedServerConnection(
content.get("serverAddress").getAsString(),
this);
} else if ("JOIN_GAME".equals(messageType)) {
dedicatedServerConnection.join();
} else if ("START_DEDICATED_GAME".equals(messageType)) {
dedicatedServerConnection.start();
} else if (SchafkopfMessageType.PLAYER_CARD.toString().equals(messageType)) {
break;
case PLAYER_CARD:
case CREATE_ONLINE_GAME:
case JOIN_ONLINE_GAME:
case SET_PLAYER_NAME:
dedicatedServerConnection.sendMessage(
new SchafkopfBaseMessage(SchafkopfMessageType.PLAYER_CARD, content));
}
new SchafkopfBaseMessage(SchafkopfMessageType.valueOf(messageType), content));
break;
case LIST_ONLINE_GAMES:
case GET_ONLINE_GAME:
case SET_STATUS_READY:
case LEAVE_ONLINE_GAME:
case START_DEDICATED_GAME:
dedicatedServerConnection.sendMessage(
new SchafkopfBaseMessage(SchafkopfMessageType.valueOf(messageType)));
break;
default:
// Handle unknown message types
System.out.println("Received unknown message type from frontend server: " + messageType);
break;
}
System.out.println("Received message from frontend server: " + jsonMessage);
System.out.println("Received message from frontend: " + jsonObject);
}
} else if (SchafkopfMessageOrigin.DEDICATED_SERVER.toString().equals(origin)) {
private void handleDedicatedServerMessage(JsonObject jsonObject) {
JsonObject message = jsonObject.getAsJsonObject("message");
JsonObject content = message.getAsJsonObject("content");
String messageType = message.get("message_type").getAsString();
JsonObject message = jsonObject.getAsJsonObject("message");
JsonObject content = message.getAsJsonObject("content");
String messageType = message.get("message_type").getAsString();
if (SchafkopfMessageType.GET_CARD_ONLINE_PLAYER.toString().equals(messageType)) {
System.out.println("Received get_card_online_player message from dedicated server.");
} else if (SchafkopfMessageType.GAME_STATE.toString().equals(messageType)) {
switch (SchafkopfMessageType.valueOf(messageType)) {
case GET_CARD_ONLINE_PLAYER:
case HEARTBEAT_ACK:
break;
case GAME_STATE:
case ONLINE_PLAYER_HAND:
case UNKNOWN_ERROR:
case INFO_MESSAGE:
case GET_ONLINE_GAME:
case LIST_ONLINE_GAMES:
backendServer.sendMessage(
new SchafkopfBaseMessage(SchafkopfMessage.SchafkopfMessageType.GAME_STATE, content));
} else if (SchafkopfMessageType.ONLINE_PLAYER_HAND.toString().equals(messageType)) {
new SchafkopfBaseMessage(SchafkopfMessageType.valueOf(messageType), content));
break;
case SERVER_CONNECTION_SUCCESSFUL:
case GAME_START_READY:
backendServer.sendMessage(
new SchafkopfBaseMessage(SchafkopfMessage.SchafkopfMessageType.ONLINE_PLAYER_HAND,
content));
} else if (SchafkopfMessageType.SERVER_CONNECTION_SUCCESSFUL.toString().equals(messageType)) {
System.out.println("Received server_connection_successful message from dedicated server.");
backendServer.sendMessage(new SchafkopfBaseMessage(
SchafkopfMessage.SchafkopfMessageType.SERVER_CONNECTION_SUCCESSFUL));
} else if (SchafkopfMessageType.HEARTBEAT_ACK.toString().equals(messageType)) {
return;
}
System.out.println("Received message from dedicated server: " + jsonMessage);
new SchafkopfBaseMessage(SchafkopfMessageType.valueOf(messageType)));
break;
default:
// Handle unknown message types
System.out.println("Received unknown message type from dedicated server: " + messageType);
break;
}
if (!messageType.equals("HEARTBEAT_ACK")) {
System.out.println("Received message from dedicated server: " + jsonObject);
}
}
}

View File

@@ -1,6 +1,5 @@
package org.schafkopf.player;
import org.schafkopf.BackendServer;
import org.schafkopf.cardreader.CardReader;
import org.schafkopf.karte.Karte;
import org.schafkopf.karte.KartenListe;
@@ -15,6 +14,7 @@ public class LocalPlayer extends Player {
private final CardReader cardReader;
public LocalPlayer(CardReader cardReader) {
super("Local Player");
this.cardReader = cardReader;
}
@@ -23,7 +23,9 @@ public class LocalPlayer extends Player {
return wartetAufKarte();
}
/** Waits for a Card and returns a Karte Object. */
/**
* Waits for a Card and returns a Karte Object.
*/
private Karte wartetAufKarte() {
String uid = null;
System.out.println("Starte Warten auf Karte");