From 101dcb7213f4ebf759b0aad65f0976b7f78f4a86 Mon Sep 17 00:00:00 2001 From: Joffrey BION Date: Fri, 17 May 2019 00:01:57 +0200 Subject: WIP back to JVM for common module to see if it works --- .../org/luxons/sevenwonders/game/api/Boards.kt | 44 --------------- .../sevenwonders/game/api/CustomizableSettings.kt | 45 --------------- .../luxons/sevenwonders/game/api/PlayerTurnInfo.kt | 35 ------------ .../org/luxons/sevenwonders/game/api/Table.kt | 24 -------- .../game/boards/RelativeBoardPosition.kt | 16 ------ .../org/luxons/sevenwonders/game/cards/Cards.kt | 65 ---------------------- .../game/cards/HandRotationDirection.kt | 11 ---- .../org/luxons/sevenwonders/game/moves/MoveType.kt | 9 --- .../luxons/sevenwonders/game/resources/Provider.kt | 8 --- .../game/resources/ResourceTransactions.kt | 9 --- .../sevenwonders/game/resources/ResourceType.kt | 26 --------- .../org/luxons/sevenwonders/game/wonders/Wonder.kt | 32 ----------- 12 files changed, 324 deletions(-) delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Boards.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/CustomizableSettings.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/PlayerTurnInfo.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Table.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/boards/RelativeBoardPosition.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/Cards.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/HandRotationDirection.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/moves/MoveType.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/Provider.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceTransactions.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceType.kt delete mode 100644 sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/wonders/Wonder.kt (limited to 'sw-common-model/src/commonMain/kotlin/org/luxons') diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Boards.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Boards.kt deleted file mode 100644 index 698615e9..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Boards.kt +++ /dev/null @@ -1,44 +0,0 @@ -package org.luxons.sevenwonders.game.api - -import org.luxons.sevenwonders.game.cards.TableCard -import org.luxons.sevenwonders.game.resources.ResourceType -import org.luxons.sevenwonders.game.wonders.ApiWonder - -data class Board( - val playerIndex: Int, - val wonder: ApiWonder, - val production: ApiProduction, - val publicProduction: ApiProduction, - val science: ApiScience, - val military: ApiMilitary, - val playedCards: List>, - val gold: Int -) - -data class ApiRequirements( - val gold: Int = 0, - val resources: List = emptyList() -) - -data class ApiProduction( - val fixedResources: List, - val alternativeResources: Set> -) - -data class ApiCountedResource( - val count: Int, - val type: ResourceType -) - -data class ApiMilitary( - val nbShields: Int, - val totalPoints: Int, - val nbDefeatTokens: Int -) - -data class ApiScience( - val jokers: Int, - val nbWheels: Int, - val nbCompasses: Int, - val nbTablets: Int -) diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/CustomizableSettings.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/CustomizableSettings.kt deleted file mode 100644 index ac2c2b14..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/CustomizableSettings.kt +++ /dev/null @@ -1,45 +0,0 @@ -package org.luxons.sevenwonders.game.api - -import kotlin.random.Random - -data class CustomizableSettings( - val randomSeedForTests: Long? = null, - val timeLimitInSeconds: Int = 45, - val wonderSidePickMethod: WonderSidePickMethod = WonderSidePickMethod.EACH_RANDOM, - val initialGold: Int = 3, - val discardedCardGold: Int = 3, - val defaultTradingCost: Int = 2, - val pointsPer3Gold: Int = 1, - val lostPointsPerDefeat: Int = 1, - val wonPointsPerVictoryPerAge: Map = mapOf(1 to 1, 2 to 3, 3 to 5) -) - -enum class WonderSide { - A, - B -} - -enum class WonderSidePickMethod { - ALL_A { - override fun pickSide(random: Random, lastPickedSide: WonderSide?): WonderSide { - return WonderSide.A - } - }, - ALL_B { - override fun pickSide(random: Random, lastPickedSide: WonderSide?): WonderSide { - return WonderSide.B - } - }, - EACH_RANDOM { - override fun pickSide(random: Random, lastPickedSide: WonderSide?): WonderSide { - return if (random.nextBoolean()) WonderSide.A else WonderSide.B - } - }, - SAME_RANDOM_FOR_ALL { - override fun pickSide(random: Random, lastPickedSide: WonderSide?): WonderSide { - return lastPickedSide ?: if (random.nextBoolean()) WonderSide.A else WonderSide.B - } - }; - - abstract fun pickSide(random: Random, lastPickedSide: WonderSide?): WonderSide -} diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/PlayerTurnInfo.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/PlayerTurnInfo.kt deleted file mode 100644 index c5feb6c5..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/PlayerTurnInfo.kt +++ /dev/null @@ -1,35 +0,0 @@ -package org.luxons.sevenwonders.game.api - -import org.luxons.sevenwonders.game.cards.HandCard -import org.luxons.sevenwonders.game.cards.TableCard -import org.luxons.sevenwonders.game.moves.MoveType -import org.luxons.sevenwonders.game.resources.ResourceTransactions -import org.luxons.sevenwonders.game.resources.noTransactions -import org.luxons.sevenwonders.game.wonders.WonderBuildability - -enum class Action(val message: String) { - PLAY("Pick the card you want to play or discard."), - PLAY_2("Pick the first card you want to play or discard. Note that you have the ability to play these 2 last cards. You will choose how to play the last one during your next turn."), - PLAY_LAST("You have the special ability to play your last card. Choose how you want to play it."), - PICK_NEIGHBOR_GUILD("Choose a Guild card (purple) that you want to copy from one of your neighbours."), - WAIT("Please wait for other players to perform extra actions.") -} - -data class PlayerTurnInfo( - val playerIndex: Int, - val table: Table, - val action: Action, - val hand: List, - val preparedMove: PlayedMove?, - val neighbourGuildCards: List -) { - val currentAge: Int = table.currentAge - val message: String = action.message - val wonderBuildability: WonderBuildability = table.boards[playerIndex].wonder.buildability -} - -data class PlayerMove( - val type: MoveType, - val cardName: String, - val transactions: ResourceTransactions = noTransactions() -) diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Table.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Table.kt deleted file mode 100644 index 23ab6ee2..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/api/Table.kt +++ /dev/null @@ -1,24 +0,0 @@ -package org.luxons.sevenwonders.game.api - -import org.luxons.sevenwonders.game.cards.HandRotationDirection -import org.luxons.sevenwonders.game.cards.TableCard -import org.luxons.sevenwonders.game.moves.MoveType -import org.luxons.sevenwonders.game.resources.ResourceTransactions - -typealias Age = Int - -data class Table( - val boards: List, - val currentAge: Age, - val handRotationDirection: HandRotationDirection, - val lastPlayedMoves: List -) { - val nbPlayers: Int = boards.size -} - -data class PlayedMove( - val playerIndex: Int, - val type: MoveType, - val card: TableCard, - val transactions: ResourceTransactions -) diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/boards/RelativeBoardPosition.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/boards/RelativeBoardPosition.kt deleted file mode 100644 index 3a8387a3..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/boards/RelativeBoardPosition.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.luxons.sevenwonders.game.boards - -enum class RelativeBoardPosition(private val offset: Int) { - LEFT(-1), - SELF(0), - RIGHT(1); - - fun getIndexFrom(playerIndex: Int, nbPlayers: Int): Int = (playerIndex + offset) floorMod nbPlayers -} - -fun neighboursPositions() = listOf(RelativeBoardPosition.LEFT, RelativeBoardPosition.RIGHT) - -private infix fun Int.floorMod(divisor: Int): Int { - val rem = this % divisor - return if (rem >= 0) rem else rem + divisor -} diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/Cards.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/Cards.kt deleted file mode 100644 index ab0e0297..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/Cards.kt +++ /dev/null @@ -1,65 +0,0 @@ -package org.luxons.sevenwonders.game.cards - -import org.luxons.sevenwonders.game.api.ApiRequirements -import org.luxons.sevenwonders.game.resources.ResourceTransactions - -data class TableCard( - val name: String, - val color: Color, - val requirements: ApiRequirements, - val chainParent: String?, - val chainChildren: List, - val image: String, - val back: CardBack, - val playedDuringLastMove: Boolean -) - -/** - * A card with contextual information relative to the hand it is sitting in. The extra information is especially useful - * because it frees the client from a painful business logic implementation. - */ -data class HandCard( - val name: String, - val color: Color, - val requirements: ApiRequirements, - val chainParent: String?, - val chainChildren: List, - val image: String, - val back: CardBack, - val playability: CardPlayability -) - -data class CardBack(val image: String) - -enum class PlayabilityLevel { - CHAINABLE, - NO_REQUIREMENTS, - ENOUGH_RESOURCES, - ENOUGH_GOLD, - ENOUGH_GOLD_AND_RES, - REQUIRES_HELP, - MISSING_REQUIRED_GOLD, - MISSING_GOLD_FOR_RES, - UNAVAILABLE_RESOURCES, - INCOMPATIBLE_WITH_BOARD -} - -enum class Color(val isResource: Boolean) { - BROWN(true), - GREY(true), - YELLOW(false), - BLUE(false), - GREEN(false), - RED(false), - PURPLE(false) -} - -data class CardPlayability( - val isPlayable: Boolean, - val isChainable: Boolean = false, - val minPrice: Int = Int.MAX_VALUE, - val cheapestTransactions: Set = emptySet(), - val playabilityLevel: PlayabilityLevel -) { - val isFree: Boolean = minPrice == 0 -} diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/HandRotationDirection.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/HandRotationDirection.kt deleted file mode 100644 index a10ec19f..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/cards/HandRotationDirection.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.luxons.sevenwonders.game.cards - -enum class HandRotationDirection { - LEFT, - RIGHT; - - companion object { - // clockwise (pass to the left) at age 1, and alternating - fun forAge(age: Int): HandRotationDirection = if (age % 2 == 0) RIGHT else LEFT - } -} diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/moves/MoveType.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/moves/MoveType.kt deleted file mode 100644 index d982c100..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/moves/MoveType.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.luxons.sevenwonders.game.moves - -enum class MoveType { - PLAY, - PLAY_FREE, - UPGRADE_WONDER, - DISCARD, - COPY_GUILD; -} diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/Provider.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/Provider.kt deleted file mode 100644 index 5d0f3159..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/Provider.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.luxons.sevenwonders.game.resources - -import org.luxons.sevenwonders.game.boards.RelativeBoardPosition - -enum class Provider(val boardPosition: RelativeBoardPosition) { - LEFT_PLAYER(RelativeBoardPosition.LEFT), - RIGHT_PLAYER(RelativeBoardPosition.RIGHT) -} diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceTransactions.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceTransactions.kt deleted file mode 100644 index 77a8670d..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceTransactions.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.luxons.sevenwonders.game.resources - -import org.luxons.sevenwonders.game.api.ApiCountedResource - -typealias ResourceTransactions = Collection - -data class ResourceTransaction(val provider: Provider, val resources: List) - -fun noTransactions(): ResourceTransactions = emptySet() diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceType.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceType.kt deleted file mode 100644 index 5c92b887..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/resources/ResourceType.kt +++ /dev/null @@ -1,26 +0,0 @@ -package org.luxons.sevenwonders.game.resources - -enum class ResourceType(val symbol: Char) { - WOOD('W'), - STONE('S'), - ORE('O'), - CLAY('C'), - GLASS('G'), - PAPYRUS('P'), - LOOM('L'); - - companion object { - - private val typesPerSymbol = values().map { it.symbol to it }.toMap() - - fun fromSymbol(symbol: String): ResourceType { - if (symbol.length != 1) { - throw IllegalArgumentException("The given symbol must be a valid single-char resource type, got $symbol") - } - return fromSymbol(symbol[0]) - } - - fun fromSymbol(symbol: Char?): ResourceType = - typesPerSymbol[symbol] ?: throw IllegalArgumentException("Unknown resource type symbol '$symbol'") - } -} diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/wonders/Wonder.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/wonders/Wonder.kt deleted file mode 100644 index 6480e935..00000000 --- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/game/wonders/Wonder.kt +++ /dev/null @@ -1,32 +0,0 @@ -package org.luxons.sevenwonders.game.wonders - -import org.luxons.sevenwonders.game.api.ApiRequirements -import org.luxons.sevenwonders.game.cards.CardBack -import org.luxons.sevenwonders.game.cards.PlayabilityLevel -import org.luxons.sevenwonders.game.resources.ResourceTransactions -import org.luxons.sevenwonders.game.resources.ResourceType - -data class ApiWonder( - val name: String, - val initialResource: ResourceType, - val stages: List, - val image: String, - val nbBuiltStages: Int, - val buildability: WonderBuildability -) - -data class ApiWonderStage( - val cardBack: CardBack?, - val isBuilt: Boolean, - val requirements: ApiRequirements, - val builtDuringLastMove: Boolean -) - -data class WonderBuildability( - val isBuildable: Boolean, - val minPrice: Int = Int.MAX_VALUE, - val cheapestTransactions: Set = emptySet(), - val playabilityLevel: PlayabilityLevel -) { - val isFree: Boolean = minPrice == 0 -} -- cgit