diff --git a/server/src/main/kotlin/delta/codecharacter/server/config/GameConfiguration.kt b/server/src/main/kotlin/delta/codecharacter/server/config/GameConfiguration.kt index 4427c107..151bac96 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/config/GameConfiguration.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/config/GameConfiguration.kt @@ -14,16 +14,17 @@ class GameConfiguration { return GameParameters( attackers = setOf( - Attacker(id = 1, hp = 10, range = 3, attackPower = 3, speed = 3, price = 1), - Attacker(id = 2, hp = 10, range = 3, attackPower = 3, speed = 3, price = 1), + Attacker(id = 1, hp = 10, range = 2, attackPower = 4, speed = 4, price = 2), + Attacker(id = 2, hp = 20, range = 4, attackPower = 2, speed = 2, price = 2), ), defenders = setOf( - Defender(id = 1, hp = 10, range = 4, attackPower = 5, price = 1), - Defender(id = 2, hp = 10, range = 6, attackPower = 5, price = 1), + Defender(id = 1, hp = 400, range = 4, attackPower = 10, price = 25), + Defender(id = 2, hp = 600, range = 6, attackPower = 20, price = 50), ), numberOfTurns = 500, - numberOfCoins = 1000, + numberOfCoins = 1500, + mapCoins = 5000, ) } } diff --git a/server/src/main/kotlin/delta/codecharacter/server/logic/validation/MapValidator.kt b/server/src/main/kotlin/delta/codecharacter/server/logic/validation/MapValidator.kt index da513a5f..3244f357 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/logic/validation/MapValidator.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/logic/validation/MapValidator.kt @@ -36,5 +36,17 @@ class MapValidator { ) { throw CustomException(HttpStatus.BAD_REQUEST, invalidMapMessage) } + + var totalCoins = 0 + map.forEach { row -> + row.forEach { cell -> + if (cell != 0) { + totalCoins += gameParameters.defenders.first { it.id == cell }.price + } + } + } + if (totalCoins > gameParameters.mapCoins) { + throw CustomException(HttpStatus.BAD_REQUEST, invalidMapMessage) + } } } diff --git a/server/src/main/kotlin/delta/codecharacter/server/params/GameParameters.kt b/server/src/main/kotlin/delta/codecharacter/server/params/GameParameters.kt index 1e5e3e3d..5bd5a830 100644 --- a/server/src/main/kotlin/delta/codecharacter/server/params/GameParameters.kt +++ b/server/src/main/kotlin/delta/codecharacter/server/params/GameParameters.kt @@ -1,5 +1,6 @@ package delta.codecharacter.server.params +import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.annotation.JsonProperty import delta.codecharacter.server.params.game_entities.Attacker import delta.codecharacter.server.params.game_entities.Defender @@ -9,4 +10,5 @@ data class GameParameters( @field:JsonProperty("defenders", required = true) val defenders: Set, @field:JsonProperty("no_of_turns", required = true) val numberOfTurns: Int, @field:JsonProperty("no_of_coins", required = true) val numberOfCoins: Int, + @JsonIgnore val mapCoins: Int, )