Files
YAEP/composeApp/src/commonMain/kotlin/domain/Game.kt

27 lines
744 B
Kotlin
Raw Normal View History

2024-06-11 11:04:02 +02:00
package domain
2024-06-12 17:01:49 +02:00
import kotlin.reflect.KClass
2024-06-11 23:41:39 +02:00
2024-06-11 11:04:02 +02:00
class Game(
val grid: Grid,
2024-06-12 17:01:49 +02:00
val rules: List<GameRule>
2024-06-11 11:04:02 +02:00
) {
2024-06-12 17:01:49 +02:00
val horizontalRules = rules.filterIsInstance<HorizontalRule>()
val verticalRules = rules.filterIsInstance<VerticalRule>()
fun areCategoriesValid(): Boolean {
val usedCategories = mutableSetOf<KClass<out ItemClass>>()
for (row in grid.rows) {
val category = row.first().options.first()::class
if (usedCategories.contains(category)) {
return false
}
usedCategories.add(category)
2024-06-11 11:04:02 +02:00
}
2024-06-12 17:01:49 +02:00
return true
}
2024-06-11 11:04:02 +02:00
2024-06-12 17:01:49 +02:00
fun areRulesViolated(): Boolean = rules
2024-06-11 11:04:02 +02:00
.map { it.isRuleViolated(grid) }
.reduce { a, b -> a || b }
}