diff options
Diffstat (limited to 'sw-engine')
4 files changed, 9 insertions, 5 deletions
diff --git a/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Boards.kt b/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Boards.kt index c974c25f..7ff870cf 100644 --- a/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Boards.kt +++ b/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Boards.kt @@ -5,6 +5,7 @@ import org.luxons.sevenwonders.engine.boards.ScienceType import org.luxons.sevenwonders.engine.effects.RawPointsIncrease import org.luxons.sevenwonders.engine.moves.Move import org.luxons.sevenwonders.engine.resources.Resources +import org.luxons.sevenwonders.model.Age import org.luxons.sevenwonders.model.MoveType import org.luxons.sevenwonders.model.cards.Color import org.luxons.sevenwonders.model.cards.TableCard @@ -24,7 +25,7 @@ import org.luxons.sevenwonders.model.boards.Science as ApiScience import org.luxons.sevenwonders.model.wonders.ApiWonder as ApiWonder import org.luxons.sevenwonders.model.wonders.ApiWonderStage as ApiWonderStage -internal fun InternalBoard.toApiBoard(player: Player, lastMove: Move?): ApiBoard = +internal fun InternalBoard.toApiBoard(player: Player, lastMove: Move?, currentAge: Age): ApiBoard = ApiBoard( playerIndex = playerIndex, wonder = wonder.toApiWonder(player, lastMove), @@ -37,7 +38,8 @@ internal fun InternalBoard.toApiBoard(player: Player, lastMove: Move?): ApiBoard bluePoints = getPlayedCards() .filter { it.color == Color.BLUE } .flatMap { it.effects.filterIsInstance<RawPointsIncrease>() } - .sumBy { it.points } + .sumBy { it.points }, + canPlayAnyCardForFree = canPlayFreeCard(currentAge) ) internal fun List<TableCard>.toColumns(): List<List<TableCard>> { diff --git a/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Table.kt b/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Table.kt index 290b3dc9..ccb73cc1 100644 --- a/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Table.kt +++ b/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/converters/Table.kt @@ -7,7 +7,7 @@ import org.luxons.sevenwonders.engine.boards.Table import org.luxons.sevenwonders.model.TableState internal fun Table.toTableState(): TableState = TableState( - boards = boards.mapIndexed { i, b -> b.toApiBoard(SimplePlayer(i, this), lastPlayedMoves.getOrNull(i)) }, + boards = boards.mapIndexed { i, b -> b.toApiBoard(SimplePlayer(i, this), lastPlayedMoves.getOrNull(i), currentAge) }, currentAge = currentAge, handRotationDirection = handRotationDirection, lastPlayedMoves = lastPlayedMoves.map { it.toPlayedMove() } diff --git a/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/wonders/Wonder.kt b/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/wonders/Wonder.kt index 2fd369ee..0e1b37f0 100644 --- a/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/wonders/Wonder.kt +++ b/sw-engine/src/main/kotlin/org/luxons/sevenwonders/engine/wonders/Wonder.kt @@ -52,6 +52,8 @@ private object Buildability { fun alreadyBuilt() = WonderBuildability( isBuildable = false, + minPrice = Int.MAX_VALUE, + cheapestTransactions = emptySet(), playabilityLevel = PlayabilityLevel.INCOMPATIBLE_WITH_BOARD ) diff --git a/sw-engine/src/test/kotlin/org/luxons/sevenwonders/engine/GameTest.kt b/sw-engine/src/test/kotlin/org/luxons/sevenwonders/engine/GameTest.kt index e1a1b4a7..51a6376a 100644 --- a/sw-engine/src/test/kotlin/org/luxons/sevenwonders/engine/GameTest.kt +++ b/sw-engine/src/test/kotlin/org/luxons/sevenwonders/engine/GameTest.kt @@ -77,7 +77,7 @@ class GameTest { private fun PlayerTurnInfo.firstAvailableMove(): MoveExpectation? = when (action) { Action.PLAY, Action.PLAY_2, Action.PLAY_LAST -> createPlayCardMove(this) - Action.PLAY_FREE_DISCARDED -> createPlayFreeDiscardedMove(this) + Action.PLAY_FREE_DISCARDED -> createPlayFreeDiscardedCardMove(this) Action.PICK_NEIGHBOR_GUILD -> createPickGuildMove(this) Action.WAIT, Action.SAY_READY -> null Action.WATCH_SCORE -> fail("should not have WATCH_SCORE action before end of game") @@ -97,7 +97,7 @@ class GameTest { } } - private fun createPlayFreeDiscardedMove(turn: PlayerTurnInfo): MoveExpectation { + private fun createPlayFreeDiscardedCardMove(turn: PlayerTurnInfo): MoveExpectation { val card = turn.discardedCards?.random() ?: error("No discarded card to play") return MoveExpectation( turn.playerIndex, |