Spielablauf (#11)

* added Spielablauf and added various things like Card classes etc.
Co-authored-by: Tobias <tibistruppi.te@gmail.com>
This commit is contained in:
Valentin Heiserer
2023-11-28 22:27:25 +01:00
committed by GitHub
parent da81e7bac0
commit 1376fe645a
43 changed files with 2341 additions and 936 deletions

View File

@@ -0,0 +1,77 @@
package org.schafkopf;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import org.eclipse.jetty.websocket.api.Session;
import org.eclipse.jetty.websocket.api.WebSocketAdapter;
/** Class that represents one Frontend Connection. */
public class FrontendEndpoint extends WebSocketAdapter {
private final CountDownLatch closureLatch = new CountDownLatch(1);
private BackendServer backendServer;
public FrontendEndpoint(BackendServer backendServer) {
this.backendServer = backendServer;
System.out.println("new FrontendEndpoint");
}
@Override
public void onWebSocketConnect(Session session) {
super.onWebSocketConnect(session);
String clientIp = session.getRemoteAddress().toString();
System.out.println("Endpoint connected from ip: " + clientIp);
backendServer.addFrontendEndpoint(this);
}
@Override
public void onWebSocketText(String message) {
super.onWebSocketText(message);
System.out.println("Received TEXT message:" + message);
if (message.contains("startsimulation")) {
backendServer.startSchafkopfGame();
}
if (message.contains("stopsimulation")) {
backendServer.stopSchafkopfGame();
}
if (message.contains("showtrumpf")) {
backendServer.showTrumpf();
}
if (message.contains("showfarben")) {
backendServer.showFarbe();
}
if (message.contains("setgame")) {
backendServer.setGame(message);
}
}
@Override
public void onWebSocketClose(int statusCode, String reason) {
super.onWebSocketClose(statusCode, reason);
backendServer.removeFrontendEndpoint(this);
System.out.println("Socket Closed: [" + statusCode + "] " + reason);
closureLatch.countDown();
}
@Override
public void onWebSocketError(Throwable cause) {
super.onWebSocketError(cause);
cause.printStackTrace(System.err);
}
/** send a Message to the connected FrontEnd. */
public void sendMessage(String message) {
try {
getRemote().sendString(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}