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 4cb2ca07..3b3d03b1 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 @@ -119,6 +119,10 @@ private void handleGame(Notification notification) { guiHandler.addCardOwn(n.getBonusCard()); app.getAcousticHandler().playSound(MdgaSound.BONUS); delay = STANDARD_DELAY; + } else if(notification instanceof RankingResponceNotification n) { + n.getRankingResults().forEach((c, i) -> { + guiHandler.rollRankingResult(c, i); + }); } else if (notification instanceof ActivePlayerNotification n) { gameView.getGuiHandler().setActivePlayer(n.getColor()); boardHandler.hideDice(); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/WaitRankingState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/WaitRankingState.java index 341e1774..78787453 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/WaitRankingState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/determinestartplayerstate/WaitRankingState.java @@ -3,9 +3,14 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.gamestate.DetermineStartPlayerState; +import pp.mdga.game.Color; import pp.mdga.message.client.AnimationEndMessage; import pp.mdga.message.server.*; import pp.mdga.notification.ActivePlayerNotification; +import pp.mdga.notification.RankingResponceNotification; + +import java.util.HashMap; +import java.util.Map; public class WaitRankingState extends DetermineStartPlayerStates { @@ -45,7 +50,11 @@ public void received(DiceNowMessage msg){ @Override public void received(RankingResponseMessage msg){ - + Map rankingResults = new HashMap<>(); + for (var entry : msg.getRankingResults().entrySet()) { + rankingResults.put(logic.getGame().getPlayerById(entry.getKey()).getColor(), entry.getValue()); + } + logic.addNotification(new RankingResponceNotification(rankingResults)); } @Override diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/notification/RankingResponceNotification.java b/Projekte/mdga/model/src/main/java/pp/mdga/notification/RankingResponceNotification.java new file mode 100644 index 00000000..fd39acc6 --- /dev/null +++ b/Projekte/mdga/model/src/main/java/pp/mdga/notification/RankingResponceNotification.java @@ -0,0 +1,30 @@ +package pp.mdga.notification; + +import pp.mdga.game.Color; +import pp.mdga.message.server.ServerMessage; + +import java.util.HashMap; +import java.util.Map; + +public class RankingResponceNotification extends Notification { + private final Map rankingResults; + /** + * Constructor. + * + * @param rankingResults as the results of all players after the start player was determined as a Map combining + * Integers and Integers. + */ + public RankingResponceNotification(Map rankingResults) { + super(); + this.rankingResults = rankingResults; + } + + /** + * This method will be used to return rankingResults attribute of RankingResponseMessage class. + * + * @return rankingResults as a Map combining Integers and Integers. + */ + public Map getRankingResults() { + return this.rankingResults; + } +}