Send a Crowd message to the newcomer

This commit is contained in:
Thibault Duplessis 2012-05-09 00:53:25 +02:00
parent 93f8904995
commit 1695607305
3 changed files with 8 additions and 3 deletions

View file

@ -40,7 +40,8 @@ final class Hub(
case Join(uid, username, version, color, owner) {
val msgs = history since version filter (_.visible(color, owner)) map (_.js)
val channel = new LilaEnumerator[JsValue](msgs)
val crowdMsg = makeEvent("crowd", crowdEvent.incWatchers.data)
val channel = new LilaEnumerator[JsValue](msgs :+ crowdMsg)
val member = Member(channel, username, PovRef(gameId, color), owner)
addMember(uid, member)
notify(crowdEvent)
@ -64,7 +65,7 @@ final class Hub(
private def crowdEvent = CrowdEvent(
white = member(White).isDefined,
black = member(Black).isDefined,
watchers = members.values count (_.watcher))
watchers = members.values count (_.watcher))
private def applyEvents(events: List[Event]) {
events match {
@ -78,6 +79,7 @@ final class Hub(
val vevent = history += e
members.values filter vevent.visible foreach (_.channel push vevent.js)
}
private def notify(events: List[Event]) {
val vevents = events map history.+=
members.values foreach { member
@ -88,6 +90,9 @@ final class Hub(
}
}
private def makeEvent(t: String, data: JsValue): JsObject =
JsObject(Seq("t" -> JsString(t), "d" -> data))
private def member(color: Color): Option[Member] =
members.values find { m m.owner && m.color == color }
}

View file

@ -169,4 +169,5 @@ case class CrowdEvent(
"black" -> JsBoolean(black),
"watchers" -> JsNumber(watchers)
))
def incWatchers = copy(watchers = watchers + 1)
}

1
todo
View file

@ -5,4 +5,3 @@ back button to game -> old status
bad visibility of online indicators during game
force resign
finish flagged game
rewind game with clock