summaryrefslogtreecommitdiff
path: root/game-engine/src/main/kotlin/org/luxons
diff options
context:
space:
mode:
authorJoffrey BION <joffrey.bion@gmail.com>2018-07-10 22:53:54 +0200
committerJoffrey BION <joffrey.bion@gmail.com>2018-07-10 22:53:54 +0200
commita7da1b8463b98eb822f5359b039afa9e86aaef9f (patch)
treef27cc5b67ccbdcf1ad98c2bb881ad395746f19c2 /game-engine/src/main/kotlin/org/luxons
parentRefactor decks creation (diff)
downloadseven-wonders-a7da1b8463b98eb822f5359b039afa9e86aaef9f.tar.gz
seven-wonders-a7da1b8463b98eb822f5359b039afa9e86aaef9f.tar.bz2
seven-wonders-a7da1b8463b98eb822f5359b039afa9e86aaef9f.zip
Refactor wonders creation
Diffstat (limited to 'game-engine/src/main/kotlin/org/luxons')
-rw-r--r--game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinition.kt8
-rw-r--r--game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinitionLoader.kt2
-rw-r--r--game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderDefinition.kt25
-rw-r--r--game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderSideDefinition.kt14
-rw-r--r--game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderStageDefinition.kt13
5 files changed, 24 insertions, 38 deletions
diff --git a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinition.kt b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinition.kt
index 43703877..9c0ac87a 100644
--- a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinition.kt
+++ b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinition.kt
@@ -9,7 +9,7 @@ import org.luxons.sevenwonders.game.data.definitions.WonderDefinition
class GameDefinition internal constructor(
rules: GlobalRules,
- private val wonders: Array<WonderDefinition>,
+ private val wonders: List<WonderDefinition>,
private val decksDefinition: DecksDefinition
) {
val minPlayers: Int = rules.minPlayers
@@ -23,8 +23,8 @@ class GameDefinition internal constructor(
}
private fun assignBoards(settings: Settings, nbPlayers: Int): List<Board> {
- val randomizedWonders = wonders.toMutableList()
- randomizedWonders.shuffle(settings.random)
- return randomizedWonders.take(nbPlayers).mapIndexed { i, wDef -> Board(wDef.create(settings), i, settings) }
+ return wonders.shuffled(settings.random)
+ .take(nbPlayers)
+ .mapIndexed { i, wDef -> Board(wDef.create(settings.pickWonderSide()), i, settings) }
}
}
diff --git a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinitionLoader.kt b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinitionLoader.kt
index 74b5b086..103adcae 100644
--- a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinitionLoader.kt
+++ b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/GameDefinitionLoader.kt
@@ -30,7 +30,7 @@ class GameDefinitionLoader {
val rules = loadJson("global_rules.json", GlobalRules::class.java, gson)
val wonders = loadJson("wonders.json", Array<WonderDefinition>::class.java, gson)
val decksDefinition = loadJson("cards.json", DecksDefinition::class.java, gson)
- return GameDefinition(rules, wonders, decksDefinition)
+ return GameDefinition(rules, wonders.toList(), decksDefinition)
}
private fun <T> loadJson(filename: String, clazz: Class<T>, gson: Gson): T {
diff --git a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderDefinition.kt b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderDefinition.kt
index 2e6efac4..c75e18d4 100644
--- a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderDefinition.kt
+++ b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderDefinition.kt
@@ -1,16 +1,29 @@
package org.luxons.sevenwonders.game.data.definitions
-import org.luxons.sevenwonders.game.Settings
+import org.luxons.sevenwonders.game.cards.Requirements
import org.luxons.sevenwonders.game.data.WonderSide
+import org.luxons.sevenwonders.game.resources.ResourceType
import org.luxons.sevenwonders.game.wonders.Wonder
+import org.luxons.sevenwonders.game.wonders.WonderStage
internal class WonderDefinition(
private val name: String,
private val sides: Map<WonderSide, WonderSideDefinition>
) {
- fun create(settings: Settings): Wonder {
- val wonderSideDef = sides[settings.pickWonderSide()]!!
- val stages = wonderSideDef.createStages()
- return Wonder(name, wonderSideDef.initialResource, stages, wonderSideDef.image)
- }
+ fun create(wonderSide: WonderSide): Wonder = sides[wonderSide]!!.createWonder(name)
+}
+
+internal class WonderSideDefinition(
+ private val initialResource: ResourceType,
+ private val stages: List<WonderStageDefinition>,
+ private val image: String
+) {
+ fun createWonder(name: String): Wonder = Wonder(name, initialResource, stages.map { it.create() }, image)
+}
+
+internal class WonderStageDefinition(
+ private val requirements: Requirements,
+ private val effects: EffectsDefinition
+) {
+ fun create(): WonderStage = WonderStage(requirements, effects.create())
}
diff --git a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderSideDefinition.kt b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderSideDefinition.kt
deleted file mode 100644
index 247432e3..00000000
--- a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderSideDefinition.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.luxons.sevenwonders.game.data.definitions
-
-import org.luxons.sevenwonders.game.resources.ResourceType
-import org.luxons.sevenwonders.game.wonders.WonderStage
-
-internal class WonderSideDefinition(
- val initialResource: ResourceType,
- private val stages: List<WonderStageDefinition>,
- val image: String
-) {
- fun createStages(): List<WonderStage> {
- return stages.map { def -> def.create() }
- }
-}
diff --git a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderStageDefinition.kt b/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderStageDefinition.kt
deleted file mode 100644
index 3d2872d0..00000000
--- a/game-engine/src/main/kotlin/org/luxons/sevenwonders/game/data/definitions/WonderStageDefinition.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.luxons.sevenwonders.game.data.definitions
-
-import org.luxons.sevenwonders.game.cards.Requirements
-import org.luxons.sevenwonders.game.wonders.WonderStage
-
-internal class WonderStageDefinition(
- private val requirements: Requirements,
- private val effects: EffectsDefinition
-) {
- fun create(): WonderStage {
- return WonderStage(requirements, effects.create())
- }
-}
bgstack15