diff --git a/game.json b/game.json index cba23c5..b83a974 100644 --- a/game.json +++ b/game.json @@ -98,7 +98,8 @@ } }, { - "name": "Playerererer" + "name": "Playerererer", + "initialPoints": 1000 }, { "name": "P3" diff --git a/src/main/kotlin/Main.kt b/src/main/kotlin/Main.kt index 7986658..b92305f 100644 --- a/src/main/kotlin/Main.kt +++ b/src/main/kotlin/Main.kt @@ -40,7 +40,7 @@ fun graphicalApplication(gameDataJson: String) = application { MaterialTheme { val playerPointMap: MutableMap = remember { - loadedGame.players.map { it to 0L }.toMutableStateMap() + loadedGame.players.map { it to it.initialPoints }.toMutableStateMap() } val questionsResolved: MutableMap = remember { diff --git a/src/main/kotlin/components/PlayerCard.kt b/src/main/kotlin/components/PlayerCard.kt index ea4c33f..dec08b7 100644 --- a/src/main/kotlin/components/PlayerCard.kt +++ b/src/main/kotlin/components/PlayerCard.kt @@ -18,7 +18,7 @@ import data.toColorOrDefault fun PlayerCard( player: Player, maxHeightFraction: Float, - points: Long + points: Long, ) { Surface( color = player.color.toColorOrDefault(), diff --git a/src/main/kotlin/components/Question.kt b/src/main/kotlin/components/Question.kt index 85b538c..bf17895 100644 --- a/src/main/kotlin/components/Question.kt +++ b/src/main/kotlin/components/Question.kt @@ -22,7 +22,7 @@ private fun Modifier.setButtonSize(heightFraction: Float) = this.fillMaxWidth(1f data class QuestionResolution( val answered: Boolean, - val player: Player? + val player: Player?, ) @Composable @@ -36,7 +36,7 @@ fun Question( heightFraction: Float, color: Color, onPointsChange: (Player, Long) -> Unit, - onResolve: (QuestionData, QuestionResolution) -> Unit + onResolve: (QuestionData, QuestionResolution) -> Unit, ) { var questionVisible by remember { mutableStateOf(false) } var pointsButtonActive by remember { mutableStateOf(false) } diff --git a/src/main/kotlin/components/QuestionGrid.kt b/src/main/kotlin/components/QuestionGrid.kt index 434d061..594d96a 100644 --- a/src/main/kotlin/components/QuestionGrid.kt +++ b/src/main/kotlin/components/QuestionGrid.kt @@ -1,7 +1,7 @@ package components import androidx.compose.foundation.layout.Row -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable import data.Game import data.Player import data.QuestionData @@ -13,7 +13,7 @@ fun QuestionGrid( secondRoundDouble: Boolean, questionResolved: Map, onPointsChange: (player: Player, points: Long) -> Unit, - onResolveQuestion: (QuestionData, QuestionResolution) -> Unit + onResolveQuestion: (QuestionData, QuestionResolution) -> Unit, ) { val users = game.players val numberOfColumns = game.topics.size diff --git a/src/main/kotlin/components/TopicRow.kt b/src/main/kotlin/components/TopicRow.kt index 57432d2..1d79001 100644 --- a/src/main/kotlin/components/TopicRow.kt +++ b/src/main/kotlin/components/TopicRow.kt @@ -9,7 +9,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.em -import data.* +import data.Player +import data.QuestionData +import data.Topic +import data.toColorOrDefault @Composable @Suppress("FunctionName") @@ -20,7 +23,7 @@ fun TopicRow( columnFraction: Float, questionsResolved: Map, onPointsChange: (Player, Long) -> Unit, - onResolveQuestion: (QuestionData, QuestionResolution) -> Unit + onResolveQuestion: (QuestionData, QuestionResolution) -> Unit, ) { val topicColor = topic.color.toColorOrDefault() Column( @@ -50,7 +53,8 @@ fun TopicRow( topic = topic, secondRoundDouble = secondRoundDouble, players = users, - questionResolved = questionsResolved[question] ?: error("No resolution found for question ${question.hint}"), + questionResolved = questionsResolved[question] + ?: error("No resolution found for question ${question.hint}"), heightFraction = buttonHeightFraction, color = topicColor, onPointsChange = onPointsChange, diff --git a/src/main/kotlin/components/endcard/EndCard.kt b/src/main/kotlin/components/endcard/EndCard.kt index 0135737..7359cec 100644 --- a/src/main/kotlin/components/endcard/EndCard.kt +++ b/src/main/kotlin/components/endcard/EndCard.kt @@ -22,7 +22,7 @@ import data.toColorOrDefault fun EndCard( playerPointMap: Map, reviewBoard: () -> Unit, - close: () -> Unit + close: () -> Unit, ) { val sortedPlayersPoints = playerPointMap.entries .sortedByDescending { it.value } @@ -68,7 +68,7 @@ fun HighScoreListEntry( player: Player, rank: Int, points: Long, - fontSize: TextUnit + fontSize: TextUnit, ) { Box( modifier = Modifier.border(border = BorderStroke(5.dp, player.color.toColorOrDefault())) diff --git a/src/main/kotlin/components/questiondialog/QuestionDialog.kt b/src/main/kotlin/components/questiondialog/QuestionDialog.kt index 66552ad..e6fafcc 100644 --- a/src/main/kotlin/components/questiondialog/QuestionDialog.kt +++ b/src/main/kotlin/components/questiondialog/QuestionDialog.kt @@ -21,7 +21,7 @@ fun QuestionDialogue( players: List, secondRoundDouble: Boolean, onResolve: (QuestionResolution) -> Unit, - onPointsChange: (Player, Long) -> Unit + onPointsChange: (Player, Long) -> Unit, ) { AlertDialog( dialogProvider = UndecoratedWindowAlertDialogProvider, diff --git a/src/main/kotlin/components/questiondialog/QuestionDialogContent.kt b/src/main/kotlin/components/questiondialog/QuestionDialogContent.kt index 47f3d93..208efc8 100644 --- a/src/main/kotlin/components/questiondialog/QuestionDialogContent.kt +++ b/src/main/kotlin/components/questiondialog/QuestionDialogContent.kt @@ -26,7 +26,7 @@ fun QuestionDialogContent( players: List, onPointsChange: (Player, Long) -> Unit, onResolve: (QuestionResolution) -> Unit, - secondRoundDouble: Boolean + secondRoundDouble: Boolean, ) { val fontSize = 5.em var showAnswer by remember { mutableStateOf(false) } diff --git a/src/main/kotlin/components/questiondialog/assets/HintText.kt b/src/main/kotlin/components/questiondialog/assets/HintText.kt index e86f411..2b4eba9 100644 --- a/src/main/kotlin/components/questiondialog/assets/HintText.kt +++ b/src/main/kotlin/components/questiondialog/assets/HintText.kt @@ -16,7 +16,7 @@ fun HintText( points: UInt, hint: String, deferredDouble: Boolean = false, - doubleJeopardy: Boolean = false + doubleJeopardy: Boolean = false, ) { Row( verticalAlignment = Alignment.Top, diff --git a/src/main/kotlin/components/questiondialog/buttons/DismissButton.kt b/src/main/kotlin/components/questiondialog/buttons/DismissButton.kt index 2074390..49f8bb4 100644 --- a/src/main/kotlin/components/questiondialog/buttons/DismissButton.kt +++ b/src/main/kotlin/components/questiondialog/buttons/DismissButton.kt @@ -1,6 +1,8 @@ package components.questiondialog.buttons -import androidx.compose.foundation.layout.* +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material.Button import androidx.compose.material.Text import androidx.compose.runtime.Composable diff --git a/src/main/kotlin/components/questiondialog/player/DeferredDoubleQuestionDialogPlayer.kt b/src/main/kotlin/components/questiondialog/player/DeferredDoubleQuestionDialogPlayer.kt index 5c49197..9e993c6 100644 --- a/src/main/kotlin/components/questiondialog/player/DeferredDoubleQuestionDialogPlayer.kt +++ b/src/main/kotlin/components/questiondialog/player/DeferredDoubleQuestionDialogPlayer.kt @@ -22,7 +22,7 @@ fun DeferredDoubleQuestionDialogPlayer( onPointsChange: (Player, Long) -> Unit, onQuestionDone: () -> Unit, onQuestionAnswered: (Player) -> Unit, - questionPoints: Long + questionPoints: Long, ) { Row( modifier = Modifier.fillMaxWidth(), diff --git a/src/main/kotlin/components/questiondialog/player/QuestionDialogPlayer.kt b/src/main/kotlin/components/questiondialog/player/QuestionDialogPlayer.kt index 36642c1..10f840c 100644 --- a/src/main/kotlin/components/questiondialog/player/QuestionDialogPlayer.kt +++ b/src/main/kotlin/components/questiondialog/player/QuestionDialogPlayer.kt @@ -20,7 +20,7 @@ fun QuestionDialogPlayer( fontSize: TextUnit, onPointsChange: (Player, Long) -> Unit, questionPoints: Long, - onQuestionAnswered: (Player) -> Unit + onQuestionAnswered: (Player) -> Unit, ) { Row( modifier = Modifier.fillMaxWidth(), @@ -37,7 +37,6 @@ fun QuestionDialogPlayer( if (hadFail) { DisabledButton(maxWidthFraction = 1f, fontSize = fontSize) } else { - // TODO: Implement "answer" view BadAnswerButton( fontSize = fontSize, onClick = { diff --git a/src/main/kotlin/data/ColorData.kt b/src/main/kotlin/data/ColorData.kt index 67ead34..509b7ff 100644 --- a/src/main/kotlin/data/ColorData.kt +++ b/src/main/kotlin/data/ColorData.kt @@ -7,20 +7,8 @@ import kotlinx.serialization.Serializable class ColorData( val red: Int, val green: Int, - val blue: Int -) { - - constructor(rgbHexString: String) : this( - red = rgbHexString.redFromHex(), - green = rgbHexString.greenFromHex(), - blue = rgbHexString.blueFromHex() - ) -} - -internal fun String.colorFromHex(startPos: Int) = ("0x" + this[startPos] + this[startPos + 1]).toInt() -internal fun String.redFromHex() = colorFromHex(2) -internal fun String.greenFromHex() = colorFromHex(4) -internal fun String.blueFromHex() = colorFromHex(6) + val blue: Int, +) fun ColorData?.toColorOrNull() = this?.toColor() fun ColorData?.toColorOrDefault() = this?.toColor() ?: Color.Blue diff --git a/src/main/kotlin/data/Game.kt b/src/main/kotlin/data/Game.kt index 1061072..e0259cc 100644 --- a/src/main/kotlin/data/Game.kt +++ b/src/main/kotlin/data/Game.kt @@ -9,5 +9,5 @@ class Game( val players: List, val headerColor: ColorData? = null, val doubleAfter: Long = Long.MAX_VALUE, - val endGameAfter: Long = Long.MAX_VALUE + val endGameAfter: Long = Long.MAX_VALUE, ) diff --git a/src/main/kotlin/data/Player.kt b/src/main/kotlin/data/Player.kt index 089760f..97da38b 100644 --- a/src/main/kotlin/data/Player.kt +++ b/src/main/kotlin/data/Player.kt @@ -5,5 +5,6 @@ import kotlinx.serialization.Serializable @Serializable class Player( val name: String, - val color: ColorData? = null + val color: ColorData? = null, + val initialPoints: Long = 0, ) diff --git a/src/main/kotlin/data/QuestionData.kt b/src/main/kotlin/data/QuestionData.kt index 3e778ba..4e3a771 100644 --- a/src/main/kotlin/data/QuestionData.kt +++ b/src/main/kotlin/data/QuestionData.kt @@ -8,7 +8,7 @@ class QuestionData( val answer: String, val points: UInt, val isDouble: Boolean = false, - val isDeferredDouble: Boolean = false + val isDeferredDouble: Boolean = false, ) { fun actualDisplayPoints(double: Boolean) = points * (if (double) 2u else 1u) fun actualUsagePoints(double: Boolean) = points * (if (double) 2u else 1u) * (if (isDouble) 2u else 1u) diff --git a/src/main/kotlin/data/Topic.kt b/src/main/kotlin/data/Topic.kt index 3e27156..fa83de4 100644 --- a/src/main/kotlin/data/Topic.kt +++ b/src/main/kotlin/data/Topic.kt @@ -6,5 +6,5 @@ import kotlinx.serialization.Serializable class Topic( val topic: String, val questions: List, - val color: ColorData? = null + val color: ColorData? = null, )