merge Development into test #27
@@ -6,6 +6,10 @@
|
|||||||
import pp.mdga.client.animation.AnimationHandler;
|
import pp.mdga.client.animation.AnimationHandler;
|
||||||
import com.jme3.system.AppSettings;
|
import com.jme3.system.AppSettings;
|
||||||
import pp.mdga.client.view.*;
|
import pp.mdga.client.view.*;
|
||||||
|
import pp.mdga.message.server.ServerInterpreter;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main application class for the MdgaApp game.
|
* Main application class for the MdgaApp game.
|
||||||
@@ -49,6 +53,18 @@ public class MdgaApp extends SimpleApplication {
|
|||||||
/** The ceremony view. */
|
/** The ceremony view. */
|
||||||
private MdgaView ceremonyView;
|
private MdgaView ceremonyView;
|
||||||
|
|
||||||
|
/** The client game logic. */
|
||||||
|
private final ClientGameLogic clientGameLogic;
|
||||||
|
|
||||||
|
private ExecutorService executor;
|
||||||
|
|
||||||
|
private ServerConnection networkConnection;
|
||||||
|
|
||||||
|
private MdgaApp() {
|
||||||
|
networkConnection = new NetworkSupport(this);
|
||||||
|
this.clientGameLogic = new ClientGameLogic(networkConnection);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main entry point for the application.
|
* Main entry point for the application.
|
||||||
* Configures settings and starts the application.
|
* Configures settings and starts the application.
|
||||||
@@ -59,8 +75,8 @@ public static void main(String[] args) {
|
|||||||
AppSettings settings = new AppSettings(true);
|
AppSettings settings = new AppSettings(true);
|
||||||
settings.setSamples(128);
|
settings.setSamples(128);
|
||||||
settings.setCenterWindow(true);
|
settings.setCenterWindow(true);
|
||||||
settings.setWidth(1920);
|
settings.setWidth(1080);
|
||||||
settings.setHeight(1080);
|
settings.setHeight(720);
|
||||||
settings.setVSync(false);
|
settings.setVSync(false);
|
||||||
|
|
||||||
MdgaApp app = new MdgaApp();
|
MdgaApp app = new MdgaApp();
|
||||||
@@ -219,5 +235,22 @@ public NotificationSynchronizer getNotificationSynchronizer() {
|
|||||||
public void setup() {
|
public void setup() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ClientGameLogic getGameLogic() {
|
||||||
|
return clientGameLogic;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ExecutorService getExecutor() {
|
||||||
|
if (this.executor == null) {
|
||||||
|
this.executor = Executors.newCachedThreadPool();
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.executor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServerConnection getNetworkSupport() {
|
||||||
|
return networkConnection;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package pp.mdga.client;
|
package pp.mdga.client;
|
||||||
|
|
||||||
import pp.mdga.client.acoustic.MdgaSound;
|
import pp.mdga.client.acoustic.MdgaSound;
|
||||||
|
import pp.mdga.client.server.MdgaServer;
|
||||||
import pp.mdga.client.view.CeremonyView;
|
import pp.mdga.client.view.CeremonyView;
|
||||||
import pp.mdga.client.view.GameView;
|
import pp.mdga.client.view.GameView;
|
||||||
import pp.mdga.client.view.LobbyView;
|
import pp.mdga.client.view.LobbyView;
|
||||||
@@ -31,7 +32,7 @@ public class ModelSynchronizer {
|
|||||||
private int test = 0;
|
private int test = 0;
|
||||||
|
|
||||||
public void animationEnd() {
|
public void animationEnd() {
|
||||||
|
app.getGameLogic().selectAnimationEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectSwap(UUID a, UUID b) {
|
public void selectSwap(UUID a, UUID b) {
|
||||||
@@ -82,13 +83,14 @@ public void confirm() {
|
|||||||
GameView gameView = (GameView) app.getView();
|
GameView gameView = (GameView) app.getView();
|
||||||
|
|
||||||
if(a != null && b != null) {
|
if(a != null && b != null) {
|
||||||
//swap
|
selectPiece(a);
|
||||||
|
selectPiece(b);
|
||||||
gameView.getBoardHandler().clearSelectable();
|
gameView.getBoardHandler().clearSelectable();
|
||||||
} else if (a != null) {
|
} else if (a != null) {
|
||||||
//piece
|
selectPiece(a);
|
||||||
gameView.getBoardHandler().clearSelectable();
|
gameView.getBoardHandler().clearSelectable();
|
||||||
} else if (card != null){
|
} else if (card != null){
|
||||||
//card
|
selectCard(card);
|
||||||
gameView.getGuiHandler().clearSelectableCards();
|
gameView.getGuiHandler().clearSelectableCards();
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("nothing to confirm");
|
throw new RuntimeException("nothing to confirm");
|
||||||
@@ -98,50 +100,33 @@ public void confirm() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void selectTsk(Color color) {
|
public void selectTsk(Color color) {
|
||||||
// TODO call from somewhere
|
app.getGameLogic().selectTsk(color);
|
||||||
LOGGER.log(Level.INFO, "selectTsk: {0}", color);
|
|
||||||
LobbyView view = (LobbyView) app.getView();
|
|
||||||
view.setTaken(color, true, true, "OwnPlayerName");
|
|
||||||
testColor = color;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unselectTsk() {
|
public void unselectTsk() {
|
||||||
// TODO call from somewhere
|
app.getGameLogic().selectTsk(Color.NONE);
|
||||||
LOGGER.log(Level.INFO, "unselectTsk");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rolledDice() {
|
public void rolledDice() {
|
||||||
// TODO call from somewhere
|
app.getGameLogic().selectDice();
|
||||||
LOGGER.log(Level.INFO, "rolledDice");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
// TODO call from somewhere
|
// TODO call from somewhere
|
||||||
LOGGER.log(Level.INFO, "setName: {0}", name);
|
LOGGER.log(Level.INFO, "setName: {0}", name);
|
||||||
|
app.getGameLogic().selectName(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setReady(boolean ready) {
|
public void setReady(boolean ready) {
|
||||||
LOGGER.log(Level.INFO, "setReady");
|
app.getGameLogic().selectReady(ready);
|
||||||
LobbyView view = (LobbyView) app.getView();
|
|
||||||
view.setReady(testColor, ready);
|
|
||||||
test++;
|
|
||||||
|
|
||||||
if(test > 2) {
|
|
||||||
test = 0;
|
|
||||||
enter(MdgaState.GAME);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHost(int port) {
|
public void setHost(int port) {
|
||||||
// TODO call from somewhere
|
app.getGameLogic().selectJoin("");
|
||||||
LOGGER.log(Level.INFO, "setHost: {0}", port);
|
|
||||||
enter(MdgaState.LOBBY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setJoin(String ip, int port) {
|
public void setJoin(String ip, int port) {
|
||||||
// TODO call from somewhere
|
app.getGameLogic().selectJoin(ip);
|
||||||
LOGGER.log(Level.INFO, "setJoin with IP: {0}, Port: {1}", new Object[]{ip, port});
|
|
||||||
enter(MdgaState.LOBBY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void leave() {
|
public void leave() {
|
||||||
|
|||||||
@@ -0,0 +1,91 @@
|
|||||||
|
package pp.mdga.client;
|
||||||
|
|
||||||
|
import com.jme3.network.*;
|
||||||
|
import pp.mdga.message.client.ClientMessage;
|
||||||
|
import pp.mdga.message.server.ServerMessage;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class NetworkSupport implements MessageListener<Client>, ClientStateListener, ServerConnection {
|
||||||
|
private static final System.Logger LOGGER = System.getLogger(NetworkSupport.class.getName());
|
||||||
|
private final MdgaApp app;
|
||||||
|
private Client client;
|
||||||
|
|
||||||
|
public NetworkSupport(MdgaApp app) {
|
||||||
|
this.app = app;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MdgaApp getApp() {
|
||||||
|
return this.app;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isConnected() {
|
||||||
|
return this.client != null && this.client.isConnected();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connect() {
|
||||||
|
if (this.client != null) {
|
||||||
|
throw new IllegalStateException("trying to join a game again");
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
this.initNetwork("localhost", 2345);
|
||||||
|
} catch (IOException e) {
|
||||||
|
LOGGER.log(System.Logger.Level.ERROR, "could not connect to server", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void disconnect() {
|
||||||
|
if (this.client != null) {
|
||||||
|
this.client.close();
|
||||||
|
this.client = null;
|
||||||
|
LOGGER.log(System.Logger.Level.INFO, "client closed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initNetwork(String host, int port) throws IOException {
|
||||||
|
if (this.client != null) {
|
||||||
|
throw new IllegalStateException("trying to join a game again");
|
||||||
|
} else {
|
||||||
|
this.client = Network.connectToServer(host, port);
|
||||||
|
this.client.start();
|
||||||
|
this.client.addMessageListener(this);
|
||||||
|
this.client.addClientStateListener(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void messageReceived(Client client, Message message) {
|
||||||
|
LOGGER.log(System.Logger.Level.INFO, "message received from server: {0}", new Object[]{message});
|
||||||
|
if (message instanceof ServerMessage serverMessage) {
|
||||||
|
this.app.enqueue(() -> serverMessage.accept(this.app.getGameLogic()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clientConnected(Client client) {
|
||||||
|
LOGGER.log(System.Logger.Level.INFO, "Client connected: {0}", new Object[]{client});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clientDisconnected(Client client, ClientStateListener.DisconnectInfo disconnectInfo) {
|
||||||
|
LOGGER.log(System.Logger.Level.INFO, "Client {0} disconnected: {1}", new Object[]{client, disconnectInfo});
|
||||||
|
if (this.client != client) {
|
||||||
|
throw new IllegalArgumentException("parameter value must be client");
|
||||||
|
} else {
|
||||||
|
LOGGER.log(System.Logger.Level.INFO, "client still connected: {0}", new Object[]{client.isConnected()});
|
||||||
|
this.client = null;
|
||||||
|
this.disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void send(ClientMessage message) {
|
||||||
|
LOGGER.log(System.Logger.Level.INFO, "sending {0}", new Object[]{message});
|
||||||
|
if (this.client == null) {
|
||||||
|
LOGGER.log(System.Logger.Level.WARNING, "client not connected");
|
||||||
|
} else {
|
||||||
|
this.client.send(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -24,8 +24,8 @@ public void addTestNotification(Notification n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void update() {
|
public void update() {
|
||||||
//TODO fetch model notifications
|
Notification n = app.getGameLogic().getNotification();
|
||||||
for (Notification n : notifications) {
|
if(n != null) {
|
||||||
switch (app.getState()) {
|
switch (app.getState()) {
|
||||||
case MAIN:
|
case MAIN:
|
||||||
handleMain(n);
|
handleMain(n);
|
||||||
@@ -43,14 +43,13 @@ public void update() {
|
|||||||
throw new RuntimeException("no notification expected: " + n.toString());
|
throw new RuntimeException("no notification expected: " + n.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
notifications.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleMain(Notification notification) {
|
private void handleMain(Notification notification) {
|
||||||
if (notification instanceof LobbyDialogNotification) {
|
if (notification instanceof LobbyDialogNotification) {
|
||||||
app.enter(MdgaState.LOBBY);
|
app.enter(MdgaState.LOBBY);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("notification not expected: " + notification.toString());
|
throw new RuntimeException("notification not expected: ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,8 +61,8 @@ private void handleLobby(Notification notification) {
|
|||||||
lobbyView.setTaken(n.getColor(), true, false, n.getName());
|
lobbyView.setTaken(n.getColor(), true, false, n.getName());
|
||||||
} else if (notification instanceof TskUnselectNotification n) {
|
} else if (notification instanceof TskUnselectNotification n) {
|
||||||
lobbyView.setTaken(n.getColor(), false, false, null);
|
lobbyView.setTaken(n.getColor(), false, false, null);
|
||||||
//} else if(notification instanceof LobbyReadyNotification lobbyReadyNotification) {
|
} else if(notification instanceof LobbyReadyNotification lobbyReadyNotification) {
|
||||||
//lobbyView.setReady(lobbyReadyNotification.getColor(), lobbyReadyNotification.isReady()):
|
lobbyView.setReady(lobbyReadyNotification.getColor(), lobbyReadyNotification.isReady());
|
||||||
} else if (notification instanceof GameNotification) {
|
} else if (notification instanceof GameNotification) {
|
||||||
app.enter(MdgaState.GAME);
|
app.enter(MdgaState.GAME);
|
||||||
} else {
|
} else {
|
||||||
@@ -165,7 +164,7 @@ private void handleGame(Notification notification) {
|
|||||||
} else if (notification instanceof WaitMoveNotification) {
|
} else if (notification instanceof WaitMoveNotification) {
|
||||||
//TODO ???
|
//TODO ???
|
||||||
} else if (notification instanceof SelectableMoveNotification n) {
|
} else if (notification instanceof SelectableMoveNotification n) {
|
||||||
boardHandler.outlineMove(n.getPieces(), n.getMoveIndexe(), n.getHomeMoves());
|
boardHandler.outlineMove(n.getPieces(), n.getMoveIndices(), n.getHomeMoves());
|
||||||
} else if (notification instanceof SelectableSwapNotification n) {
|
} else if (notification instanceof SelectableSwapNotification n) {
|
||||||
boardHandler.outlineSwap(n.getOwnPieces(), n.getEnemyPieces());
|
boardHandler.outlineSwap(n.getOwnPieces(), n.getEnemyPieces());
|
||||||
// } //else if (notification instanceof SelectableShieldNotification n) {
|
// } //else if (notification instanceof SelectableShieldNotification n) {
|
||||||
|
|||||||
@@ -317,7 +317,6 @@ public void setTaken(Taken taken, String name) {
|
|||||||
} else {
|
} else {
|
||||||
label.setText(name);
|
label.setText(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
onUnHover();
|
onUnHover();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import com.jme3.math.Vector2f;
|
import com.jme3.math.Vector2f;
|
||||||
import com.jme3.scene.Node;
|
import com.jme3.scene.Node;
|
||||||
import pp.mdga.client.MdgaApp;
|
import pp.mdga.client.MdgaApp;
|
||||||
|
import pp.mdga.client.NetworkSupport;
|
||||||
import pp.mdga.client.button.ButtonLeft;
|
import pp.mdga.client.button.ButtonLeft;
|
||||||
import pp.mdga.client.button.ButtonRight;
|
import pp.mdga.client.button.ButtonRight;
|
||||||
import pp.mdga.client.button.InputButton;
|
import pp.mdga.client.button.InputButton;
|
||||||
@@ -11,7 +12,7 @@
|
|||||||
|
|
||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
|
|
||||||
public class HostDialog extends Dialog {
|
public class HostDialog extends NetworkDialog {
|
||||||
private InputButton portInput;
|
private InputButton portInput;
|
||||||
|
|
||||||
private ButtonRight hostButton;
|
private ButtonRight hostButton;
|
||||||
@@ -22,7 +23,7 @@ public class HostDialog extends Dialog {
|
|||||||
private Preferences prefs = Preferences.userNodeForPackage(JoinDialog.class);
|
private Preferences prefs = Preferences.userNodeForPackage(JoinDialog.class);
|
||||||
|
|
||||||
public HostDialog(MdgaApp app, Node node, MainView view) {
|
public HostDialog(MdgaApp app, Node node, MainView view) {
|
||||||
super(app, node);
|
super(app, node, (NetworkSupport) app.getNetworkSupport());
|
||||||
|
|
||||||
this.view = view;
|
this.view = view;
|
||||||
|
|
||||||
@@ -58,6 +59,7 @@ public void update() {
|
|||||||
|
|
||||||
public String getPort() {
|
public String getPort() {
|
||||||
prefs.put("hostPort", portInput.getString());
|
prefs.put("hostPort", portInput.getString());
|
||||||
|
setPortNumber(Integer.parseInt(portInput.getString()));
|
||||||
return portInput.getString();
|
return portInput.getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,4 +67,13 @@ public void resetPort() {
|
|||||||
portInput.reset();
|
portInput.reset();
|
||||||
prefs.put("hostPort", "11111");
|
prefs.put("hostPort", "11111");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void hostServer() {
|
||||||
|
startServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void connectServerAsClient() {
|
||||||
|
connectServer();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import com.jme3.math.Vector2f;
|
import com.jme3.math.Vector2f;
|
||||||
import com.jme3.scene.Node;
|
import com.jme3.scene.Node;
|
||||||
import pp.mdga.client.MdgaApp;
|
import pp.mdga.client.MdgaApp;
|
||||||
|
import pp.mdga.client.NetworkSupport;
|
||||||
import pp.mdga.client.acoustic.AcousticHandler;
|
import pp.mdga.client.acoustic.AcousticHandler;
|
||||||
import pp.mdga.client.button.ButtonLeft;
|
import pp.mdga.client.button.ButtonLeft;
|
||||||
import pp.mdga.client.button.ButtonRight;
|
import pp.mdga.client.button.ButtonRight;
|
||||||
@@ -12,7 +13,7 @@
|
|||||||
|
|
||||||
import java.util.prefs.Preferences;
|
import java.util.prefs.Preferences;
|
||||||
|
|
||||||
public class JoinDialog extends Dialog {
|
public class JoinDialog extends NetworkDialog {
|
||||||
private InputButton ipInput;
|
private InputButton ipInput;
|
||||||
private InputButton portInput;
|
private InputButton portInput;
|
||||||
|
|
||||||
@@ -24,7 +25,7 @@ public class JoinDialog extends Dialog {
|
|||||||
private Preferences prefs = Preferences.userNodeForPackage(JoinDialog.class);
|
private Preferences prefs = Preferences.userNodeForPackage(JoinDialog.class);
|
||||||
|
|
||||||
public JoinDialog(MdgaApp app, Node node, MainView view) {
|
public JoinDialog(MdgaApp app, Node node, MainView view) {
|
||||||
super(app, node);
|
super(app, node, (NetworkSupport) app.getNetworkSupport());
|
||||||
|
|
||||||
this.view = view;
|
this.view = view;
|
||||||
|
|
||||||
@@ -68,6 +69,7 @@ public void update() {
|
|||||||
|
|
||||||
public String getIpt() {
|
public String getIpt() {
|
||||||
prefs.put("joinIp", ipInput.getString());
|
prefs.put("joinIp", ipInput.getString());
|
||||||
|
setHostname(ipInput.getString());
|
||||||
return ipInput.getString();
|
return ipInput.getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,6 +80,7 @@ public void resetIp() {
|
|||||||
|
|
||||||
public String getPort() {
|
public String getPort() {
|
||||||
prefs.put("joinPort", portInput.getString());
|
prefs.put("joinPort", portInput.getString());
|
||||||
|
setPortNumber(Integer.parseInt(portInput.getString()));
|
||||||
return portInput.getString();
|
return portInput.getString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,4 +88,8 @@ public void resetPort() {
|
|||||||
portInput.reset();
|
portInput.reset();
|
||||||
prefs.put("joinPort", "11111");
|
prefs.put("joinPort", "11111");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void connectToServer() {
|
||||||
|
connectServer();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,73 @@
|
|||||||
|
package pp.mdga.client.dialog;
|
||||||
|
|
||||||
|
import com.jme3.scene.Node;
|
||||||
|
import pp.mdga.client.MdgaApp;
|
||||||
|
import pp.mdga.client.NetworkSupport;
|
||||||
|
import pp.mdga.client.server.MdgaServer;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
|
||||||
|
public abstract class NetworkDialog extends Dialog {
|
||||||
|
|
||||||
|
private NetworkSupport network;
|
||||||
|
private String hostname;
|
||||||
|
private int portNumber;
|
||||||
|
private Future<Object> connectionFuture;
|
||||||
|
|
||||||
|
public NetworkDialog(MdgaApp app, Node node, NetworkSupport network) {
|
||||||
|
super(app, node);
|
||||||
|
this.network = network;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHostname(String hostname) {
|
||||||
|
this.hostname = hostname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPortNumber(int portNumber) {
|
||||||
|
this.portNumber = portNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected Object initNetwork() {
|
||||||
|
try {
|
||||||
|
this.network.initNetwork(this.hostname, this.portNumber);
|
||||||
|
return null;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void connectServer() {
|
||||||
|
|
||||||
|
try {
|
||||||
|
connectionFuture = this.network.getApp().getExecutor().submit(this::initNetwork);
|
||||||
|
} catch (NumberFormatException var2) {
|
||||||
|
throw new NumberFormatException("Port must be a number");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void startServer() {
|
||||||
|
(new Thread(() -> {
|
||||||
|
try {
|
||||||
|
MdgaServer mdgaServer = new MdgaServer(portNumber);
|
||||||
|
mdgaServer.run();
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
})).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(float delta) {
|
||||||
|
if (this.connectionFuture != null && this.connectionFuture.isDone()) {
|
||||||
|
try {
|
||||||
|
this.connectionFuture.get();
|
||||||
|
} catch (ExecutionException ignored) {
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
import com.jme3.texture.Texture2D;
|
import com.jme3.texture.Texture2D;
|
||||||
import pp.mdga.client.MdgaApp;
|
import pp.mdga.client.MdgaApp;
|
||||||
import pp.mdga.game.Color;
|
import pp.mdga.game.Color;
|
||||||
|
import pp.mdga.game.BonusCard;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -70,7 +71,7 @@ public void hideDice() {
|
|||||||
cardLayerHandler.hideDice();
|
cardLayerHandler.hideDice();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCard(pp.mdga.game.BonusCard card) {
|
public void addCard(BonusCard card) {
|
||||||
cardLayerHandler.addCard(card);
|
cardLayerHandler.addCard(card);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ public void clearSelectableCards() {
|
|||||||
cardLayerHandler.clearSelectableCards();
|
cardLayerHandler.clearSelectableCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectableCards(List<pp.mdga.game.BonusCard> select) {
|
public void setSelectableCards(List<BonusCard> select) {
|
||||||
cardLayerHandler.setSelectableCards(select);
|
cardLayerHandler.setSelectableCards(select);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
import com.jme3.network.serializing.Serializer;
|
import com.jme3.network.serializing.Serializer;
|
||||||
import pp.mdga.game.Game;
|
import pp.mdga.game.Game;
|
||||||
import pp.mdga.game.Player;
|
import pp.mdga.game.Player;
|
||||||
|
import pp.mdga.game.Statistic;
|
||||||
import pp.mdga.message.client.*;
|
import pp.mdga.message.client.*;
|
||||||
import pp.mdga.message.server.*;
|
import pp.mdga.message.server.*;
|
||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
@@ -13,8 +14,8 @@
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.lang.System.Logger;
|
import java.lang.System.Logger;
|
||||||
import java.lang.System.Logger.Level;
|
import java.lang.System.Logger.Level;
|
||||||
import java.sql.Connection;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.logging.LogManager;
|
import java.util.logging.LogManager;
|
||||||
@@ -51,7 +52,6 @@ public MdgaServer(int port) {
|
|||||||
LOGGER.log(Level.INFO, "Creating MdgaServer"); //NON-NLS
|
LOGGER.log(Level.INFO, "Creating MdgaServer"); //NON-NLS
|
||||||
logic = new ServerGameLogic(this, new Game());
|
logic = new ServerGameLogic(this, new Game());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -89,6 +89,7 @@ private void processNextMessage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void initializeSerializables() {
|
private void initializeSerializables() {
|
||||||
|
Serializer.registerClass(UUID.class, new UUIDSerializer());
|
||||||
Serializer.registerClass(AnimationEndMessage.class);
|
Serializer.registerClass(AnimationEndMessage.class);
|
||||||
Serializer.registerClass(ClientStartGameMessage.class);
|
Serializer.registerClass(ClientStartGameMessage.class);
|
||||||
Serializer.registerClass(DeselectTSKMessage.class);
|
Serializer.registerClass(DeselectTSKMessage.class);
|
||||||
@@ -106,7 +107,6 @@ private void initializeSerializables() {
|
|||||||
Serializer.registerClass(SelectCardMessage.class);
|
Serializer.registerClass(SelectCardMessage.class);
|
||||||
Serializer.registerClass(SelectedPiecesMessage.class);
|
Serializer.registerClass(SelectedPiecesMessage.class);
|
||||||
Serializer.registerClass(SelectTSKMessage.class);
|
Serializer.registerClass(SelectTSKMessage.class);
|
||||||
|
|
||||||
Serializer.registerClass(ActivePlayerMessage.class);
|
Serializer.registerClass(ActivePlayerMessage.class);
|
||||||
Serializer.registerClass(AnyPieceMessage.class);
|
Serializer.registerClass(AnyPieceMessage.class);
|
||||||
Serializer.registerClass(BriefingMessage.class);
|
Serializer.registerClass(BriefingMessage.class);
|
||||||
@@ -134,12 +134,15 @@ private void initializeSerializables() {
|
|||||||
Serializer.registerClass(UpdateReadyMessage.class);
|
Serializer.registerClass(UpdateReadyMessage.class);
|
||||||
Serializer.registerClass(UpdateTSKMessage.class);
|
Serializer.registerClass(UpdateTSKMessage.class);
|
||||||
Serializer.registerClass(WaitPieceMessage.class);
|
Serializer.registerClass(WaitPieceMessage.class);
|
||||||
|
Serializer.registerClass(Player.class);
|
||||||
|
Serializer.registerClass(Statistic.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerListeners() {
|
private void registerListeners() {
|
||||||
myServer.addMessageListener(this, AnimationEndMessage.class);
|
myServer.addMessageListener(this, AnimationEndMessage.class);
|
||||||
myServer.addMessageListener(this, ClientStartGameMessage.class);
|
myServer.addMessageListener(this, ClientStartGameMessage.class);
|
||||||
myServer.addMessageListener(this, DeselectTSKMessage.class);
|
myServer.addMessageListener(this, DeselectTSKMessage.class);
|
||||||
|
myServer.addMessageListener(this, DisconnectedMessage.class);
|
||||||
myServer.addMessageListener(this, ForceContinueGameMessage.class);
|
myServer.addMessageListener(this, ForceContinueGameMessage.class);
|
||||||
myServer.addMessageListener(this, StartGameMessage.class);
|
myServer.addMessageListener(this, StartGameMessage.class);
|
||||||
myServer.addMessageListener(this, JoinedLobbyMessage.class);
|
myServer.addMessageListener(this, JoinedLobbyMessage.class);
|
||||||
@@ -187,7 +190,7 @@ private void messageReceived(HostedConnection source, ClientMessage message) {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void connectionAdded(Server server, HostedConnection hostedConnection) {
|
public void connectionAdded(Server server, HostedConnection hostedConnection) {
|
||||||
LOGGER.log(Level.INFO, "new connection {0}", hostedConnection); //NON-NLS
|
LOGGER.log(Level.DEBUG, "new connection {0}", hostedConnection); //NON-NLS
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package pp.mdga.client.server;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import com.jme3.network.serializing.Serializer;
|
||||||
|
|
||||||
|
public class UUIDSerializer extends Serializer
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public <T> T readObject(ByteBuffer data, Class<T> c) throws IOException
|
||||||
|
{
|
||||||
|
byte[] uuid = new byte[36];
|
||||||
|
data.get(uuid);
|
||||||
|
|
||||||
|
return (T) UUID.fromString(new String(uuid));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeObject(ByteBuffer buffer, Object object) throws IOException
|
||||||
|
{
|
||||||
|
UUID uuid = (UUID) object;
|
||||||
|
buffer.put(uuid.toString().getBytes());
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,6 +7,9 @@
|
|||||||
import pp.mdga.client.dialog.JoinDialog;
|
import pp.mdga.client.dialog.JoinDialog;
|
||||||
import pp.mdga.client.dialog.StartDialog;
|
import pp.mdga.client.dialog.StartDialog;
|
||||||
|
|
||||||
|
import java.net.Inet4Address;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
|
||||||
public class MainView extends MdgaView {
|
public class MainView extends MdgaView {
|
||||||
private enum SubState {
|
private enum SubState {
|
||||||
HOST,
|
HOST,
|
||||||
@@ -99,12 +102,25 @@ private void tryHost() {
|
|||||||
|
|
||||||
if(port >= 1 && port <= 65535) {
|
if(port >= 1 && port <= 65535) {
|
||||||
app.getModelSynchronize().setName(startDialog.getName());
|
app.getModelSynchronize().setName(startDialog.getName());
|
||||||
|
hostDialog.setHostname(Inet4Address.getLocalHost().getHostAddress());
|
||||||
|
hostDialog.hostServer();
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
|
hostDialog.connectServerAsClient();
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException ignored) {
|
||||||
|
}
|
||||||
app.getModelSynchronize().setHost(port);
|
app.getModelSynchronize().setHost(port);
|
||||||
//app.getAcousticHandler().playSound(MdgaSound.WRONG_INPUT);
|
//app.getAcousticHandler().playSound(MdgaSound.WRONG_INPUT);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
//nothing
|
//nothing
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
hostDialog.resetPort();
|
hostDialog.resetPort();
|
||||||
@@ -127,6 +143,7 @@ private void tryJoin() {
|
|||||||
if (isValidIpAddress(ip)) {
|
if (isValidIpAddress(ip)) {
|
||||||
app.getModelSynchronize().setName(startDialog.getName());
|
app.getModelSynchronize().setName(startDialog.getName());
|
||||||
app.getModelSynchronize().setJoin(ip, port);
|
app.getModelSynchronize().setJoin(ip, port);
|
||||||
|
joinDialog.connectToServer();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
|||||||
@@ -28,9 +28,10 @@ public class ClientGameLogic implements ServerInterpreter {
|
|||||||
private final InterruptState interruptState = new InterruptState(null, this);
|
private final InterruptState interruptState = new InterruptState(null, this);
|
||||||
private final SettingsState settingsState = new SettingsState(null, this);
|
private final SettingsState settingsState = new SettingsState(null, this);
|
||||||
|
|
||||||
public ClientGameLogic(Game game, ClientSender clientSender) {
|
public ClientGameLogic(ClientSender clientSender) {
|
||||||
this.game = game;
|
this.game = new Game();
|
||||||
this.clientSender = clientSender;
|
this.clientSender = clientSender;
|
||||||
|
dialogsState.enter();
|
||||||
state = dialogsState;
|
state = dialogsState;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,7 +245,11 @@ public void selectName(String name){
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void selectReady(boolean ready){
|
public void selectReady(boolean ready){
|
||||||
state.selectReady(ready);
|
if(ready){
|
||||||
|
state.selectReady();
|
||||||
|
} else {
|
||||||
|
state.selectUnready();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectHost(String name){
|
public void selectHost(String name){
|
||||||
@@ -304,7 +309,11 @@ public SettingsState getSettings(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Notification getNotification(){
|
public Notification getNotification(){
|
||||||
|
if(!notifications.isEmpty()){
|
||||||
return notifications.remove(0);
|
return notifications.remove(0);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addNotification(Notification notification){
|
public void addNotification(Notification notification){
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ public void setName(String name) {
|
|||||||
LOGGER.log(Level.DEBUG, "Setting name not allowed.");
|
LOGGER.log(Level.DEBUG, "Setting name not allowed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void selectReady(boolean ready) {
|
public void selectReady() {
|
||||||
LOGGER.log(Level.DEBUG, "Selecting ready not allowed.");
|
LOGGER.log(Level.DEBUG, "Selecting ready not allowed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ public void enter(){
|
|||||||
|
|
||||||
public void setState(DialogStates newState){
|
public void setState(DialogStates newState){
|
||||||
currentState.exit();
|
currentState.exit();
|
||||||
currentState.enter();
|
newState.enter();
|
||||||
currentState = newState;
|
currentState = newState;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,6 +75,11 @@ public void selectLeave(){
|
|||||||
currentState.selectLeave();
|
currentState.selectLeave();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setName(String name){
|
||||||
|
currentState.setName(name);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectTSK(Color color){
|
public void selectTSK(Color color){
|
||||||
currentState.selectTSK(color);
|
currentState.selectTSK(color);
|
||||||
@@ -86,8 +91,8 @@ public void deselectTSK(Color color){
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectReady(boolean ready){
|
public void selectReady(){
|
||||||
currentState.selectReady(ready);
|
currentState.selectReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -8,10 +8,19 @@ public class InterruptState extends ClientState {
|
|||||||
|
|
||||||
private ClientState previousState;
|
private ClientState previousState;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new InterruptState
|
||||||
|
*
|
||||||
|
* @param parent the parent state
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
public InterruptState(ClientState parent, ClientGameLogic logic) {
|
public InterruptState(ClientState parent, ClientGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enters the new state machine
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
previousState = null;
|
previousState = null;
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
package pp.mdga.client;
|
||||||
|
|
||||||
|
public interface ServerConnection extends ClientSender {
|
||||||
|
boolean isConnected();
|
||||||
|
|
||||||
|
void connect();
|
||||||
|
|
||||||
|
void disconnect();
|
||||||
|
}
|
||||||
@@ -7,26 +7,44 @@
|
|||||||
|
|
||||||
public class SettingsState extends ClientState {
|
public class SettingsState extends ClientState {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current state of the settings
|
||||||
|
*/
|
||||||
private SettingStates currentState;
|
private SettingStates currentState;
|
||||||
|
|
||||||
private final MainSettingsState mainSettingsState = new MainSettingsState(this, logic);
|
private final MainSettingsState mainSettingsState = new MainSettingsState(this, logic);
|
||||||
private final AudioSettingsState audioSettingsState = new AudioSettingsState(this, logic);
|
private final AudioSettingsState audioSettingsState = new AudioSettingsState(this, logic);
|
||||||
private final VideoSettingsState videoSettingsState = new VideoSettingsState(this, logic);
|
private final VideoSettingsState videoSettingsState = new VideoSettingsState(this, logic);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new SettingsState
|
||||||
|
*
|
||||||
|
* @param parent the parent state
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
public SettingsState(ClientState parent, ClientGameLogic logic) {
|
public SettingsState(ClientState parent, ClientGameLogic logic) {
|
||||||
super(parent, logic);
|
super(parent, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enters the current state
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void enter() {
|
public void enter() {
|
||||||
currentState = mainSettingsState;
|
currentState = mainSettingsState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exits the current state
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void exit() {
|
public void exit() {
|
||||||
currentState.exit();
|
currentState.exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the current state
|
||||||
|
*/
|
||||||
public SettingStates getState(){
|
public SettingStates getState(){
|
||||||
return currentState;
|
return currentState;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
import pp.mdga.message.server.ServerStartGameMessage;
|
import pp.mdga.message.server.ServerStartGameMessage;
|
||||||
import pp.mdga.message.server.UpdateReadyMessage;
|
import pp.mdga.message.server.UpdateReadyMessage;
|
||||||
import pp.mdga.message.server.UpdateTSKMessage;
|
import pp.mdga.message.server.UpdateTSKMessage;
|
||||||
|
import pp.mdga.notification.LobbyReadyNotification;
|
||||||
import pp.mdga.notification.TskSelectNotification;
|
import pp.mdga.notification.TskSelectNotification;
|
||||||
import pp.mdga.notification.TskUnselectNotification;
|
import pp.mdga.notification.TskUnselectNotification;
|
||||||
|
|
||||||
@@ -35,6 +36,7 @@ public void exit() {
|
|||||||
@Override
|
@Override
|
||||||
public void selectLeave() {
|
public void selectLeave() {
|
||||||
parent.setState(parent.getStartDialog());
|
parent.setState(parent.getStartDialog());
|
||||||
|
logic.send(new LeaveGameMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -48,7 +50,7 @@ public void deselectTSK(Color color) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectReady(boolean ready) {
|
public void selectReady() {
|
||||||
logic.send(new LobbyReadyMessage());
|
logic.send(new LobbyReadyMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -75,6 +77,7 @@ public void received(ServerStartGameMessage msg){
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void received(LobbyPlayerJoinedMessage msg){
|
public void received(LobbyPlayerJoinedMessage msg){
|
||||||
|
logic.addNotification(new TskSelectNotification(msg.getPlayer().getColor(), msg.getPlayer().getName(), parent.getOwnPlayerId()== msg.getId()));
|
||||||
logic.getGame().getPlayers().put(msg.getId(), msg.getPlayer());
|
logic.getGame().getPlayers().put(msg.getId(), msg.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,6 +96,7 @@ public void received(LobbyPlayerLeaveMessage msg){
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void received(UpdateReadyMessage msg){
|
public void received(UpdateReadyMessage msg){
|
||||||
|
logic.addNotification(new LobbyReadyNotification(logic.getGame().getPlayers().get(msg.getPlayerId()).getColor(), msg.isReady()));
|
||||||
logic.getGame().getPlayers().get(msg.getPlayerId()).setReady(msg.isReady());
|
logic.getGame().getPlayers().get(msg.getPlayerId()).setReady(msg.isReady());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
import pp.mdga.client.ClientGameLogic;
|
import pp.mdga.client.ClientGameLogic;
|
||||||
import pp.mdga.client.ClientState;
|
import pp.mdga.client.ClientState;
|
||||||
import pp.mdga.client.DialogsState;
|
import pp.mdga.client.DialogsState;
|
||||||
|
import pp.mdga.notification.LobbyDialogNotification;
|
||||||
|
|
||||||
public class NetworkDialogState extends DialogStates {
|
public class NetworkDialogState extends DialogStates {
|
||||||
|
|
||||||
@@ -55,9 +56,7 @@ public void selectLeave() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void selectJoin(String IP) {
|
public void selectJoin(String IP) {
|
||||||
if(checkIP(IP)){
|
|
||||||
parent.setState(parent.getLobby());
|
parent.setState(parent.getLobby());
|
||||||
}
|
logic.addNotification(new LobbyDialogNotification());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ public void selectHost(String name) {
|
|||||||
logic.setHost(true);
|
logic.setHost(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setName(String name) {
|
||||||
|
parent.setState(parent.getNetworkDialog());
|
||||||
|
parent.setOwnPlayerName(name);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void selectLeave() {
|
public void selectLeave() {
|
||||||
parent.exit();
|
parent.exit();
|
||||||
|
|||||||
@@ -11,6 +11,8 @@
|
|||||||
import pp.mdga.notification.WaitMoveNotification;
|
import pp.mdga.notification.WaitMoveNotification;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class NoPieceState extends ChoosePieceStates {
|
public class NoPieceState extends ChoosePieceStates {
|
||||||
@@ -49,7 +51,13 @@ public void received(WaitPieceMessage msg){
|
|||||||
@Override
|
@Override
|
||||||
public void received(StartPieceMessage msg){
|
public void received(StartPieceMessage msg){
|
||||||
Piece piece = logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier());
|
Piece piece = logic.getGame().getPieceThroughUUID(msg.getPieceIdentifier());
|
||||||
//TODO: logic.addNotification(null);
|
List<UUID> listPiece = new ArrayList<>();
|
||||||
|
List<Integer> listIndex = new ArrayList<>();
|
||||||
|
List<Boolean> homeMove = new ArrayList<>();
|
||||||
|
listPiece.add(piece.getUuid());
|
||||||
|
listIndex.add(msg.getTargetIndex());
|
||||||
|
homeMove.add(false);
|
||||||
|
logic.addNotification(new SelectableMoveNotification(listPiece, listIndex, homeMove));
|
||||||
parent.setState(parent.getStartPiece());
|
parent.setState(parent.getStartPiece());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,13 @@
|
|||||||
package pp.mdga.game;
|
package pp.mdga.game;
|
||||||
|
|
||||||
|
import com.jme3.network.serializing.Serializable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class will be used to handle general PlayerData
|
* This class will be used to handle general PlayerData
|
||||||
*/
|
*/
|
||||||
|
@Serializable
|
||||||
public class Player {
|
public class Player {
|
||||||
/**
|
/**
|
||||||
* The name of the player.
|
* The name of the player.
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package pp.mdga.game;
|
package pp.mdga.game;
|
||||||
|
|
||||||
|
import com.jme3.network.serializing.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class will be used to store Statistics during the Game;
|
* This class will be used to store Statistics during the Game;
|
||||||
*/
|
*/
|
||||||
|
@Serializable
|
||||||
public class Statistic {
|
public class Statistic {
|
||||||
/**
|
/**
|
||||||
* The number of cards played.
|
* The number of cards played.
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public StartGameMessage(boolean forceStartGame){
|
|||||||
/**
|
/**
|
||||||
* Constructs a new ForceStartGame message.
|
* Constructs a new ForceStartGame message.
|
||||||
*/
|
*/
|
||||||
public StartGameMessage() {
|
private StartGameMessage() {
|
||||||
super();
|
super();
|
||||||
forceStartGame = false;
|
forceStartGame = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,12 +8,19 @@
|
|||||||
* Notification that is sent when a card is acquired.
|
* Notification that is sent when a card is acquired.
|
||||||
*/
|
*/
|
||||||
public class AcquireCardNotification extends Notification {
|
public class AcquireCardNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The id of the card that was acquired.
|
||||||
|
*/
|
||||||
|
private final UUID cardId;
|
||||||
|
|
||||||
private UUID cardId;
|
/**
|
||||||
private BonusCard bonusCard;
|
* The bonus card that was acquired.
|
||||||
|
*/
|
||||||
|
private final BonusCard bonusCard;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param cardId The id of the card that was acquired.
|
* @param cardId The id of the card that was acquired.
|
||||||
*/
|
*/
|
||||||
public AcquireCardNotification(BonusCard bonusCard, UUID cardId) {
|
public AcquireCardNotification(BonusCard bonusCard, UUID cardId) {
|
||||||
@@ -23,6 +30,7 @@ public AcquireCardNotification(BonusCard bonusCard, UUID cardId) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the id of the card that was acquired.
|
* Get the id of the card that was acquired.
|
||||||
|
*
|
||||||
* @return The id of the card that was acquired.
|
* @return The id of the card that was acquired.
|
||||||
*/
|
*/
|
||||||
public UUID getCardId() {
|
public UUID getCardId() {
|
||||||
|
|||||||
@@ -6,12 +6,16 @@
|
|||||||
* Notification that the active player has changed
|
* Notification that the active player has changed
|
||||||
*/
|
*/
|
||||||
public class ActivePlayerNotification extends Notification {
|
public class ActivePlayerNotification extends Notification {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The color of the active player
|
* The color of the active player
|
||||||
*/
|
*/
|
||||||
private Color color;
|
private final Color color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param color the color of the active player
|
||||||
|
*/
|
||||||
public ActivePlayerNotification(Color color) {
|
public ActivePlayerNotification(Color color) {
|
||||||
this.color = color;
|
this.color = color;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
/**
|
/**
|
||||||
* Class CeremonyNotification
|
* Class CeremonyNotification
|
||||||
* Represents a notification for a ceremony in the game.
|
* Represents a notification for a ceremony in the game.
|
||||||
*
|
* <p>
|
||||||
* Index mapping:
|
* Index mapping:
|
||||||
* index = 0 ==> winner
|
* index = 0 ==> winner
|
||||||
* index = 1 ==> 2nd
|
* index = 1 ==> 2nd
|
||||||
@@ -16,6 +16,9 @@
|
|||||||
* index = 4 ==> total
|
* index = 4 ==> total
|
||||||
*/
|
*/
|
||||||
public class CeremonyNotification extends Notification {
|
public class CeremonyNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* Attributes.
|
||||||
|
*/
|
||||||
private ArrayList<Color> colors;
|
private ArrayList<Color> colors;
|
||||||
private ArrayList<String> names;
|
private ArrayList<String> names;
|
||||||
private ArrayList<Integer> piecesThrown;
|
private ArrayList<Integer> piecesThrown;
|
||||||
@@ -40,8 +43,6 @@ public CeremonyNotification() {
|
|||||||
this.bonusNodes = new ArrayList<>();
|
this.bonusNodes = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Getters and Setters
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the list of colors
|
* @return the list of colors
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
* Notification that the dice is now.
|
* Notification that the dice is now.
|
||||||
*/
|
*/
|
||||||
public class DiceNowNotification extends Notification {
|
public class DiceNowNotification extends Notification {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -6,11 +6,14 @@
|
|||||||
* Notification that is sent when a player has diced.
|
* Notification that is sent when a player has diced.
|
||||||
*/
|
*/
|
||||||
public class DicingNotification extends Notification {
|
public class DicingNotification extends Notification {
|
||||||
|
/**
|
||||||
private Color color;
|
* The color of the player that diced.
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param color The color of the player that diced.
|
* @param color The color of the player that diced.
|
||||||
*/
|
*/
|
||||||
public DicingNotification(Color color) {
|
public DicingNotification(Color color) {
|
||||||
@@ -19,6 +22,7 @@ public DicingNotification(Color color) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the color of the player that diced.
|
* Get the color of the player that diced.
|
||||||
|
*
|
||||||
* @return The color of the player that diced.
|
* @return The color of the player that diced.
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
|
|||||||
@@ -7,9 +7,15 @@
|
|||||||
* Notification that a card has been drawn
|
* Notification that a card has been drawn
|
||||||
*/
|
*/
|
||||||
public class DrawCardNotification extends Notification {
|
public class DrawCardNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The color of the player who drew the card
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
private Color color;
|
/**
|
||||||
private BonusCard card;
|
* The card that was drawn
|
||||||
|
*/
|
||||||
|
private final BonusCard card;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param color the color of the player who drew the card
|
* @param color the color of the player who drew the card
|
||||||
|
|||||||
@@ -6,9 +6,15 @@
|
|||||||
* Notification that a piece has moved to a home.
|
* Notification that a piece has moved to a home.
|
||||||
*/
|
*/
|
||||||
public class HomeMoveNotification extends Notification {
|
public class HomeMoveNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The unique identifier of the piece.
|
||||||
|
*/
|
||||||
|
private final UUID pieceId;
|
||||||
|
|
||||||
private UUID pieceId;
|
/**
|
||||||
private int homeIndex;
|
* The index of the home position.
|
||||||
|
*/
|
||||||
|
private final int homeIndex;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
* Notification that a card has been drawn
|
* Notification that a card has been drawn
|
||||||
*/
|
*/
|
||||||
public class InterruptNotification extends Notification {
|
public class InterruptNotification extends Notification {
|
||||||
|
/**
|
||||||
private Color color;
|
* The color of the player who disconnected
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param color the color of the player who disconnected
|
* @param color the color of the player who disconnected
|
||||||
|
|||||||
@@ -4,9 +4,4 @@
|
|||||||
* Notification that a dialog has been started
|
* Notification that a dialog has been started
|
||||||
*/
|
*/
|
||||||
public class LobbyDialogNotification extends Notification {
|
public class LobbyDialogNotification extends Notification {
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
public LobbyDialogNotification() {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package pp.mdga.notification;
|
||||||
|
|
||||||
|
import pp.mdga.game.Color;
|
||||||
|
|
||||||
|
public class LobbyReadyNotification extends Notification{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The color of the player.
|
||||||
|
*/
|
||||||
|
private Color color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates if the player is ready.
|
||||||
|
*/
|
||||||
|
private boolean ready;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
public LobbyReadyNotification(Color color, boolean ready) {
|
||||||
|
this.color = color;
|
||||||
|
this.ready = ready;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is used to get the color of the player
|
||||||
|
*
|
||||||
|
* @return the color of the player
|
||||||
|
*/
|
||||||
|
public Color getColor() {
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is used to get the ready state of the player
|
||||||
|
*
|
||||||
|
* @return the ready state of the player
|
||||||
|
*/
|
||||||
|
public boolean isReady() {
|
||||||
|
return ready;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,14 +1,11 @@
|
|||||||
package pp.mdga.notification;
|
package pp.mdga.notification;
|
||||||
|
|
||||||
import pp.mdga.game.Color;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notification that a piece has been moved.
|
* Notification that a piece has been moved.
|
||||||
*/
|
*/
|
||||||
public class MovePieceNotification extends Notification {
|
public class MovePieceNotification extends Notification {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The unique identifier of the piece being moved.
|
* The unique identifier of the piece being moved.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
* Notification that a piece has no shield.
|
* Notification that a piece has no shield.
|
||||||
*/
|
*/
|
||||||
public class NoShieldNotification extends Notification{
|
public class NoShieldNotification extends Notification{
|
||||||
|
/**
|
||||||
private UUID pieceId;
|
* The id of the piece that has no shield.
|
||||||
|
*/
|
||||||
|
private final UUID pieceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
package pp.mdga.notification;
|
package pp.mdga.notification;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a notification that can be sent to a player.
|
||||||
|
*/
|
||||||
public abstract class Notification {
|
public abstract class Notification {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,12 +7,19 @@
|
|||||||
* Notification that a card has been played.
|
* Notification that a card has been played.
|
||||||
*/
|
*/
|
||||||
public class PlayCardNotification extends Notification {
|
public class PlayCardNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The color of the player that played the card.
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
private Color color;
|
/**
|
||||||
private BonusCard card;
|
* The card that was played.
|
||||||
|
*/
|
||||||
|
private final BonusCard card;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param color the color of the player that played the card.
|
* @param color the color of the player that played the card.
|
||||||
* @param card the card that was played.
|
* @param card the card that was played.
|
||||||
*/
|
*/
|
||||||
@@ -23,6 +30,7 @@ public PlayCardNotification(Color color, BonusCard card) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the color of the player that played the card.
|
* Get the color of the player that played the card.
|
||||||
|
*
|
||||||
* @return the color of the player that played the card.
|
* @return the color of the player that played the card.
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
@@ -31,6 +39,7 @@ public Color getColor() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the card that was played.
|
* Get the card that was played.
|
||||||
|
*
|
||||||
* @return the card that was played.
|
* @return the card that was played.
|
||||||
*/
|
*/
|
||||||
public BonusCard getCard() {
|
public BonusCard getCard() {
|
||||||
|
|||||||
@@ -9,13 +9,24 @@
|
|||||||
* Notification that a player is in the game.
|
* Notification that a player is in the game.
|
||||||
*/
|
*/
|
||||||
public class PlayerInGameNotification extends Notification {
|
public class PlayerInGameNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The color of the player that is in the game.
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
private Color color;
|
/**
|
||||||
private String name;
|
* The name of the player that is in the game.
|
||||||
private List<UUID> piecesList;
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The list of piece IDs associated with the player.
|
||||||
|
*/
|
||||||
|
private final List<UUID> piecesList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param color the color of the player that is in the game.
|
* @param color the color of the player that is in the game.
|
||||||
* @param name the name of the player that is in the game.
|
* @param name the name of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
@@ -27,6 +38,7 @@ public PlayerInGameNotification(Color color, List<UUID> piecesList, String name
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the color of the player that is in the game.
|
* Get the color of the player that is in the game.
|
||||||
|
*
|
||||||
* @return the color of the player that is in the game.
|
* @return the color of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
@@ -35,12 +47,18 @@ public Color getColor() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the name of the player that is in the game.
|
* Get the name of the player that is in the game.
|
||||||
|
*
|
||||||
* @return the name of the player that is in the game.
|
* @return the name of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the list of piece IDs associated with the player.
|
||||||
|
*
|
||||||
|
* @return the list of piece IDs associated with the player.
|
||||||
|
*/
|
||||||
public List<UUID> getPiecesList() {
|
public List<UUID> getPiecesList() {
|
||||||
return piecesList;
|
return piecesList;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,14 @@
|
|||||||
* Notification that a player is in the game.
|
* Notification that a player is in the game.
|
||||||
*/
|
*/
|
||||||
public class ResumeNotification extends Notification {
|
public class ResumeNotification extends Notification {
|
||||||
|
/**
|
||||||
private Color color;
|
* The color of the player that is in the game.
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param color the color of the player that is in the game.
|
* @param color the color of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
public ResumeNotification(Color color) {
|
public ResumeNotification(Color color) {
|
||||||
@@ -19,6 +22,7 @@ public ResumeNotification(Color color) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the color of the player that is in the game.
|
* Get the color of the player that is in the game.
|
||||||
|
*
|
||||||
* @return the color of the player that is in the game.
|
* @return the color of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
|
|||||||
@@ -6,13 +6,24 @@
|
|||||||
* Notification that a die has been rolled.
|
* Notification that a die has been rolled.
|
||||||
*/
|
*/
|
||||||
public class RollDiceNotification extends Notification {
|
public class RollDiceNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The color of the player that rolled the die.
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
private Color color;
|
/**
|
||||||
private int eyes;
|
* The number of eyes that were rolled.
|
||||||
private int moveNumber;
|
*/
|
||||||
|
private final int eyes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The number of the move that was made.
|
||||||
|
*/
|
||||||
|
private final int moveNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param color the color of the player that rolled the die.
|
* @param color the color of the player that rolled the die.
|
||||||
* @param eyes the number of eyes that were rolled.
|
* @param eyes the number of eyes that were rolled.
|
||||||
* @param moveNumber the number of the move that was made.
|
* @param moveNumber the number of the move that was made.
|
||||||
@@ -25,6 +36,7 @@ public RollDiceNotification(Color color, int eyes, int moveNumber) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the color of the player that rolled the die.
|
* Get the color of the player that rolled the die.
|
||||||
|
*
|
||||||
* @return the color of the player that rolled the die.
|
* @return the color of the player that rolled the die.
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
@@ -33,6 +45,7 @@ public Color getColor() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of eyes that were rolled.
|
* Get the number of eyes that were rolled.
|
||||||
|
*
|
||||||
* @return the number of eyes that were rolled.
|
* @return the number of eyes that were rolled.
|
||||||
*/
|
*/
|
||||||
public int getEyes() {
|
public int getEyes() {
|
||||||
@@ -41,6 +54,7 @@ public int getEyes() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the number of the move that was made.
|
* Get the number of the move that was made.
|
||||||
|
*
|
||||||
* @return the number of the move that was made.
|
* @return the number of the move that was made.
|
||||||
*/
|
*/
|
||||||
public int getMoveNumber() {
|
public int getMoveNumber() {
|
||||||
|
|||||||
@@ -7,8 +7,10 @@
|
|||||||
* Notification that contains a list of cards that the player can choose from.
|
* Notification that contains a list of cards that the player can choose from.
|
||||||
*/
|
*/
|
||||||
public class SelectableCardsNotification extends Notification {
|
public class SelectableCardsNotification extends Notification {
|
||||||
|
/**
|
||||||
private List<BonusCard> cards;
|
* The list of cards that the player can choose from.
|
||||||
|
*/
|
||||||
|
private final List<BonusCard> cards;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
* Notification for selecting pieces and their possible moves.
|
* Notification for selecting pieces and their possible moves.
|
||||||
*/
|
*/
|
||||||
public class SelectableMoveNotification extends Notification {
|
public class SelectableMoveNotification extends Notification {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of UUIDs representing the pieces that can be moved based on the dice roll.
|
* List of UUIDs representing the pieces that can be moved based on the dice roll.
|
||||||
*/
|
*/
|
||||||
@@ -16,7 +15,7 @@ public class SelectableMoveNotification extends Notification{
|
|||||||
/**
|
/**
|
||||||
* List of integers representing the target nodes the pieces can move to.
|
* List of integers representing the target nodes the pieces can move to.
|
||||||
*/
|
*/
|
||||||
private final List<Integer> moveIndexe;
|
private final List<Integer> moveIndices;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of booleans indicating whether the corresponding target nodes are in the home area.
|
* List of booleans indicating whether the corresponding target nodes are in the home area.
|
||||||
@@ -28,12 +27,12 @@ public class SelectableMoveNotification extends Notification{
|
|||||||
* Constructs a notification for selectable piece moves.
|
* Constructs a notification for selectable piece moves.
|
||||||
*
|
*
|
||||||
* @param pieces the list of pieces that can be moved
|
* @param pieces the list of pieces that can be moved
|
||||||
* @param moveIndexe the list of target nodes for the moves
|
* @param moveIndices the list of target nodes for the moves
|
||||||
* @param homeMoves the list indicating if the target nodes are in the home area
|
* @param homeMoves the list indicating if the target nodes are in the home area
|
||||||
*/
|
*/
|
||||||
public SelectableMoveNotification(List<UUID> pieces, List<Integer> moveIndexe, List<Boolean> homeMoves) {
|
public SelectableMoveNotification(List<UUID> pieces, List<Integer> moveIndices, List<Boolean> homeMoves) {
|
||||||
this.pieces = pieces;
|
this.pieces = pieces;
|
||||||
this.moveIndexe = moveIndexe;
|
this.moveIndices = moveIndices;
|
||||||
this.homeMoves = homeMoves;
|
this.homeMoves = homeMoves;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,8 +50,8 @@ public List<UUID> getPieces() {
|
|||||||
*
|
*
|
||||||
* @return a list of integers representing the target nodes
|
* @return a list of integers representing the target nodes
|
||||||
*/
|
*/
|
||||||
public List<Integer> getMoveIndexe() {
|
public List<Integer> getMoveIndices() {
|
||||||
return moveIndexe;
|
return moveIndices;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7,7 +7,6 @@
|
|||||||
* Notification for selecting pieces for swapcard.
|
* Notification for selecting pieces for swapcard.
|
||||||
*/
|
*/
|
||||||
public class SelectableSwapNotification extends Notification {
|
public class SelectableSwapNotification extends Notification {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of UUIDs representing the player's own pieces available for selection.
|
* List of UUIDs representing the player's own pieces available for selection.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
* This class will be used to hold all ShieldActiveNotification relevant data.
|
* This class will be used to hold all ShieldActiveNotification relevant data.
|
||||||
*/
|
*/
|
||||||
public class ShieldActiveNotification extends Notification {
|
public class ShieldActiveNotification extends Notification {
|
||||||
|
/**
|
||||||
private UUID pieceId;
|
* The pieceId
|
||||||
|
*/
|
||||||
|
private final UUID pieceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This constructor is used to create a new ShieldActiveNotification
|
* This constructor is used to create a new ShieldActiveNotification
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
* This class will be used to hold all ShieldSuppressedNotification relevant data.
|
* This class will be used to hold all ShieldSuppressedNotification relevant data.
|
||||||
*/
|
*/
|
||||||
public class ShieldSuppressedNotification extends Notification {
|
public class ShieldSuppressedNotification extends Notification {
|
||||||
|
/**
|
||||||
private UUID pieceId;
|
* The pieceId
|
||||||
|
*/
|
||||||
|
private final UUID pieceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This constructor is used to create a new ShieldSuppressedNotification
|
* This constructor is used to create a new ShieldSuppressedNotification
|
||||||
|
|||||||
@@ -4,9 +4,4 @@
|
|||||||
* Notification that a dialog has been started
|
* Notification that a dialog has been started
|
||||||
*/
|
*/
|
||||||
public class StartDialogNotification extends Notification {
|
public class StartDialogNotification extends Notification {
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*/
|
|
||||||
public StartDialogNotification() {
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,19 @@
|
|||||||
* Notification that two pieces have been swapped.
|
* Notification that two pieces have been swapped.
|
||||||
*/
|
*/
|
||||||
public class SwapPieceNotification extends Notification {
|
public class SwapPieceNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The UUID of the first piece that has been swapped.
|
||||||
|
*/
|
||||||
|
private final UUID firstPiece;
|
||||||
|
|
||||||
private UUID firstPiece;
|
/**
|
||||||
private UUID secondPiece;
|
* The UUID of the second piece that has been swapped.
|
||||||
|
*/
|
||||||
|
private final UUID secondPiece;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param firstPiece the UUID of the first piece that has been swapped.
|
* @param firstPiece the UUID of the first piece that has been swapped.
|
||||||
* @param secondPiece the UUID of the second piece that has been swapped.
|
* @param secondPiece the UUID of the second piece that has been swapped.
|
||||||
*/
|
*/
|
||||||
@@ -23,6 +30,7 @@ public SwapPieceNotification(UUID firstPiece, UUID secondPiece) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the UUID of the first piece that has been swapped.
|
* Get the UUID of the first piece that has been swapped.
|
||||||
|
*
|
||||||
* @return the UUID of the first piece that has been swapped.
|
* @return the UUID of the first piece that has been swapped.
|
||||||
*/
|
*/
|
||||||
public UUID getFirstPiece() {
|
public UUID getFirstPiece() {
|
||||||
@@ -31,6 +39,7 @@ public UUID getFirstPiece() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the UUID of the second piece that has been swapped.
|
* Get the UUID of the second piece that has been swapped.
|
||||||
|
*
|
||||||
* @return the UUID of the second piece that has been swapped.
|
* @return the UUID of the second piece that has been swapped.
|
||||||
*/
|
*/
|
||||||
public UUID getSecondPiece() {
|
public UUID getSecondPiece() {
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
package pp.mdga.notification;
|
package pp.mdga.notification;
|
||||||
|
|
||||||
import pp.mdga.game.Color;
|
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notification that is sent when a piece is thrown.
|
||||||
|
*/
|
||||||
public class ThrowPieceNotification extends Notification {
|
public class ThrowPieceNotification extends Notification {
|
||||||
|
/**
|
||||||
private UUID pieceId;
|
* The id of the piece that was thrown.
|
||||||
|
*/
|
||||||
|
private final UUID pieceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This constructor is used to create a new ThrowPieceNotification
|
* This constructor is used to create a new ThrowPieceNotification
|
||||||
@@ -15,6 +18,11 @@ public ThrowPieceNotification(UUID pieceId) {
|
|||||||
this.pieceId = pieceId;
|
this.pieceId = pieceId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the id of the piece that was thrown.
|
||||||
|
*
|
||||||
|
* @return The id of the piece that was thrown.
|
||||||
|
*/
|
||||||
public UUID getPieceId() {
|
public UUID getPieceId() {
|
||||||
return pieceId;
|
return pieceId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,13 +6,24 @@
|
|||||||
* Class TskSelectNotification
|
* Class TskSelectNotification
|
||||||
*/
|
*/
|
||||||
public class TskSelectNotification extends Notification {
|
public class TskSelectNotification extends Notification {
|
||||||
|
/**
|
||||||
|
* The color of the player that is in the game.
|
||||||
|
*/
|
||||||
private final Color color;
|
private final Color color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The name of the player that is in the game.
|
||||||
|
*/
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates if the select notification affects the own user.
|
||||||
|
*/
|
||||||
private final boolean isSelf;
|
private final boolean isSelf;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param color the color of the player that is in the game.
|
* @param color the color of the player that is in the game.
|
||||||
* @param name the name of the player that is in the game.
|
* @param name the name of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
@@ -24,6 +35,7 @@ public TskSelectNotification(Color color, String name, boolean isSelf) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the color of the player that is in the game.
|
* Get the color of the player that is in the game.
|
||||||
|
*
|
||||||
* @return the color of the player that is in the game.
|
* @return the color of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
@@ -32,6 +44,7 @@ public Color getColor() {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the name of the player that is in the game.
|
* Get the name of the player that is in the game.
|
||||||
|
*
|
||||||
* @return the name of the player that is in the game.
|
* @return the name of the player that is in the game.
|
||||||
*/
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
|||||||
@@ -2,13 +2,19 @@
|
|||||||
|
|
||||||
import pp.mdga.game.Color;
|
import pp.mdga.game.Color;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notification for unselecting a player
|
||||||
|
*/
|
||||||
public class TskUnselectNotification extends Notification {
|
public class TskUnselectNotification extends Notification {
|
||||||
|
/**
|
||||||
private Color color;
|
* The color of the player
|
||||||
|
*/
|
||||||
|
private final Color color;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
* @param color
|
*
|
||||||
|
* @param color the color of the player
|
||||||
*/
|
*/
|
||||||
public TskUnselectNotification(Color color) {
|
public TskUnselectNotification(Color color) {
|
||||||
this.color = color;
|
this.color = color;
|
||||||
@@ -16,6 +22,7 @@ public TskUnselectNotification(Color color){
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the color
|
* Get the color
|
||||||
|
*
|
||||||
* @return color
|
* @return color
|
||||||
*/
|
*/
|
||||||
public Color getColor() {
|
public Color getColor() {
|
||||||
|
|||||||
@@ -6,11 +6,14 @@
|
|||||||
* Notification to inform the player that he has to wait for the other player to move.
|
* Notification to inform the player that he has to wait for the other player to move.
|
||||||
*/
|
*/
|
||||||
public class WaitMoveNotification extends Notification {
|
public class WaitMoveNotification extends Notification {
|
||||||
|
/**
|
||||||
private UUID pieceId;
|
* The id of the piece that has to move.
|
||||||
|
*/
|
||||||
|
private final UUID pieceId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
|
*
|
||||||
* @param pieceId the id of the piece that has to move.
|
* @param pieceId the id of the piece that has to move.
|
||||||
*/
|
*/
|
||||||
public WaitMoveNotification(UUID pieceId) {
|
public WaitMoveNotification(UUID pieceId) {
|
||||||
@@ -19,6 +22,7 @@ public WaitMoveNotification(UUID pieceId) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the id of the piece that has to move.
|
* Get the id of the piece that has to move.
|
||||||
|
*
|
||||||
* @return the id of the piece that has to move.
|
* @return the id of the piece that has to move.
|
||||||
*/
|
*/
|
||||||
public UUID getPieceId() {
|
public UUID getPieceId() {
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ public class ServerGameLogic implements ClientInterpreter {
|
|||||||
* States
|
* States
|
||||||
*/
|
*/
|
||||||
private ServerState currentState;
|
private ServerState currentState;
|
||||||
private final ServerState lobbyState;
|
private final LobbyState lobbyState;
|
||||||
private final ServerState gameState;
|
private final GameState gameState;
|
||||||
private final ServerState interruptState;
|
private final InterruptState interruptState;
|
||||||
private final ServerState ceremonyState;
|
private final CeremonyState ceremonyState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
@@ -167,36 +167,36 @@ public ServerState getCurrentState() {
|
|||||||
/**
|
/**
|
||||||
* This method will be used to return lobbyState attribute of ServerGameLogic class.
|
* This method will be used to return lobbyState attribute of ServerGameLogic class.
|
||||||
*
|
*
|
||||||
* @return lobbyState as a ServerState object.
|
* @return lobbyState as a LobbyState object.
|
||||||
*/
|
*/
|
||||||
public ServerState getLobbyState() {
|
public LobbyState getLobbyState() {
|
||||||
return this.lobbyState;
|
return this.lobbyState;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will be used to return gameState attribute of ServerGameLogic class.
|
* This method will be used to return gameState attribute of ServerGameLogic class.
|
||||||
*
|
*
|
||||||
* @return gameState as a ServerState object.
|
* @return gameState as a GameState object.
|
||||||
*/
|
*/
|
||||||
public ServerState getGameState() {
|
public GameState getGameState() {
|
||||||
return this.gameState;
|
return this.gameState;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will be used to return interruptState attribute of ServerGameLogic class.
|
* This method will be used to return interruptState attribute of ServerGameLogic class.
|
||||||
*
|
*
|
||||||
* @return interruptState as a ServerState object.
|
* @return interruptState as a InterruptState object.
|
||||||
*/
|
*/
|
||||||
public ServerState getInterruptState() {
|
public InterruptState getInterruptState() {
|
||||||
return this.interruptState;
|
return this.interruptState;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method will be used to return ceremonyState attribute of ServerGameLogic class.
|
* This method will be used to return ceremonyState attribute of ServerGameLogic class.
|
||||||
*
|
*
|
||||||
* @return ceremonyState as a ServerState object.
|
* @return ceremonyState as a CeremonyState object.
|
||||||
*/
|
*/
|
||||||
public ServerState getCeremonyState() {
|
public CeremonyState getCeremonyState() {
|
||||||
return this.ceremonyState;
|
return this.ceremonyState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,23 @@
|
|||||||
|
|
||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.GameState;
|
import pp.mdga.server.automaton.GameState;
|
||||||
|
import pp.mdga.server.automaton.game.turn.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class represents the turn state of the server state automaton.
|
||||||
|
* It will also be used as the turn automaton.
|
||||||
|
*/
|
||||||
public class TurnState extends GameAutomatonState {
|
public class TurnState extends GameAutomatonState {
|
||||||
|
/**
|
||||||
|
* Create TurnState states.
|
||||||
|
*/
|
||||||
|
private TurnAutomatonState currentState;
|
||||||
|
private final PowerCardState powerCardState;
|
||||||
|
private final PlayPowerCardState playPowerCardState;
|
||||||
|
private final RollDiceState rollDiceState;
|
||||||
|
private final ChoosePieceState choosePieceState;
|
||||||
|
private final MovePieceState movePieceState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs a server state of the specified game logic.
|
* Constructs a server state of the specified game logic.
|
||||||
*
|
*
|
||||||
@@ -12,6 +27,11 @@ public class TurnState extends GameAutomatonState {
|
|||||||
*/
|
*/
|
||||||
public TurnState(GameState gameAutomaton, ServerGameLogic logic) {
|
public TurnState(GameState gameAutomaton, ServerGameLogic logic) {
|
||||||
super(gameAutomaton, logic);
|
super(gameAutomaton, logic);
|
||||||
|
this.powerCardState = new PowerCardState(this, logic);
|
||||||
|
this.playPowerCardState = new PlayPowerCardState(this, logic);
|
||||||
|
this.rollDiceState = new RollDiceState(this, logic);
|
||||||
|
this.choosePieceState = new ChoosePieceState(this, logic);
|
||||||
|
this.movePieceState = new MovePieceState(this, logic);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -23,4 +43,72 @@ public void enter() {
|
|||||||
public void exit() {
|
public void exit() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will be used to return currentState attribute of TurnState class.
|
||||||
|
*
|
||||||
|
* @return currentState as a TurnAutomatonState object.
|
||||||
|
*/
|
||||||
|
public TurnAutomatonState getCurrentState() {
|
||||||
|
return this.currentState;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will be used to return powerCardState attribute of TurnState class.
|
||||||
|
*
|
||||||
|
* @return powerCardState as a PowerCardState object.
|
||||||
|
*/
|
||||||
|
public PowerCardState getPowerCardState() {
|
||||||
|
return this.powerCardState;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will be used to return playPowerCardState attribute of TurnState class.
|
||||||
|
*
|
||||||
|
* @return playPowerState as a PlayPowerCardState object.
|
||||||
|
*/
|
||||||
|
public PlayPowerCardState getPlayPowerCardState() {
|
||||||
|
return this.playPowerCardState;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will be used to return rollDiceState attribute of TurnState class.
|
||||||
|
*
|
||||||
|
* @return rollDiceState as a RollDiceState object.
|
||||||
|
*/
|
||||||
|
public RollDiceState getRollDiceState() {
|
||||||
|
return this.rollDiceState;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will be used to return choosePieceState attribute of TurnState class.
|
||||||
|
*
|
||||||
|
* @return choosePieceState as a ChoosePieceState object.
|
||||||
|
*/
|
||||||
|
public ChoosePieceState getChoosePieceState() {
|
||||||
|
return this.choosePieceState;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will be used to return movePieceState attribute of TurnState class.
|
||||||
|
*
|
||||||
|
* @return movePieceState as a MovePieceState object.
|
||||||
|
*/
|
||||||
|
public MovePieceState getMovePieceState() {
|
||||||
|
return this.movePieceState;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method will be used to set currentState attribute of TurnState class to the given state parameter.
|
||||||
|
* In Addition, the currentState will be exited, changed and entered.
|
||||||
|
*
|
||||||
|
* @param state as the new currentState attribute as a TurnAutomatonState object.
|
||||||
|
*/
|
||||||
|
public void setCurrentState(TurnAutomatonState state) {
|
||||||
|
if (this.currentState != null) {
|
||||||
|
this.currentState.exit();
|
||||||
|
}
|
||||||
|
this.currentState = state;
|
||||||
|
this.currentState.enter();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,24 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.TurnState;
|
import pp.mdga.server.automaton.game.TurnState;
|
||||||
|
|
||||||
public class ChoosePieceState extends TurnState {
|
public class ChoosePieceState extends TurnAutomatonState {
|
||||||
public ChoosePieceState(ServerGameLogic logic) {
|
/**
|
||||||
super(logic);
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param turnAutomaton as the automaton of the turn state as a GameState object.
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public ChoosePieceState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||||
|
super(turnAutomaton, logic);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,25 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.TurnState;
|
import pp.mdga.server.automaton.game.TurnState;
|
||||||
|
|
||||||
public class MovePieceState extends TurnState {
|
public class MovePieceState extends TurnAutomatonState {
|
||||||
public MovePieceState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
/**
|
||||||
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param turnAutomaton as the automaton of the turn state as a GameState object.
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public MovePieceState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||||
|
super(turnAutomaton, logic);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package pp.mdga.server.automaton.game.turn;
|
||||||
|
|
||||||
|
import pp.mdga.server.ServerGameLogic;
|
||||||
|
import pp.mdga.server.automaton.game.TurnState;
|
||||||
|
|
||||||
|
public class PlayPowerCardState extends TurnAutomatonState {
|
||||||
|
/**
|
||||||
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param turnAutomaton as the automaton of the turn state as a GameState object.
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public PlayPowerCardState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||||
|
super(turnAutomaton, logic);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,8 +3,24 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.TurnState;
|
import pp.mdga.server.automaton.game.TurnState;
|
||||||
|
|
||||||
public class PowerCardState extends TurnState {
|
public class PowerCardState extends TurnAutomatonState {
|
||||||
public PowerCardState(ServerGameLogic logic) {
|
/**
|
||||||
super(logic);
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param turnAutomaton as the automaton of the turn state as a GameState object.
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public PowerCardState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||||
|
super(turnAutomaton, logic);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,24 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.TurnState;
|
import pp.mdga.server.automaton.game.TurnState;
|
||||||
|
|
||||||
public class RollDiceState extends TurnState {
|
public class RollDiceState extends TurnAutomatonState {
|
||||||
public RollDiceState(ServerGameLogic logic) {
|
/**
|
||||||
super(logic);
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param turnAutomaton as the automaton of the turn state as a GameState object.
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public RollDiceState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||||
|
super(turnAutomaton, logic);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void enter() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void exit() {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package pp.mdga.server.automaton.game.turn;
|
||||||
|
|
||||||
|
import pp.mdga.server.ServerGameLogic;
|
||||||
|
import pp.mdga.server.automaton.ServerState;
|
||||||
|
import pp.mdga.server.automaton.game.TurnState;
|
||||||
|
|
||||||
|
public abstract class TurnAutomatonState extends ServerState {
|
||||||
|
/**
|
||||||
|
* Create TurnAutomatonState attributes.
|
||||||
|
*/
|
||||||
|
protected final TurnState turnAutomaton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param turnAutomaton as the automaton of the turn state as a GameState object.
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public TurnAutomatonState(TurnState turnAutomaton, ServerGameLogic logic) {
|
||||||
|
super(logic);
|
||||||
|
this.turnAutomaton = turnAutomaton;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package pp.mdga.server.automaton.game.turn.choosepiece;
|
||||||
|
|
||||||
|
import pp.mdga.server.ServerGameLogic;
|
||||||
|
import pp.mdga.server.automaton.ServerState;
|
||||||
|
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
||||||
|
|
||||||
|
public abstract class ChoosePieceAutomatonState extends ServerState {
|
||||||
|
/**
|
||||||
|
* Create ChoosePieceAutomatonState attributes.
|
||||||
|
*/
|
||||||
|
protected final ChoosePieceState choosePieceAutomaton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public ChoosePieceAutomatonState(ChoosePieceState choosePieceAutomaton, ServerGameLogic logic) {
|
||||||
|
super(logic);
|
||||||
|
this.choosePieceAutomaton = choosePieceAutomaton;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,8 +3,5 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
||||||
|
|
||||||
public class NoPieceState extends ChoosePieceState {
|
public class NoPieceState {
|
||||||
public NoPieceState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,5 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
||||||
|
|
||||||
public class NoTurnState extends ChoosePieceState {
|
public class NoTurnState {
|
||||||
public NoTurnState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
||||||
|
|
||||||
public class SelectPieceState extends ChoosePieceState {
|
public class SelectPieceState {
|
||||||
public SelectPieceState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,5 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
||||||
|
|
||||||
public class StartPieceState extends ChoosePieceState {
|
public class StartPieceState {
|
||||||
public StartPieceState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,5 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
import pp.mdga.server.automaton.game.turn.ChoosePieceState;
|
||||||
|
|
||||||
public class WaitingPieceState extends ChoosePieceState {
|
public class WaitingPieceState {
|
||||||
public WaitingPieceState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,5 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.RollDiceState;
|
import pp.mdga.server.automaton.game.turn.RollDiceState;
|
||||||
|
|
||||||
public class FirstRollStateState extends RollDiceState {
|
public class FirstRollStateState {
|
||||||
public FirstRollStateState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
package pp.mdga.server.automaton.game.turn.rolldice;
|
||||||
|
|
||||||
|
import pp.mdga.server.ServerGameLogic;
|
||||||
|
import pp.mdga.server.automaton.ServerState;
|
||||||
|
import pp.mdga.server.automaton.game.turn.RollDiceState;
|
||||||
|
|
||||||
|
public abstract class RollDiceAutomatonState extends ServerState {
|
||||||
|
/**
|
||||||
|
* Create RollDiceAutomatonState attributes.
|
||||||
|
*/
|
||||||
|
protected final RollDiceState rollDiceAutomaton;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a server state of the specified game logic.
|
||||||
|
*
|
||||||
|
* @param logic the game logic
|
||||||
|
*/
|
||||||
|
public RollDiceAutomatonState(RollDiceState rollDiceAutomaton, ServerGameLogic logic) {
|
||||||
|
super(logic);
|
||||||
|
this.rollDiceAutomaton = rollDiceAutomaton;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,8 +3,5 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.RollDiceState;
|
import pp.mdga.server.automaton.game.turn.RollDiceState;
|
||||||
|
|
||||||
public class SecondRollState extends RollDiceState {
|
public class SecondRollState {
|
||||||
public SecondRollState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,5 @@
|
|||||||
import pp.mdga.server.ServerGameLogic;
|
import pp.mdga.server.ServerGameLogic;
|
||||||
import pp.mdga.server.automaton.game.turn.RollDiceState;
|
import pp.mdga.server.automaton.game.turn.RollDiceState;
|
||||||
|
|
||||||
public class ThirdRollState extends RollDiceState {
|
public class ThirdRollState {
|
||||||
public ThirdRollState(ServerGameLogic logic) {
|
|
||||||
super(logic);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user