propagate fen events to tournament hubs
This commit is contained in:
parent
3629a4bf9e
commit
f341a2255c
|
@ -346,8 +346,7 @@ case class DbGame(
|
||||||
}
|
}
|
||||||
|
|
||||||
def isBeingPlayed =
|
def isBeingPlayed =
|
||||||
!finishedOrAborted && updatedAt.fold(
|
!finishedOrAborted && updatedAt.fold(_ > DateTime.now - 20.seconds, false)
|
||||||
_ > DateTime.now - 20.seconds, false)
|
|
||||||
|
|
||||||
def hasBookmarks = bookmarks > 0
|
def hasBookmarks = bookmarks > 0
|
||||||
|
|
||||||
|
|
|
@ -13,9 +13,10 @@ import play.api.Play.current
|
||||||
final class MoveNotifier(
|
final class MoveNotifier(
|
||||||
siteHubName: String,
|
siteHubName: String,
|
||||||
lobbyHubName: String,
|
lobbyHubName: String,
|
||||||
|
tournamentHubMasterName: String,
|
||||||
countMove: () ⇒ Unit) {
|
countMove: () ⇒ Unit) {
|
||||||
|
|
||||||
lazy val hubRefs = List(siteHubName, lobbyHubName) map { name ⇒
|
lazy val hubRefs = List(siteHubName, lobbyHubName, tournamentHubMasterName) map { name ⇒
|
||||||
Akka.system.actorFor("/user/" + name)
|
Akka.system.actorFor("/user/" + name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ final class RoundEnv(
|
||||||
lazy val moveNotifier = new MoveNotifier(
|
lazy val moveNotifier = new MoveNotifier(
|
||||||
siteHubName = ActorSiteHub,
|
siteHubName = ActorSiteHub,
|
||||||
lobbyHubName = ActorLobbyHub,
|
lobbyHubName = ActorLobbyHub,
|
||||||
|
tournamentHubMasterName = ActorTournamentHubMaster,
|
||||||
countMove = countMove)
|
countMove = countMove)
|
||||||
|
|
||||||
lazy val socket = new Socket(
|
lazy val socket = new Socket(
|
||||||
|
|
|
@ -7,7 +7,7 @@ import play.api.templates.Html
|
||||||
|
|
||||||
trait AssetHelper {
|
trait AssetHelper {
|
||||||
|
|
||||||
val assetVersion = 84
|
val assetVersion = 85
|
||||||
|
|
||||||
def cssTag(name: String) = css("stylesheets/" + name)
|
def cssTag(name: String) = css("stylesheets/" + name)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package lila
|
package lila
|
||||||
package tournament
|
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._
|
||||||
import akka.actor.ReceiveTimeout
|
import akka.actor.ReceiveTimeout
|
||||||
|
@ -59,13 +59,15 @@ final class HubMaster(
|
||||||
sender ! Nil
|
sender ! Nil
|
||||||
)
|
)
|
||||||
|
|
||||||
case GetTournamentIds => hubs.keys
|
case GetTournamentIds ⇒ hubs.keys
|
||||||
|
|
||||||
case GetUsernames ⇒ Future.traverse(hubs.values) { hub ⇒
|
case GetUsernames ⇒ Future.traverse(hubs.values) { hub ⇒
|
||||||
(hub ? GetUsernames).mapTo[Iterable[String]]
|
(hub ? GetUsernames).mapTo[Iterable[String]]
|
||||||
} map (_.flatten) pipeTo sender
|
} map (_.flatten) pipeTo sender
|
||||||
|
|
||||||
case msg @ NbMembers(_) ⇒ hubs.values foreach (_ ! msg)
|
case msg @ NbMembers(_) ⇒ hubs.values foreach (_ ! msg)
|
||||||
|
|
||||||
|
case msg @ Fen(_, _, _) ⇒ hubs.values foreach (_ ! msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
private def mkHub(tournamentId: String): ActorRef =
|
private def mkHub(tournamentId: String): ActorRef =
|
||||||
|
|
|
@ -14,7 +14,7 @@ import scalaz.effects._
|
||||||
|
|
||||||
import user.User
|
import user.User
|
||||||
import game.DbGame
|
import game.DbGame
|
||||||
import socket.{ PingVersion, Quit, Resync }
|
import socket.{ PingVersion, Quit, Resync, LiveGames }
|
||||||
import socket.Util.connectionFail
|
import socket.Util.connectionFail
|
||||||
import security.Flood
|
import security.Flood
|
||||||
import implicits.RichJs._
|
import implicits.RichJs._
|
||||||
|
@ -77,6 +77,9 @@ final class Socket(
|
||||||
case Some("p") ⇒ e int "v" foreach { v ⇒
|
case Some("p") ⇒ e int "v" foreach { v ⇒
|
||||||
hub ! PingVersion(uid, v)
|
hub ! PingVersion(uid, v)
|
||||||
}
|
}
|
||||||
|
case Some("liveGames") ⇒ e str "d" foreach { ids ⇒
|
||||||
|
hub ! LiveGames(uid, ids.split(' ').toList)
|
||||||
|
}
|
||||||
case Some("talk") ⇒ for {
|
case Some("talk") ⇒ for {
|
||||||
username ← member.username
|
username ← member.username
|
||||||
data ← e obj "d"
|
data ← e obj "d"
|
||||||
|
|
|
@ -93,5 +93,4 @@ $(function() {
|
||||||
name: "tournament"
|
name: "tournament"
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
$('body').trigger('lichess.content_loaded');
|
|
||||||
});
|
});
|
||||||
|
|
2
todo
2
todo
|
@ -46,3 +46,5 @@ tournament crowd
|
||||||
tournament monitor
|
tournament monitor
|
||||||
all hub members should use userIds rather than usernames
|
all hub members should use userIds rather than usernames
|
||||||
tournament miniboards are not updating
|
tournament miniboards are not updating
|
||||||
|
finish games when tournament is over
|
||||||
|
tournament players are winning one point just by having a game in progress!
|
||||||
|
|
Loading…
Reference in a new issue