From 4a7791c3e800c6f109043163474a427160477a5b Mon Sep 17 00:00:00 2001 From: Sven Koschnicke Date: Fri, 30 Oct 2020 15:18:11 +0100 Subject: [PATCH 1/3] feat(ui): show winner info on game end --- src/main/kotlin/sc/gui/view/StatusView.kt | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/sc/gui/view/StatusView.kt b/src/main/kotlin/sc/gui/view/StatusView.kt index 1a35ba88..df5f154c 100644 --- a/src/main/kotlin/sc/gui/view/StatusView.kt +++ b/src/main/kotlin/sc/gui/view/StatusView.kt @@ -3,10 +3,12 @@ package sc.gui.view import javafx.beans.binding.StringBinding import javafx.geometry.Pos import javafx.scene.control.Label +import sc.api.plugins.ITeam import sc.gui.AppStyle import sc.gui.controller.GameController import sc.plugin2021.Color import sc.plugin2021.Team +import sc.shared.GameResult import tornadofx.* class StatusBinding(private val game: GameController) : StringBinding() { @@ -25,17 +27,28 @@ class StatusBinding(private val game: GameController) : StringBinding() { Color.YELLOW -> "Gelb" Color.BLUE -> "Blau" } - } - + + fun winner(gameResult: GameResult): String = gameResult.winners?.firstOrNull()?.let { player -> + player.displayName + " (Farben " + + (player.color as Team).colors.joinToString(", ", transform = ::translateColor) + + ") hat gewonnen!" + } ?: "Unentschieden!" + + fun irregularities(gameResult: GameResult): String = if (!gameResult.isRegular) { + gameResult.scores.first().reason + } else "" + override fun computeValue(): String { if(game.currentTurn.get() > 0) { - return game.gameResult.get()?.run { - "Spiel ist beendet, Gewinner: " + this.winners?.first()?.displayName + return game.gameResult.get()?.let { gameResult -> + "Spiel ist beendet\n" + + winner(gameResult) + "\n" + + irregularities(gameResult) } ?: when(game.currentTeam.get()) { Team.ONE -> "Erstes Team" Team.TWO -> "Zweites Team" - } + "Farbe " + translateColor(game.currentColor.get()) + " ist dran (Zug ${game.currentTurn.get()})" + } + ", Farbe " + translateColor(game.currentColor.get()) + " ist dran (Zug ${game.currentTurn.get()})" } return "Drücke auf Start" } From 9951d50cf86d053311b07acff5bb317ca4a4b7a1 Mon Sep 17 00:00:00 2001 From: Aaron Alef Date: Tue, 3 Nov 2020 12:29:19 +0100 Subject: [PATCH 2/3] feat(ui): display irregular score causes --- src/main/kotlin/sc/gui/view/StatusView.kt | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/sc/gui/view/StatusView.kt b/src/main/kotlin/sc/gui/view/StatusView.kt index df5f154c..81cf8dbe 100644 --- a/src/main/kotlin/sc/gui/view/StatusView.kt +++ b/src/main/kotlin/sc/gui/view/StatusView.kt @@ -9,6 +9,7 @@ import sc.gui.controller.GameController import sc.plugin2021.Color import sc.plugin2021.Team import sc.shared.GameResult +import sc.shared.ScoreCause import tornadofx.* class StatusBinding(private val game: GameController) : StringBinding() { @@ -35,16 +36,21 @@ class StatusBinding(private val game: GameController) : StringBinding() { ") hat gewonnen!" } ?: "Unentschieden!" - fun irregularities(gameResult: GameResult): String = if (!gameResult.isRegular) { - gameResult.scores.first().reason - } else "" + fun irregularities(gameResult: GameResult): String { + for (score in gameResult.scores) { + if (score.cause != ScoreCause.REGULAR) + return "Grund: ${score.reason.split("; move was").first()}!" + } + return "" + } override fun computeValue(): String { if(game.currentTurn.get() > 0) { - return game.gameResult.get()?.let { gameResult -> - "Spiel ist beendet\n" + - winner(gameResult) + "\n" + - irregularities(gameResult) + return game.gameResult.get()?.let { gameResult -> """ + Spiel ist beendet + ${winner(gameResult)} + ${irregularities(gameResult)} + """.trimIndent() } ?: when(game.currentTeam.get()) { Team.ONE -> "Erstes Team" Team.TWO -> "Zweites Team" From aed6dad8ae13cecc1d9d1eecbb3b7af84f9872b9 Mon Sep 17 00:00:00 2001 From: Aaron Alef Date: Tue, 3 Nov 2020 12:30:19 +0100 Subject: [PATCH 3/3] feat(ui): display a german ScoreCause if irregular --- src/main/kotlin/sc/gui/view/StatusView.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/sc/gui/view/StatusView.kt b/src/main/kotlin/sc/gui/view/StatusView.kt index 81cf8dbe..32f132d8 100644 --- a/src/main/kotlin/sc/gui/view/StatusView.kt +++ b/src/main/kotlin/sc/gui/view/StatusView.kt @@ -37,9 +37,15 @@ class StatusBinding(private val game: GameController) : StringBinding() { } ?: "Unentschieden!" fun irregularities(gameResult: GameResult): String { - for (score in gameResult.scores) { - if (score.cause != ScoreCause.REGULAR) - return "Grund: ${score.reason.split("; move was").first()}!" + loop@ for (score in gameResult.scores) { + when(score.cause) { + ScoreCause.REGULAR -> continue@loop + ScoreCause.LEFT -> return "Grund: Vorzeitiges Verlassen des Spiels" + ScoreCause.RULE_VIOLATION -> return "Grund: Regelverletzung" + ScoreCause.SOFT_TIMEOUT -> return "Grund: Überschreitung des Zeitlimits" + ScoreCause.HARD_TIMEOUT -> return "Grund: Keine Antwort auf Zuganfrage" + ScoreCause.UNKNOWN -> return "Grund: Kommunikationsfehler" + } } return "" }