diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java index 275d66da..aaf07489 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/BoardHandler.java @@ -541,7 +541,6 @@ public void shieldPiece(UUID uuid){ * @param uuid the UUID of the piece to unshield */ public void unshieldPiece(UUID uuid){ - pieces.get(uuid).deactivateShield(); } diff --git a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PieceControl.java b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PieceControl.java index 8db0b9b1..d317342f 100644 --- a/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PieceControl.java +++ b/Projekte/mdga/client/src/main/java/pp/mdga/client/board/PieceControl.java @@ -150,6 +150,9 @@ public void rotateInit() { * This adds a visual shield effect in the form of a rotating ring. */ public void activateShield(){ + if(shieldRing != null){ + deactivateShield(); + } shieldRing = assetManager.loadModel(Asset.shieldRing.getModelPath()); shieldRing.scale(1f); shieldRing.rotate((float) Math.toRadians(0), 0, (float) Math.toRadians(0)); 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 bb1d4333..32e23fd7 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 @@ -294,17 +294,14 @@ public void received(ChoosePieceStateMessage msg){ @Override public void received(DrawCardMessage msg){ - if(msg.getCard() instanceof HiddenCard){ + logic.getGame().getActivePlayer().addHandCard(msg.getCard()); + if (msg.getCard() instanceof HiddenCard) { logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), BonusCard.HIDDEN)); - } else if(msg.getCard() instanceof TurboCard) { - logic.addNotification(new AcquireCardNotification(BonusCard.TURBO)); - } else if(msg.getCard() instanceof ShieldCard) { - logic.addNotification(new AcquireCardNotification(BonusCard.SHIELD)); - } else if(msg.getCard() instanceof SwapCard) { - logic.addNotification(new AcquireCardNotification(BonusCard.SWAP)); - } else { - throw new RuntimeException(); } + else{ + logic.addNotification(new AcquireCardNotification(msg.getCard().getCard())); + } + } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java index d0ae32c9..e6da6261 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/SpectatorState.java @@ -3,8 +3,10 @@ import pp.mdga.client.ClientGameLogic; import pp.mdga.client.ClientState; import pp.mdga.client.GameState; +import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; import pp.mdga.game.PieceState; +import pp.mdga.game.card.HiddenCard; import pp.mdga.message.server.*; import pp.mdga.notification.*; @@ -33,7 +35,12 @@ public void received(CeremonyMessage msg) { @Override public void received(DrawCardMessage msg){ - logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), msg.getCard().getCard())); + logic.getGame().getActivePlayer().addHandCard(msg.getCard()); + if (msg.getCard() instanceof HiddenCard) { + logic.addNotification(new DrawCardNotification(logic.getGame().getActiveColor(), BonusCard.HIDDEN)); + } + + //stats logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPlayerStatistic().increaseActivatedBonusNodes(); logic.getGame().getGameStatistics().increaseActivatedBonusNodes(); } 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 ee52b0fc..ec119d18 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 @@ -40,6 +40,7 @@ public TurnState(ClientState parent, ClientGameLogic logic) { @Override public void enter() { + logic = logic; for (Piece piece : logic.getGame().getPlayerByColor(logic.getGame().getActiveColor()).getPieces()) { if (piece.isShielded() || piece.isSuppressed()){ piece.setShield(ShieldState.NONE); diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java index f00acea8..7b22da92 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/client/gamestate/turnstate/powercardstate/ChoosePowerCardState.java @@ -5,6 +5,7 @@ import pp.mdga.client.gamestate.turnstate.PowerCardState; import pp.mdga.game.BonusCard; import pp.mdga.game.Piece; +import pp.mdga.game.Player; import pp.mdga.game.card.*; import pp.mdga.message.client.NoPowerCardMessage; import pp.mdga.message.client.SelectCardMessage; @@ -73,8 +74,14 @@ public void received(PossibleCardsMessage msg){ */ @Override public void selectCard(BonusCard card){ + Player player = logic.getGame().getPlayers().get(logic.getOwnPlayerId()); + ArrayList handCards = player.getHandCards(); if(card != null){ - logic.send(new SelectCardMessage(logic.getGame().getPlayers().get(logic.getOwnPlayerId()).getPowerCardByType(card))); + PowerCard select = player.getPowerCardByType(card); + if(select == null){ + select = select; + } + logic.send(new SelectCardMessage(select)); } else { logic.send(new NoPowerCardMessage()); } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java index 8aae71db..1a151a0f 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Game.java @@ -87,7 +87,7 @@ public Game() { gameStatistics = new Statistic(); initializeDrawPile(); board = new Board(); - die = new Die(1,2,3,4,5); + die = new Die(1,4); } /** diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java index a06df7f7..604ef1cd 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Node.java @@ -43,9 +43,6 @@ public Piece getOccupant() { * @param occupant the new occupant of the node */ public void setOccupant(Piece occupant) { - if (occupant.isSuppressed()) { - occupant.setShield(ShieldState.NONE); - } this.occupant = occupant; } diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java b/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java index c0cdf0f0..bd7f14f6 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/game/Player.java @@ -152,6 +152,7 @@ public PowerCard getPowerCardByType(BonusCard bonusCard) { } } return null; +// throw new RuntimeException("bonusCard is not in handCards"); } public Piece getWaitingPiece(){ diff --git a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java index 0465ca58..d0c2995c 100644 --- a/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java +++ b/Projekte/mdga/model/src/main/java/pp/mdga/server/automaton/LobbyState.java @@ -61,6 +61,30 @@ public void initializeGame() { player.addHandCard(new ShieldCard()); player.addHandCard(new TurboCard()); player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new TurboCard()); + player.addHandCard(new SwapCard()); player.addHandCard(new SwapCard());