From 73ccfba3933c484bd1ec28e740d0fbeb4630a699 Mon Sep 17 00:00:00 2001 From: efim Date: Sun, 2 Jul 2023 06:58:33 +0000 Subject: [PATCH] feat(14): update and persist scores --- .../src/main/resources/templates/index.html | 28 +++++++++++++++++-- .../main/scala/rockpaperscissors/Main.scala | 8 ++++-- .../main/scala/rockpaperscissors/Models.scala | 11 ++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) 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 @@

- Score12 + Score + 12 + +

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) + } } }