summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorjbion <joffrey.bion@amadeus.com>2016-12-21 15:10:14 +0100
committerjbion <joffrey.bion@amadeus.com>2016-12-21 19:10:26 +0100
commit4103bb83cb0eb4f87422a39c80e7fad537182370 (patch)
tree8dd8bc2e92db40cd03cd5576c751f40702acc9b2 /src/main
parentRemove Counter from application (diff)
downloadseven-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')
-rw-r--r--src/main/java/org/luxons/sevenwonders/game/Game.java6
-rw-r--r--src/main/java/org/luxons/sevenwonders/game/api/Table.java13
-rw-r--r--src/main/java/org/luxons/sevenwonders/game/boards/Board.java11
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() {
bgstack15