From 5e274738759fca5e2b3f4487ed0407efeb9f4f36 Mon Sep 17 00:00:00 2001 From: Cedric Beck Date: Sun, 8 Dec 2024 19:10:25 +0100 Subject: [PATCH] fixed bugs in MoveMessage --- .../mdga/client/NotificationSynchronizer.java | 2 ++ .../java/pp/mdga/client/gui/DiceControl.java | 6 ++-- .../main/java/pp/mdga/client/GameState.java | 1 - .../pp/mdga/client/gamestate/TurnState.java | 1 - .../gamestate/turnstate/ChoosePieceState.java | 1 - .../choosepiecestate/SelectPieceState.java | 3 +- .../choosepiecestate/StartPieceState.java | 15 ++++++---- .../turn/choosepiece/SelectPieceState.java | 29 +++++++++++-------- 8 files changed, 34 insertions(+), 24 deletions(-) diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java index b98bb728..64aadb52 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/NotificationSynchronizer.java @@ -61,6 +61,8 @@ public void update() { case NONE: throw new RuntimeException("no notification expected: " + n.getClass().getName()); } + + delay = 0; } } } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java index cf044203..5c08d93d 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/gui/DiceControl.java @@ -51,7 +51,8 @@ protected void controlUpdate(float tpf) { ); // Stop rolling when angular velocity is close to zero - if (angularVelocity.lengthSquared() < 3f) { +// if (angularVelocity.lengthSquared() < 3f) { + if(true){ slerp = true; } } @@ -65,7 +66,8 @@ protected void controlUpdate(float tpf) { spatial.setLocalRotation(interpolated); // Stop rolling once duration is complete - if (timeElapsed >= 1.0f) { +// if (timeElapsed >= 1.0f) { + if(true){ isRolling = false; slerp = false; actionAfter.run(); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java index e827180b..2b846621 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/GameState.java @@ -152,7 +152,6 @@ public void received(RankingResponseMessage msg){ */ @Override public void received(SelectPieceMessage msg){ - System.out.println("SelectPieceMessage received in GameState"); state.received(msg); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java index 1e75b534..03a9b4ff 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/TurnState.java @@ -70,7 +70,6 @@ public void selectAnimationEnd(){ @Override public void received(SelectPieceMessage msg){ - System.out.println("SelectPieceMessage received in TurnState"); state.received(msg); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/ChoosePieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/ChoosePieceState.java index f72d8f41..57b7f257 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/ChoosePieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/ChoosePieceState.java @@ -49,7 +49,6 @@ public void selectPiece(Piece piece){ @Override public void received(SelectPieceMessage msg){ - System.out.println("SelectPieceMessage received in ChoosePieceState"); currentState.received(msg); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java index 175545ec..f97f7090 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/SelectPieceState.java @@ -26,12 +26,11 @@ public SelectPieceState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { - possiblePieces = new ArrayList<>(); } @Override public void exit() { - + possiblePieces = new ArrayList<>(); } public void setPossiblePieces(ArrayList possiblePieces) { diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java index bd5f7cde..7f601630 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/choosepiecestate/StartPieceState.java @@ -3,6 +3,7 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.gamestate.turnstate.ChoosePieceState; +import pp.mdga.game.Node; import pp.mdga.game.Piece; import pp.mdga.message.client.RequestMoveMessage; import pp.mdga.message.client.SelectedPiecesMessage; @@ -49,17 +50,21 @@ public void selectPiece(Piece piece){ @Override public void received(MoveMessage msg){ Piece piece = logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()); - int i = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); - LOGGER.log(System.Logger.Level.INFO, "Received MoveMessage with start index: " + i); + int oldIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); + int targetIndex = msg.getTargetIndex(); + Node targetNode = logic.getGame().getBoard().getInfield()[targetIndex]; + //clear old Node + logic.getGame().getBoard().getInfield()[oldIndex].clearOccupant(); - Piece occ = logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant(); + //get Occupant + Piece occ = targetNode.getOccupant(); if (occ != null){ logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); logic.addNotification(new ThrowPieceNotification(occ.getUuid(), piece.getColor())); } - logic.addNotification(new MovePieceNotification(msg.getPiece().getUuid(), i, msg.getTargetIndex())); - logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].setOccupant(msg.getPiece()); + targetNode.setOccupant(msg.getPiece()); + logic.addNotification(new MovePieceNotification(msg.getPiece().getUuid(), oldIndex, targetIndex)); parent.getParent().setState(parent.getParent().getMovePiece()); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java index bbc69c26..9aca4089 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/game/turn/choosepiece/SelectPieceState.java @@ -63,28 +63,33 @@ public void received(RequestMoveMessage msg, int from){ } int indexOfPiece = moveablePieces.indexOf(msg.getPiece()); - logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(moveablePieces.get(indexOfPiece))].clearOccupant(); - if (isHomeMove.get(indexOfPiece)) { - logic.getGame().getPlayerByColor(msg.getPiece().getColor()).setPieceInHome(targetIndex.get(indexOfPiece), logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid())); + Piece movePiece = moveablePieces.get(indexOfPiece); + boolean homeMove = isHomeMove.get(indexOfPiece); + int targIdx = targetIndex.get(indexOfPiece); + + Node oldNode = logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(movePiece)]; + oldNode.clearOccupant(); + if (homeMove) { + //setPieceInHome + logic.getGame().getPlayerByColor(msg.getPiece().getColor()).setPieceInHome(targIdx, movePiece); + if (logic.getGame().getPlayerByColor(msg.getPiece().getColor()).isHomeFinished(logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()))) { - logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()).setState(PieceState.HOMEFINISHED); - } else { - logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()).setState(PieceState.HOME); + movePiece.setState(PieceState.HOMEFINISHED); } - logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()).setShield(ShieldState.NONE); + else { + movePiece.setState(PieceState.HOME); + } + movePiece.setShield(ShieldState.NONE); } else { - Node targetNode = logic.getGame().getBoard().getInfield()[targetIndex.get(indexOfPiece)]; + Node targetNode = logic.getGame().getBoard().getInfield()[targIdx]; Piece occ = targetNode.getOccupant(); -// Piece occ = logic.getGame().getBoard().getInfield()[targetIndex.get(indexOfPiece)].moveOccupant(moveablePieces.get(indexOfPiece)); if (occ != null) { logic.getGame().getPlayerByColor(occ.getColor()).addWaitingPiece(occ); } - targetNode.setOccupant(msg.getPiece()); } - logic.getServerSender().broadcast(new MoveMessage(moveablePieces.get(indexOfPiece), isHomeMove.get(indexOfPiece), targetIndex.get(indexOfPiece))); + logic.getServerSender().broadcast(new MoveMessage(movePiece, homeMove, targIdx)); this.choosePieceAutomaton.getTurnAutomaton().setCurrentState(this.choosePieceAutomaton.getTurnAutomaton().getMovePieceState()); - } /**