From 4007036cb23f3661d19684caab7853bf537215b9 Mon Sep 17 00:00:00 2001 From: Benjamin Feyer Date: Mon, 9 Dec 2024 18:50:54 +0100 Subject: [PATCH] bug fixes --- .../mdga/client/gamestate/WaitingState.java | 46 +++++++++++++++++-- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java index 82a7d1dc..794000a3 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/WaitingState.java @@ -3,6 +3,7 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.GameState; +import pp.mdga.game.Node; import pp.mdga.game.Piece; import pp.mdga.game.PieceState; import pp.mdga.message.server.*; @@ -87,10 +88,47 @@ public void received(ActivePlayerMessage msg) { public void received(MoveMessage msg) { Piece piece = logic.getGame().getPieceThroughUUID(msg.getPiece().getUuid()); if (msg.isHomeMove()) { - logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex())); - logic.getGame().getBoard().getInfield()[logic.getGame().getBoard().getInfieldIndexOfPiece(piece)].clearOccupant(); - logic.getGame().getPlayerByColor(piece.getColor()).setPieceInHome(msg.getTargetIndex(), piece); - } else { + if(piece.getState().equals(PieceState.HOME)){ + logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex())); + int pieceHomeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); + Node pieceNode = logic.getGame().getActivePlayer().getHomeNodes()[pieceHomeIndex]; + + //gets the oldNode + int homeIndex = logic.getGame().getActivePlayer().getHomeIndexOfPiece(piece); + Node oldNode = logic.getGame().getActivePlayer().getHomeNodes()[homeIndex]; + //gets the targetNode + Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[msg.getTargetIndex()]; + if (msg.getTargetIndex() ==logic.getGame().getActivePlayer().getHighestHomeIdx()) { + piece.setState(PieceState.HOMEFINISHED); + } + else{ + piece.setState(PieceState.HOME); + } + + oldNode.clearOccupant(); + targetNode.setOccupant(piece); + + } + else{ + logic.addNotification(new HomeMoveNotification(piece.getUuid(), msg.getTargetIndex())); + int oldNoteIdx = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); + Node oldNode = logic.getGame().getBoard().getInfield()[oldNoteIdx]; + + //gets the targetNode + Node targetNode = logic.getGame().getActivePlayer().getHomeNodes()[msg.getTargetIndex()]; + + if (msg.getTargetIndex() ==logic.getGame().getActivePlayer().getHighestHomeIdx()) { + piece.setState(PieceState.HOMEFINISHED); + } + else{ + piece.setState(PieceState.HOME); + } + + oldNode.clearOccupant(); + targetNode.setOccupant(piece); + } + } + else { int oldIndex = logic.getGame().getBoard().getInfieldIndexOfPiece(piece); Piece occ = logic.getGame().getBoard().getInfield()[msg.getTargetIndex()].getOccupant(); if (occ != null) {