67 lines
2.1 KiB
Kotlin
67 lines
2.1 KiB
Kotlin
package components
|
|
|
|
import androidx.compose.foundation.layout.Box
|
|
import androidx.compose.foundation.layout.Column
|
|
import androidx.compose.foundation.layout.fillMaxHeight
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
import androidx.compose.material.Text
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.ui.Alignment
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.unit.em
|
|
import data.Player
|
|
import data.QuestionData
|
|
import data.Topic
|
|
import data.toColorOrDefault
|
|
|
|
@Composable
|
|
@Suppress("FunctionName")
|
|
fun TopicRow(
|
|
topic: Topic,
|
|
secondRoundDouble: Boolean,
|
|
users: List<Player>,
|
|
columnFraction: Float,
|
|
questionsResolved: Map<QuestionData, QuestionResolution>,
|
|
onPointsChange: (Player, Long) -> Unit,
|
|
onResolveQuestion: (QuestionData, QuestionResolution) -> Unit,
|
|
) {
|
|
val topicColor = topic.color.toColorOrDefault()
|
|
Column(
|
|
modifier = Modifier.fillMaxHeight()
|
|
.fillMaxWidth(columnFraction)
|
|
) {
|
|
|
|
val numberOfButtons = topic.questions.size
|
|
Box(
|
|
modifier = Modifier.fillMaxWidth()
|
|
.fillMaxHeight(0.1f),
|
|
contentAlignment = Alignment.Center
|
|
) {
|
|
Text(
|
|
text = topic.topic,
|
|
fontSize = (2.5).em
|
|
)
|
|
}
|
|
Column(
|
|
modifier = Modifier.fillMaxWidth()
|
|
.fillMaxHeight(1f)
|
|
) {
|
|
for ((index, question) in topic.questions.withIndex()) {
|
|
val buttonHeightFraction = 1f / (numberOfButtons - index)
|
|
Question(
|
|
questionData = question,
|
|
topic = topic,
|
|
secondRoundDouble = secondRoundDouble,
|
|
players = users,
|
|
questionResolved = questionsResolved[question]
|
|
?: error("No resolution found for question ${question.hint}"),
|
|
heightFraction = buttonHeightFraction,
|
|
color = topicColor,
|
|
onPointsChange = onPointsChange,
|
|
onResolve = onResolveQuestion
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|