diff --git a/14-rock-paper-scissors/src/main/resources/templates/index.html b/14-rock-paper-scissors/src/main/resources/templates/index.html
index 6701159..29c18af 100644
--- a/14-rock-paper-scissors/src/main/resources/templates/index.html
+++ b/14-rock-paper-scissors/src/main/resources/templates/index.html
@@ -52,8 +52,32 @@
- Score
+ Score
+
+
+
diff --git a/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Main.scala b/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Main.scala
index 66a69cc..5586ad6 100644
--- a/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Main.scala
+++ b/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Main.scala
@@ -97,7 +97,8 @@ object Main {
val badge = playersChoiceBadge.copy()
badge.p =
Positioning.Relative // this probably should be set in enclosing html tag
- val houseChoice = Models.choiceSelectionItems(Random.nextInt(3)).copy()
+ val houseChoice =
+ Models.choiceSelectionItems(Random.nextInt(3)).copy()
houseChoice.p = Positioning.Relative
println(s"getting house choice $houseChoice")
val showdownState = ShowdownState(badge, Some(houseChoice), false)
@@ -109,7 +110,10 @@ object Main {
)
cask.Response(
result,
- headers = Seq("Content-Type" -> "text/html;charset=UTF-8")
+ headers = Seq(
+ "Content-Type" -> "text/html;charset=UTF-8",
+ "HX-Trigger-After-Settle" -> s"""{"updateScore": ${showdownState.scoreChange}}"""
+ )
)
case None =>
cask.Response(s"Unknown choice: '${playersChoice}'", 400)
diff --git a/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Models.scala b/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Models.scala
index a29ffaf..d7fb721 100644
--- a/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Models.scala
+++ b/14-rock-paper-scissors/src/main/scala/rockpaperscissors/Models.scala
@@ -124,5 +124,16 @@ position: absolute;
} else "lose"
})
}
+ def scoreChange: Int = {
+ houseChoice.map(houseSelectedChoice => {
+ val player = playersChoice.c
+ val house = houseSelectedChoice.c
+ if (player == house) {
+ 0
+ } else if (player.isBeating(house)) {
+ 1
+ } else -1
+ }).getOrElse(0)
+ }
}
}