lila/modules/tournament/src/main/model.scala

87 lines
2.0 KiB
Scala

package lila.tournament
final class LeaderboardRepo(val coll: lila.db.dsl.Coll)
case class TournamentTop(value: List[Player]) extends AnyVal
case class TourMiniView(
tour: Tournament,
top: Option[TournamentTop],
teamVs: Option[TeamBattle.TeamVs]
) {
def tourAndTeamVs = TourAndTeamVs(tour, teamVs)
}
case class TourAndTeamVs(tour: Tournament, teamVs: Option[TeamBattle.TeamVs])
case class MyInfo(rank: Int, withdraw: Boolean, gameId: Option[lila.game.Game.ID]) {
def page = {
math.floor((rank - 1) / 10) + 1
}.toInt
}
case class VisibleTournaments(
created: List[Tournament],
started: List[Tournament],
finished: List[Tournament]
) {
def unfinished = created ::: started
def all = started ::: created ::: finished
}
case class PlayerInfoExt(
user: lila.user.User,
player: Player,
recentPovs: List[lila.game.LightPov]
)
case class TourAndRanks(
tour: Tournament,
whiteRank: Int,
blackRank: Int
)
case class RankedPairing(pairing: Pairing, rank1: Int, rank2: Int) {
def bestRank = rank1 min rank2
// def rankSum = rank1 + rank2
def bestColor = chess.Color(rank1 < rank2)
}
object RankedPairing {
def apply(ranking: Ranking)(pairing: Pairing): Option[RankedPairing] =
for {
r1 <- ranking get pairing.user1
r2 <- ranking get pairing.user2
} yield RankedPairing(pairing, r1 + 1, r2 + 1)
}
case class RankedPlayer(rank: Int, player: Player) {
def is(other: RankedPlayer) = player is other.player
override def toString = s"$rank. ${player.userId}[${player.rating}]"
}
object RankedPlayer {
def apply(ranking: Ranking)(player: Player): Option[RankedPlayer] =
ranking get player.userId map { rank =>
RankedPlayer(rank + 1, player)
}
}
case class FeaturedGame(
game: lila.game.Game,
white: RankedPlayer,
black: RankedPlayer
)
final class GetTourName(f: (Tournament.ID => Option[String])) extends (Tournament.ID => Option[String]) {
def apply(id: Tournament.ID) = f(id)
}