lila/app/views/racer.scala

90 lines
2.4 KiB
Scala

package views.html
import controllers.routes
import play.api.libs.json._
import lila.api.Context
import lila.app.templating.Environment._
import lila.app.ui.ScalatagsTemplate._
import lila.common.String.html.safeJsonValue
import lila.i18n.I18nKeys.{ storm => s }
import lila.racer.RacerRace
object racer {
def home(implicit ctx: Context) =
views.html.base.layout(
moreCss = cssTag("racer-home"),
title = "Puzzle Racer"
) {
main(cls := "page page-small racer-home box box-pad")(
h1("Puzzle Racer"),
div(cls := "racer-home__buttons")(
postForm(cls := "racer-home__lobby", action := routes.Racer.lobby)(
submitButton(cls := "button button-fat")(i(cls := "car")(0), s.joinPublicRace())
),
postForm(cls := "racer-home__create", action := routes.Racer.create)(
submitButton(cls := "button button-fat")(i(cls := "car")(0), s.raceYourFriends())
)
),
div(cls := "racer-home__about")(
a(href := routes.Page.loneBookmark("racer"))(trans.aboutX("Puzzle Racer"))
)
)
}
def show(race: RacerRace, data: JsObject, pref: JsObject)(implicit ctx: Context) =
views.html.base.layout(
moreCss = frag(cssTag("racer")),
moreJs = frag(
jsModule("racer"),
embedJsUnsafeLoadThen(
s"""LichessRacer.start(${safeJsonValue(
Json.obj(
"data" -> data,
"pref" -> pref,
"i18n" -> i18nJsObject(i18nKeys)
)
)})"""
)
),
title = "Puzzle Racer",
zoomable = true,
playing = true,
chessground = false
) {
main(
div(cls := "racer racer-app racer--play")(
div(cls := "racer__board main-board"),
div(cls := "racer__side")
)
)
}
private val i18nKeys = {
List(
s.score,
s.combo,
s.youPlayTheWhitePiecesInAllPuzzles,
s.youPlayTheBlackPiecesInAllPuzzles,
s.getReady,
s.waitingForMorePlayers,
s.raceComplete,
s.spectating,
s.joinTheRace,
s.startTheRace,
s.yourRankX,
s.waitForRematch,
s.nextRace,
s.joinRematch,
s.waitingToStart,
s.createNewGame,
trans.toInviteSomeoneToPlayGiveThisUrl,
s.skip,
s.skipHelp,
s.skipExplanation,
trans.flipBoard
).map(_.key)
}
}