fixed bug with seriliazation of Board, now sending playerdata seperate from teh board
This commit is contained in:
@@ -144,6 +144,8 @@ private void initializeSerializables() {
|
||||
Serializer.registerClass(StartNode.class);
|
||||
Serializer.registerClass(PlayerData.class);
|
||||
Serializer.registerClass(HomeNode.class);
|
||||
Serializer.registerClass(PlayerDataMessage.class);
|
||||
Serializer.registerClass(StartBriefingMessage.class);
|
||||
}
|
||||
|
||||
private void registerListeners() {
|
||||
|
||||
@@ -193,6 +193,16 @@ public void received(ServerStartGameMessage msg) {
|
||||
@Override
|
||||
public void received(ShutdownMessage msg) {state.received(msg);}
|
||||
|
||||
@Override
|
||||
public void received(StartBriefingMessage msg) {
|
||||
state.received(msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(PlayerDataMessage msg) {
|
||||
state.received(msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(StartPieceMessage msg) {
|
||||
state.received(msg);
|
||||
|
||||
@@ -183,6 +183,15 @@ public void received(WaitPieceMessage msg) {
|
||||
LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(StartBriefingMessage msg) {
|
||||
LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
|
||||
}
|
||||
|
||||
public void received(PlayerDataMessage msg) {
|
||||
LOGGER.log(Level.DEBUG, "Received {0} not allowed.", msg);
|
||||
}
|
||||
|
||||
public void selectPiece(Piece piece) {
|
||||
LOGGER.log(Level.DEBUG, "Selecting piece not allowed.");
|
||||
}
|
||||
|
||||
@@ -144,6 +144,16 @@ public void received(ServerStartGameMessage msg){
|
||||
currentState.received(msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(PlayerDataMessage msg){
|
||||
currentState.received(msg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(StartBriefingMessage msg){
|
||||
currentState.received(msg);
|
||||
}
|
||||
|
||||
public DialogStates getState() {
|
||||
return currentState;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
import pp.mdga.message.client.*;
|
||||
import pp.mdga.message.server.LobbyPlayerJoinedMessage;
|
||||
import pp.mdga.message.server.LobbyPlayerLeaveMessage;
|
||||
import pp.mdga.message.server.PlayerDataMessage;
|
||||
import pp.mdga.message.server.ServerStartGameMessage;
|
||||
import pp.mdga.message.server.StartBriefingMessage;
|
||||
import pp.mdga.message.server.UpdateReadyMessage;
|
||||
import pp.mdga.message.server.UpdateTSKMessage;
|
||||
import pp.mdga.notification.*;
|
||||
@@ -74,15 +76,24 @@ public void selectStart(){
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(ServerStartGameMessage msg){
|
||||
public void received(StartBriefingMessage msg){
|
||||
logic.getGame().setBoard(msg.getBoard());
|
||||
logic.addNotification(new GameNotification(logic.getGame().getPlayers().get(parent.getOwnPlayerId()).getColor()));
|
||||
for(Map.Entry<Color, PlayerData> entry : msg.getBoard().getPlayerData().entrySet()){
|
||||
List<UUID> pieceIds = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void received(PlayerDataMessage msg){
|
||||
logic.getGame().getBoard().addPlayerData(msg.getColor(), msg.getPlayerData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(ServerStartGameMessage msg){
|
||||
logic.addNotification(new GameNotification(logic.getGame().getPlayerById(parent.getOwnPlayerId()).getColor()));
|
||||
for (Map.Entry<Color, PlayerData> entry : logic.getGame().getBoard().getPlayerData().entrySet()) {
|
||||
List<UUID> pieceList = new ArrayList<>();
|
||||
for(Piece piece : entry.getValue().getPieces()){
|
||||
pieceIds.add(piece.getUuid());
|
||||
System.out.println(piece.getUuid());
|
||||
pieceList.add(piece.getUuid());
|
||||
}
|
||||
logic.addNotification(new PlayerInGameNotification(entry.getKey(), pieceIds, logic.getGame().getPlayerByColor(entry.getKey()).getName()));
|
||||
logic.addNotification(new PlayerInGameNotification(entry.getKey(), pieceList , logic.getGame().getPlayerByColor(entry.getKey()).getName()));
|
||||
}
|
||||
parent.startGame();
|
||||
}
|
||||
|
||||
@@ -14,34 +14,6 @@ public NetworkDialogState(ClientState parent, ClientGameLogic logic) {
|
||||
this.parent = (DialogsState) parent;
|
||||
}
|
||||
|
||||
private boolean checkIP(String IP){
|
||||
String[] parts = IP.split("\\.");
|
||||
|
||||
// Step 2: Check if there are exactly 4 parts
|
||||
if (parts.length != 4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Step 3: Check each part for valid number
|
||||
for (String part : parts) {
|
||||
try {
|
||||
// Step 4: Convert each part into a number
|
||||
int num = Integer.parseInt(part);
|
||||
|
||||
// Step 5: Check whether the number lies in between 0 and 255
|
||||
if (num < 0 || num > 255) {
|
||||
return false;
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
// If parsing fails, it's not a valid number
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// If all checks passed, return true
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enter() {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package pp.mdga.message.server;
|
||||
|
||||
import com.jme3.network.serializing.Serializable;
|
||||
import pp.mdga.game.Color;
|
||||
import pp.mdga.game.PlayerData;
|
||||
|
||||
@Serializable
|
||||
public class PlayerDataMessage extends ServerMessage{
|
||||
|
||||
private final PlayerData playerData;
|
||||
private final Color color;
|
||||
|
||||
public PlayerDataMessage(PlayerData playerData, Color color){
|
||||
super();
|
||||
this.playerData = playerData;
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
private PlayerDataMessage(){
|
||||
this(null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(ServerInterpreter interpreter) {
|
||||
interpreter.received(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfoTextKey() {
|
||||
return "";
|
||||
}
|
||||
|
||||
public PlayerData getPlayerData(){
|
||||
return playerData;
|
||||
}
|
||||
|
||||
public Color getColor(){
|
||||
return color;
|
||||
}
|
||||
}
|
||||
@@ -214,4 +214,8 @@ public interface ServerInterpreter {
|
||||
* @param shutdownMessage the SelectTSK message received.
|
||||
*/
|
||||
void received(ShutdownMessage shutdownMessage);
|
||||
|
||||
void received(StartBriefingMessage msg);
|
||||
|
||||
void received(PlayerDataMessage msg);
|
||||
}
|
||||
|
||||
@@ -8,28 +8,13 @@
|
||||
*/
|
||||
@Serializable
|
||||
public class ServerStartGameMessage extends ServerMessage {
|
||||
/**
|
||||
* Create ServerStartGameMessage attributes.
|
||||
*/
|
||||
private final Board board;
|
||||
|
||||
/**
|
||||
* Constructs a new ServerStartGame instance.
|
||||
*/
|
||||
public ServerStartGameMessage() {
|
||||
super();
|
||||
this.board = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param board as the complete board of this game as a Board object.
|
||||
*/
|
||||
public ServerStartGameMessage(Board board) {
|
||||
this.board = board;
|
||||
}
|
||||
|
||||
/**
|
||||
* Accepts a visitor to process this message.
|
||||
*
|
||||
@@ -40,15 +25,6 @@ public void accept(ServerInterpreter interpreter) {
|
||||
interpreter.received(this);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method will be used to return board attribute of ServerStartGameMessage class.
|
||||
*
|
||||
* @return board as a Board object.
|
||||
*/
|
||||
public Board getBoard() {
|
||||
return this.board;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string representation of this message.
|
||||
*
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package pp.mdga.message.server;
|
||||
|
||||
import com.jme3.network.serializing.Serializable;
|
||||
import pp.mdga.game.Board;
|
||||
|
||||
@Serializable
|
||||
public class StartBriefingMessage extends ServerMessage {
|
||||
|
||||
private final Board board;
|
||||
|
||||
public StartBriefingMessage(Board board) {
|
||||
super();
|
||||
this.board = board;
|
||||
}
|
||||
|
||||
private StartBriefingMessage() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public Board getBoard() {
|
||||
return this.board;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(ServerInterpreter interpreter) {
|
||||
interpreter.received(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfoTextKey() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,6 @@
|
||||
import pp.mdga.message.server.*;
|
||||
import pp.mdga.server.ServerGameLogic;
|
||||
|
||||
import java.lang.foreign.StructLayout;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -126,8 +125,12 @@ public void received(LobbyReadyMessage msg, int from) {
|
||||
|
||||
this.logic.getGame().setAllReady(true);
|
||||
if (this.logic.getGame().allReady()) {
|
||||
this.logic.getServerSender().broadcast(new StartBriefingMessage(this.logic.getGame().getBoard()));
|
||||
this.initializeGame();
|
||||
this.logic.getServerSender().broadcast(new ServerStartGameMessage(this.logic.getGame().getBoard()));
|
||||
for (Map.Entry<Color, PlayerData> entry : logic.getGame().getBoard().getPlayerData().entrySet()) {
|
||||
this.logic.getServerSender().broadcast(new PlayerDataMessage(entry.getValue(), entry.getKey()));
|
||||
}
|
||||
this.logic.getServerSender().broadcast(new ServerStartGameMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -173,7 +176,7 @@ public void received(LeaveGameMessage msg, int from) {
|
||||
public void received(StartGameMessage msg, int from) {
|
||||
if (msg.isForceStartGame() || this.logic.getGame().allReady()) {
|
||||
this.initializeGame();
|
||||
this.logic.getServerSender().broadcast(new ServerStartGameMessage(this.logic.getGame().getBoard()));
|
||||
this.logic.getServerSender().broadcast(new ServerStartGameMessage());
|
||||
this.logic.setCurrentState(this.logic.getGameState());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user