summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/src/main/java/org/luxons/sevenwonders/game/cards/Requirements.java23
-rw-r--r--backend/src/main/java/org/luxons/sevenwonders/game/moves/PlayCardMove.java3
-rw-r--r--backend/src/main/java/org/luxons/sevenwonders/game/wonders/WonderStage.java4
-rw-r--r--backend/src/test/java/org/luxons/sevenwonders/game/cards/RequirementsTest.java7
4 files changed, 28 insertions, 9 deletions
diff --git a/backend/src/main/java/org/luxons/sevenwonders/game/cards/Requirements.java b/backend/src/main/java/org/luxons/sevenwonders/game/cards/Requirements.java
index 942b64b7..d0444233 100644
--- a/backend/src/main/java/org/luxons/sevenwonders/game/cards/Requirements.java
+++ b/backend/src/main/java/org/luxons/sevenwonders/game/cards/Requirements.java
@@ -30,6 +30,14 @@ public class Requirements {
this.resources = resources;
}
+ /**
+ * Returns whether the given board can pay for these requirements on its own.
+ *
+ * @param board
+ * the board to check
+ *
+ * @return true if the given board fulfills these requirements without any transaction with its neighbours
+ */
boolean isAffordedBy(Board board) {
return hasRequiredGold(board) && producesRequiredResources(board);
}
@@ -44,11 +52,20 @@ public class Requirements {
}
Resources leftToPay = resources.minus(board.getProduction().getFixedResources());
// TODO take into account resources buyable from neighbours
- return true;
+ return false;
}
- public boolean isAffordedBy(Table table, int playerIndex, List<BoughtResources> boughtResources) {
- Board board = table.getBoard(playerIndex);
+ /**
+ * Returns whether the given player can pay for these requirements, if he buys the specified resources.
+ *
+ * @param board
+ * the board to check
+ * @param boughtResources
+ * the resources the player intends to buy
+ *
+ * @return true if the given board fulfills these requirements
+ */
+ public boolean isAffordedBy(Board board, List<BoughtResources> boughtResources) {
if (!hasRequiredGold(board)) {
return false;
}
diff --git a/backend/src/main/java/org/luxons/sevenwonders/game/moves/PlayCardMove.java b/backend/src/main/java/org/luxons/sevenwonders/game/moves/PlayCardMove.java
index affebc4a..07022564 100644
--- a/backend/src/main/java/org/luxons/sevenwonders/game/moves/PlayCardMove.java
+++ b/backend/src/main/java/org/luxons/sevenwonders/game/moves/PlayCardMove.java
@@ -19,7 +19,8 @@ public class PlayCardMove extends CardFromHandMove {
if (!super.isValid(table, playerHand)) {
return false;
}
- return getCard().getRequirements().isAffordedBy(table, getPlayerIndex(), getBoughtResources());
+ Board board = table.getBoard(getPlayerIndex());
+ return getCard().getRequirements().isAffordedBy(board, getBoughtResources());
}
@Override
diff --git a/backend/src/main/java/org/luxons/sevenwonders/game/wonders/WonderStage.java b/backend/src/main/java/org/luxons/sevenwonders/game/wonders/WonderStage.java
index fc3fc573..af93d909 100644
--- a/backend/src/main/java/org/luxons/sevenwonders/game/wonders/WonderStage.java
+++ b/backend/src/main/java/org/luxons/sevenwonders/game/wonders/WonderStage.java
@@ -3,6 +3,7 @@ package org.luxons.sevenwonders.game.wonders;
import java.util.List;
import org.luxons.sevenwonders.game.api.Table;
+import org.luxons.sevenwonders.game.boards.Board;
import org.luxons.sevenwonders.game.cards.CardBack;
import org.luxons.sevenwonders.game.cards.Requirements;
import org.luxons.sevenwonders.game.effects.Effect;
@@ -37,7 +38,8 @@ public class WonderStage {
}
public boolean isBuildable(Table table, int playerIndex, List<BoughtResources> boughtResources) {
- return requirements.isAffordedBy(table, playerIndex, boughtResources);
+ Board board = table.getBoard(playerIndex);
+ return requirements.isAffordedBy(board, boughtResources);
}
void build(CardBack cardBack) {
diff --git a/backend/src/test/java/org/luxons/sevenwonders/game/cards/RequirementsTest.java b/backend/src/test/java/org/luxons/sevenwonders/game/cards/RequirementsTest.java
index a6e5151d..db8a016a 100644
--- a/backend/src/test/java/org/luxons/sevenwonders/game/cards/RequirementsTest.java
+++ b/backend/src/test/java/org/luxons/sevenwonders/game/cards/RequirementsTest.java
@@ -38,7 +38,7 @@ public class RequirementsTest {
Table table = new Table(Collections.singletonList(board));
assertEquals(boardGold >= requiredGold, requirements.isAffordedBy(board));
- assertEquals(boardGold >= requiredGold, requirements.isAffordedBy(table, 0, Collections.emptyList()));
+ assertEquals(boardGold >= requiredGold, requirements.isAffordedBy(board, Collections.emptyList()));
assertEquals(boardGold >= requiredGold, requirements.couldBeAffordedBy(table, 0));
}
@@ -52,7 +52,7 @@ public class RequirementsTest {
Table table = new Table(Collections.singletonList(board));
assertEquals(initialResource == requiredResource, requirements.isAffordedBy(board));
- assertEquals(initialResource == requiredResource, requirements.isAffordedBy(table, 0, Collections.emptyList()));
+ assertEquals(initialResource == requiredResource, requirements.isAffordedBy(board, Collections.emptyList()));
if (initialResource == requiredResource) {
assertTrue(requirements.couldBeAffordedBy(table, 0));
@@ -73,8 +73,7 @@ public class RequirementsTest {
Table table = new Table(Collections.singletonList(board));
assertEquals(producedResource == requiredResource, requirements.isAffordedBy(board));
- assertEquals(producedResource == requiredResource,
- requirements.isAffordedBy(table, 0, Collections.emptyList()));
+ assertEquals(producedResource == requiredResource, requirements.isAffordedBy(board, Collections.emptyList()));
if (producedResource == requiredResource) {
assertTrue(requirements.couldBeAffordedBy(table, 0));
bgstack15