From f341a2255c77c819b2060bbaa3d78a404f2fa84b Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Sun, 16 Sep 2012 12:38:39 +0200 Subject: [PATCH] propagate fen events to tournament hubs --- app/game/DbGame.scala | 3 +-- app/round/MoveNotifier.scala | 3 ++- app/round/RoundEnv.scala | 1 + app/templating/AssetHelper.scala | 2 +- app/tournament/HubMaster.scala | 6 ++++-- app/tournament/Socket.scala | 5 ++++- public/javascripts/tournament.js | 1 - todo | 2 ++ 8 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/game/DbGame.scala b/app/game/DbGame.scala index 63cf253eec..a6a5510249 100644 --- a/app/game/DbGame.scala +++ b/app/game/DbGame.scala @@ -346,8 +346,7 @@ case class DbGame( } def isBeingPlayed = - !finishedOrAborted && updatedAt.fold( - _ > DateTime.now - 20.seconds, false) + !finishedOrAborted && updatedAt.fold(_ > DateTime.now - 20.seconds, false) def hasBookmarks = bookmarks > 0 diff --git a/app/round/MoveNotifier.scala b/app/round/MoveNotifier.scala index 09056614b7..94fe6449cf 100644 --- a/app/round/MoveNotifier.scala +++ b/app/round/MoveNotifier.scala @@ -13,9 +13,10 @@ import play.api.Play.current final class MoveNotifier( siteHubName: String, lobbyHubName: String, + tournamentHubMasterName: String, countMove: () ⇒ Unit) { - lazy val hubRefs = List(siteHubName, lobbyHubName) map { name ⇒ + lazy val hubRefs = List(siteHubName, lobbyHubName, tournamentHubMasterName) map { name ⇒ Akka.system.actorFor("/user/" + name) } diff --git a/app/round/RoundEnv.scala b/app/round/RoundEnv.scala index 6aaa29ac86..b17230d6ec 100644 --- a/app/round/RoundEnv.scala +++ b/app/round/RoundEnv.scala @@ -44,6 +44,7 @@ final class RoundEnv( lazy val moveNotifier = new MoveNotifier( siteHubName = ActorSiteHub, lobbyHubName = ActorLobbyHub, + tournamentHubMasterName = ActorTournamentHubMaster, countMove = countMove) lazy val socket = new Socket( diff --git a/app/templating/AssetHelper.scala b/app/templating/AssetHelper.scala index 2733efa189..a58b5a0835 100644 --- a/app/templating/AssetHelper.scala +++ b/app/templating/AssetHelper.scala @@ -7,7 +7,7 @@ import play.api.templates.Html trait AssetHelper { - val assetVersion = 84 + val assetVersion = 85 def cssTag(name: String) = css("stylesheets/" + name) diff --git a/app/tournament/HubMaster.scala b/app/tournament/HubMaster.scala index ef229243d0..382030a3a4 100644 --- a/app/tournament/HubMaster.scala +++ b/app/tournament/HubMaster.scala @@ -1,7 +1,7 @@ package lila package tournament -import socket.{ History, Broom, Close, GetNbMembers, GetUsernames, NbMembers, SendTo } +import socket.{ History, Broom, Close, GetNbMembers, GetUsernames, NbMembers, SendTo, Fen } import akka.actor._ import akka.actor.ReceiveTimeout @@ -59,13 +59,15 @@ final class HubMaster( sender ! Nil ) - case GetTournamentIds => hubs.keys + case GetTournamentIds ⇒ hubs.keys case GetUsernames ⇒ Future.traverse(hubs.values) { hub ⇒ (hub ? GetUsernames).mapTo[Iterable[String]] } map (_.flatten) pipeTo sender case msg @ NbMembers(_) ⇒ hubs.values foreach (_ ! msg) + + case msg @ Fen(_, _, _) ⇒ hubs.values foreach (_ ! msg) } private def mkHub(tournamentId: String): ActorRef = diff --git a/app/tournament/Socket.scala b/app/tournament/Socket.scala index 1554ed4d3d..aa89000574 100644 --- a/app/tournament/Socket.scala +++ b/app/tournament/Socket.scala @@ -14,7 +14,7 @@ import scalaz.effects._ import user.User import game.DbGame -import socket.{ PingVersion, Quit, Resync } +import socket.{ PingVersion, Quit, Resync, LiveGames } import socket.Util.connectionFail import security.Flood import implicits.RichJs._ @@ -77,6 +77,9 @@ final class Socket( case Some("p") ⇒ e int "v" foreach { v ⇒ hub ! PingVersion(uid, v) } + case Some("liveGames") ⇒ e str "d" foreach { ids ⇒ + hub ! LiveGames(uid, ids.split(' ').toList) + } case Some("talk") ⇒ for { username ← member.username data ← e obj "d" diff --git a/public/javascripts/tournament.js b/public/javascripts/tournament.js index 74f20ebe56..4a3924ba7e 100644 --- a/public/javascripts/tournament.js +++ b/public/javascripts/tournament.js @@ -93,5 +93,4 @@ $(function() { name: "tournament" } })); - $('body').trigger('lichess.content_loaded'); }); diff --git a/todo b/todo index 82b962e136..5e0be0b33a 100644 --- a/todo +++ b/todo @@ -46,3 +46,5 @@ tournament crowd tournament monitor all hub members should use userIds rather than usernames tournament miniboards are not updating +finish games when tournament is over +tournament players are winning one point just by having a game in progress!