Skip to content

Commit

Permalink
Merge pull request #130 from Mind-Sports-Games/pla-1065-show-game-sco…
Browse files Browse the repository at this point in the history
…re-on-live-miniboardminigame

add player scores in miniboard upon game finish update
  • Loading branch information
JamesHeppell authored Dec 11, 2024
2 parents 1c585a1 + 6968fc3 commit 3dffcc4
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/main/scala/Fens.scala
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,11 @@ object Fens {
}

// a game finishes
def finish(gameId: Game.Id, winner: Option[PlayerIndex]) =
def finish(gameId: Game.Id, winner: Option[PlayerIndex], playerScores: List[String]) =
games.computeIfPresent(
gameId,
(_, watched) => {
watched.clients foreach { _ ! ClientIn.Finish(gameId, winner) }
watched.clients foreach { _ ! ClientIn.Finish(gameId, winner, playerScores) }
null
}
)
Expand Down
4 changes: 2 additions & 2 deletions src/main/scala/LilaHandler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,9 @@ final class LilaHandler(
friendList.startPlaying(u)
publish(_ userTv u, ClientIn.Resync)
}
case GameFinish(gameId, winner, users) =>
case GameFinish(gameId, winner, playerScores, users) =>
users foreach friendList.stopPlaying
Fens.finish(gameId, winner)
Fens.finish(gameId, winner, playerScores)
case Pong(pingAt) => Monitor.ping.record("round", pingAt)
case LilaBoot =>
logger.info("#################### LILA BOOT ####################")
Expand Down
13 changes: 11 additions & 2 deletions src/main/scala/ipc/ClientIn.scala
Original file line number Diff line number Diff line change
Expand Up @@ -74,8 +74,17 @@ object ClientIn {
)
}

case class Finish(gameId: Game.Id, winner: Option[PlayerIndex]) extends ClientIn {
def write = cliMsg("finish", Json.obj("id" -> gameId.value, "win" -> winner.map(_.letter.toString)))
case class Finish(gameId: Game.Id, winner: Option[PlayerIndex], playerScores: List[String])
extends ClientIn {
def write = cliMsg(
"finish",
Json.obj(
"id" -> gameId.value,
"win" -> winner.map(_.letter.toString),
"p1Score" -> playerScores.headOption,
"p2Score" -> playerScores.lift(1)
)
)
}

case class Mlat(millis: Double) extends ClientIn {
Expand Down
34 changes: 23 additions & 11 deletions src/main/scala/ipc/LilaOut.scala
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,20 @@ object LilaOut {
flags: RoundEventFlags,
tpe: String,
data: JsonString
) extends RoundOut
case class RoundTourStanding(tourId: Tour.ID, data: JsonString) extends RoundOut
case class RoundResyncPlayer(fullId: Game.FullId) extends RoundOut
case class RoundGone(fullId: Game.FullId, v: Boolean) extends RoundOut
case class RoundGoneIn(fullId: Game.FullId, seconds: Int) extends RoundOut
case class RoundBotOnline(gameId: Game.Id, playerIndex: PlayerIndex, v: Boolean) extends RoundOut
case class GameStart(users: List[User.ID]) extends RoundOut
case class GameFinish(gameId: Game.Id, winner: Option[PlayerIndex], users: List[User.ID]) extends RoundOut
case class TvSelect(gameId: Game.Id, speed: Speed, json: JsonString) extends RoundOut
) extends RoundOut
case class RoundTourStanding(tourId: Tour.ID, data: JsonString) extends RoundOut
case class RoundResyncPlayer(fullId: Game.FullId) extends RoundOut
case class RoundGone(fullId: Game.FullId, v: Boolean) extends RoundOut
case class RoundGoneIn(fullId: Game.FullId, seconds: Int) extends RoundOut
case class RoundBotOnline(gameId: Game.Id, playerIndex: PlayerIndex, v: Boolean) extends RoundOut
case class GameStart(users: List[User.ID]) extends RoundOut
case class GameFinish(
gameId: Game.Id,
winner: Option[PlayerIndex],
playerScores: List[String],
users: List[User.ID]
) extends RoundOut
case class TvSelect(gameId: Game.Id, speed: Speed, json: JsonString) extends RoundOut

// racer

Expand Down Expand Up @@ -289,8 +294,15 @@ object LilaOut {

case "r/start" => Some(GameStart(commas(args).toList))
case "r/finish" =>
get(args, 3) { case Array(gameId, winner, users) =>
Some(GameFinish(Game.Id(gameId), readOptionalPlayerIndex(winner), commas(users).toList))
get(args, 4) { case Array(gameId, winner, playerScores, users) =>
Some(
GameFinish(
Game.Id(gameId),
readOptionalPlayerIndex(winner),
commas(playerScores).toList,
commas(users).toList
)
)
}

// tv
Expand Down

0 comments on commit 3dffcc4

Please sign in to comment.