mirror of
https://github.com/Vale54321/schafkopf-bot.git
synced 2025-12-16 03:39:34 +01:00
committed by
GitHub
parent
2e5a42b6d3
commit
539e29dc56
@@ -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(
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user