diff options
author | jbion <joffrey.bion@amadeus.com> | 2016-12-21 15:10:14 +0100 |
---|---|---|
committer | jbion <joffrey.bion@amadeus.com> | 2016-12-21 19:10:26 +0100 |
commit | 4103bb83cb0eb4f87422a39c80e7fad537182370 (patch) | |
tree | 8dd8bc2e92db40cd03cd5576c751f40702acc9b2 /src/main/java | |
parent | Remove Counter from application (diff) | |
download | seven-wonders-4103bb83cb0eb4f87422a39c80e7fad537182370.tar.gz seven-wonders-4103bb83cb0eb4f87422a39c80e7fad537182370.tar.bz2 seven-wonders-4103bb83cb0eb4f87422a39c80e7fad537182370.zip |
Make wonder level increase in 2 steps
This is required, like for the cards, in order to check the requirements before applying any money transaction, and also apply the effects to all new elements on the table.
Diffstat (limited to 'src/main/java')
3 files changed, 21 insertions, 9 deletions
diff --git a/src/main/java/org/luxons/sevenwonders/game/Game.java b/src/main/java/org/luxons/sevenwonders/game/Game.java index 53b8bc53..d9dec5fd 100644 --- a/src/main/java/org/luxons/sevenwonders/game/Game.java +++ b/src/main/java/org/luxons/sevenwonders/game/Game.java @@ -108,7 +108,7 @@ public class Game { table.placeCard(playerIndex, decks.getCard(move.getCardName())); break; case UPGRADE_WONDER: - // TODO pre-upgrade the level of wonder without effect + table.upgradeWonderStage(playerIndex); break; case DISCARD: discardedCards.add(decks.getCard(move.getCardName())); @@ -121,10 +121,10 @@ public class Game { preparedMoves.forEach((playerIndex, move) -> { switch (move.getType()) { case PLAY: - table.playCard(playerIndex, decks.getCard(move.getCardName())); + table.activateCard(playerIndex, decks.getCard(move.getCardName())); break; case UPGRADE_WONDER: - table.upgradeWonder(playerIndex); + table.activateCurrentWonderStage(playerIndex); break; case DISCARD: table.discard(playerIndex, settings.getDiscardedCardGold()); diff --git a/src/main/java/org/luxons/sevenwonders/game/api/Table.java b/src/main/java/org/luxons/sevenwonders/game/api/Table.java index 7a2e20dc..44813ee9 100644 --- a/src/main/java/org/luxons/sevenwonders/game/api/Table.java +++ b/src/main/java/org/luxons/sevenwonders/game/api/Table.java @@ -47,18 +47,23 @@ public class Table { board.addCard(card); } - public void upgradeWonder(int playerIndex) { + public void upgradeWonderStage(int playerIndex) { + Board board = boards.get(playerIndex); + board.increaseWonderLevel(); + } + + public void activateCard(int playerIndex, Card card) { Board board = boards.get(playerIndex); Board left = boards.get(wrapIndex(playerIndex - 1)); Board right = boards.get(wrapIndex(playerIndex + 1)); - board.upgradeWonderLevel(left, right); + card.applyTo(board, left, right); } - public void playCard(int playerIndex, Card card) { + public void activateCurrentWonderStage(int playerIndex) { Board board = boards.get(playerIndex); Board left = boards.get(wrapIndex(playerIndex - 1)); Board right = boards.get(wrapIndex(playerIndex + 1)); - card.applyTo(board, left, right); + board.activateCurrentWonderLevel(left, right); } public void discard(int playerIndex, int goldBonus) { diff --git a/src/main/java/org/luxons/sevenwonders/game/boards/Board.java b/src/main/java/org/luxons/sevenwonders/game/boards/Board.java index 08bedb89..1ac70daf 100644 --- a/src/main/java/org/luxons/sevenwonders/game/boards/Board.java +++ b/src/main/java/org/luxons/sevenwonders/game/boards/Board.java @@ -81,13 +81,20 @@ public class Board { return wonderLevel; } - public void upgradeWonderLevel(Board leftNeighbourBoard, Board rightNeighbourBoard) { + public void increaseWonderLevel() { int maxLevel = wonder.getLevels().size(); if (maxLevel == wonderLevel) { throw new IllegalStateException("This wonder has already reached its maximum level"); } this.wonderLevel++; - wonder.getLevels().get(wonderLevel).activate(this, leftNeighbourBoard, rightNeighbourBoard); + } + + public void activateCurrentWonderLevel(Board leftNeighbourBoard, Board rightNeighbourBoard) { + activateWonderLevel(wonderLevel, leftNeighbourBoard, rightNeighbourBoard); + } + + public void activateWonderLevel(int level, Board leftNeighbourBoard, Board rightNeighbourBoard) { + wonder.getLevels().get(level).activate(this, leftNeighbourBoard, rightNeighbourBoard); } public int getNbWarSymbols() { |