Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

schlawg/local-play #15667

Draft
wants to merge 198 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
260e142
gah
schlawg Jul 23, 2023
7ab1bff
updatez
schlawg Jul 23, 2023
c93e10c
gah
schlawg Jul 24, 2023
98e2f29
fixes
schlawg Jul 24, 2023
1a99529
version
schlawg Jul 24, 2023
608f34e
gah
schlawg Jul 25, 2023
2336a9b
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Jul 25, 2023
d59b41e
fix lockfile
schlawg Jul 25, 2023
615c14c
fix zerofish wasm crashes
schlawg Jul 27, 2023
d9e181b
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Jul 27, 2023
a7b5561
0.0.7
schlawg Jul 28, 2023
b2bf999
ui/build improvements
schlawg Jul 28, 2023
abc5341
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Jul 28, 2023
59b5ce4
0.0.8
schlawg Jul 29, 2023
4079d1a
.
schlawg Aug 4, 2023
5caa6c8
.
schlawg Aug 4, 2023
b704ab9
.
schlawg Aug 5, 2023
4366f43
.
schlawg Aug 6, 2023
cff1339
.
schlawg Aug 6, 2023
386ef90
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 6, 2023
494a5d8
.
schlawg Aug 7, 2023
6b09faa
.
schlawg Aug 7, 2023
d1c9e35
.
schlawg Aug 7, 2023
dcd4e1a
gah
schlawg Aug 8, 2023
8852d69
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 9, 2023
90ec179
gah
schlawg Aug 9, 2023
decdd74
gah
schlawg Aug 9, 2023
e16c2ae
improve puzzle speech (english only)
schlawg Aug 10, 2023
eb0fcd8
audio context resume - increase our odds of getting one by 0.001%
schlawg Aug 10, 2023
3109cc4
ephemeral help tooltip
schlawg Aug 16, 2023
80919a7
merge
schlawg Aug 19, 2023
86c4bad
merge
schlawg Aug 19, 2023
95ccd75
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 19, 2023
11b63be
.
schlawg Aug 19, 2023
e2c2bff
.
schlawg Aug 19, 2023
2268624
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 20, 2023
446c503
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 20, 2023
c3fd25d
.
schlawg Aug 20, 2023
4249829
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 20, 2023
568ba89
.
schlawg Aug 20, 2023
371db15
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 21, 2023
f068648
move game setup modal out of lobby module
schlawg Aug 22, 2023
935de5f
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 22, 2023
3295f15
fix assorted buttons
schlawg Aug 22, 2023
6ab8ebb
gah
schlawg Aug 23, 2023
0f8e4f1
Merge remote-tracking branch 'origin/local-play' into local-play
schlawg Aug 23, 2023
7da0aaf
get modules in order
schlawg Aug 23, 2023
0881928
hookfilters gah
schlawg Aug 24, 2023
f56415e
grabbage
schlawg Aug 25, 2023
f9edce7
gah
schlawg Aug 25, 2023
382b1e6
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Aug 26, 2023
1c8999a
gah
schlawg Aug 26, 2023
fec9b9d
build hack to disable delayed css caching
schlawg Aug 27, 2023
c63b0e6
gah
schlawg Aug 28, 2023
ac9eb12
gah
schlawg Aug 28, 2023
2c143f9
gah
schlawg Aug 29, 2023
ee859d9
gah
schlawg Aug 29, 2023
22bda18
gah
schlawg Aug 30, 2023
b9c631f
.
schlawg Aug 31, 2023
d5ccd15
maybe they wont notice yellow ones
schlawg Aug 29, 2023
bed27fd
Merge remote-tracking branch 'origin/local-play' into local-play
schlawg Aug 31, 2023
86417a2
.
schlawg Aug 31, 2023
25c51c3
Merge branch 'ui-analysis-navigation-patch' into local-play
schlawg Aug 31, 2023
fdb1fc9
.
schlawg Sep 1, 2023
246e84d
.
schlawg Sep 1, 2023
72f5925
.
schlawg Sep 1, 2023
8bb6b5b
.
schlawg Sep 2, 2023
4aadde9
.
schlawg Sep 2, 2023
0232cbb
merge
schlawg Sep 2, 2023
e65ab09
gah
schlawg Sep 2, 2023
e9e99fa
.
schlawg Sep 2, 2023
05c7a49
Merge remote-tracking branch 'origin/local-play' into local-play
schlawg Sep 2, 2023
7bec94b
.
schlawg Sep 4, 2023
0909d4b
.
schlawg Sep 5, 2023
52ae825
.
schlawg Sep 6, 2023
58040b0
.
schlawg Sep 6, 2023
c95481b
.
schlawg Sep 6, 2023
0d0cbb6
merge
schlawg Sep 7, 2023
861a961
merge
schlawg Sep 7, 2023
df9fae5
merge
schlawg Sep 7, 2023
c60addb
merge
schlawg Sep 7, 2023
c4fe143
Merge remote-tracking branch 'origin/ui-licon-scss' into local-play
schlawg Sep 7, 2023
8ac757a
.
schlawg Sep 7, 2023
ff1e6fa
.
schlawg Sep 7, 2023
c449414
.
schlawg Sep 7, 2023
e5edcab
gah
schlawg Sep 8, 2023
30529d5
gah
schlawg Sep 8, 2023
631e578
Merge branch 'ui-html-dialog-element' into local-play
schlawg Sep 9, 2023
c96cbd1
gah
schlawg Nov 1, 2023
5ac91f9
gah
schlawg Nov 1, 2023
d19dde9
fishes
schlawg Nov 2, 2023
1e0ba9c
gah
schlawg Nov 3, 2023
44397f7
gah
schlawg Nov 3, 2023
c88edb5
stockfish web testing
schlawg Nov 6, 2023
030dc64
merge
schlawg Nov 10, 2023
cbe0d49
gah
schlawg Nov 11, 2023
560df8b
gah
schlawg Nov 11, 2023
628e799
refacterz
schlawg Nov 12, 2023
a734243
gfx
schlawg Nov 13, 2023
195f180
.
schlawg Nov 13, 2023
36e03de
merge
schlawg Nov 14, 2023
062adac
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Nov 15, 2023
2d917e0
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Nov 15, 2023
506f694
.
schlawg Nov 16, 2023
e435990
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Nov 16, 2023
2a20f27
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Nov 17, 2023
298aba7
gah
schlawg Nov 18, 2023
198435c
merge
schlawg Nov 20, 2023
51a135a
gah
schlawg Nov 22, 2023
53c7947
gah
schlawg Nov 23, 2023
8b6869a
gah
schlawg Nov 24, 2023
5c11843
merge
schlawg Nov 25, 2023
48f311b
Merge remote-tracking branch 'origin/ui-persistent-logging' into loca…
schlawg Nov 27, 2023
e903f77
merge
schlawg Nov 27, 2023
56f7611
merge
schlawg Nov 28, 2023
0c76831
merge
schlawg Nov 28, 2023
83a3421
merge
schlawg Nov 29, 2023
5251374
gah
schlawg Nov 29, 2023
ef5d876
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Nov 30, 2023
f1e8b9b
Merge branch 'improved-persistent-logging' into local-play
schlawg Nov 30, 2023
a2222ec
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Nov 30, 2023
a32ff21
gah
schlawg Dec 1, 2023
cda72b8
gah
schlawg Dec 3, 2023
a8f2cc4
murge
schlawg Dec 29, 2023
358ea04
murge
schlawg Dec 29, 2023
29465d5
gah
schlawg Dec 30, 2023
92a28b1
gah
schlawg Jan 1, 2024
a6f899b
fix logging
schlawg Jan 2, 2024
8a8e8e8
gah
schlawg Jan 2, 2024
8828051
gah
schlawg Jan 2, 2024
f90be35
Merge remote-tracking branch 'origin/local-play' into local-play
schlawg Jan 2, 2024
b2a64d8
need to find out why ui/build takes 4x as long on this branch...
schlawg Mar 16, 2024
076344c
wtf, builds are 3x slower this branch
schlawg Mar 16, 2024
5779776
running out of ideas i never had
schlawg Mar 16, 2024
14ee685
is it the lockfile?
schlawg Mar 16, 2024
d426f08
at long last snabbdom 3.6 is slain and the kingdom is saved
schlawg Mar 16, 2024
ee29ce9
wip
schlawg Apr 17, 2024
f63a89d
wip
schlawg Apr 17, 2024
9c2eee4
merge from ui-improve-dasher
schlawg Apr 17, 2024
eab8e25
wip
schlawg Apr 22, 2024
a65c26e
move around the things
schlawg Apr 22, 2024
926f698
gah
schlawg Apr 23, 2024
bf55188
gah
schlawg Apr 24, 2024
36dcf13
less broken than local-canary
schlawg May 4, 2024
4183d2c
latest from master
schlawg May 13, 2024
4bcf888
wip
schlawg May 14, 2024
6deea38
haw haw
schlawg May 15, 2024
bfd2700
gah
schlawg May 17, 2024
bd72933
Merge remote-tracking branch 'upstream/master' into local-play
schlawg May 17, 2024
35ce607
gah
schlawg May 18, 2024
45d1fef
gah
schlawg May 18, 2024
0e8b530
gah
schlawg May 20, 2024
2c89b0a
Merge remote-tracking branch 'upstream/master' into local-play
schlawg May 20, 2024
c73315e
Merge branch 'mismatched-asset-urls' into local-play
schlawg May 21, 2024
57444bc
Merge branch 'sortablejs' into local-play
schlawg May 21, 2024
366e98d
gah
schlawg May 21, 2024
16cffe6
prior to adding bot ranking
schlawg May 26, 2024
d21f414
Merge remote-tracking branch 'upstream/master' into local-play
schlawg May 26, 2024
a688b3d
backup
schlawg May 29, 2024
14b824d
goness
schlawg May 29, 2024
3ea3338
Merge remote-tracking branch 'upstream/master' into local-play
schlawg May 30, 2024
4dbc4f1
gah
schlawg May 30, 2024
078b837
wip
schlawg Jun 1, 2024
db69506
merge
schlawg Jun 2, 2024
472de34
wip
schlawg Jun 11, 2024
d1e6cf7
wip
schlawg Jun 11, 2024
96c7756
wip
schlawg Jun 12, 2024
4363631
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Jun 12, 2024
3277ecd
gah
schlawg Jun 15, 2024
2d20c0e
gah
schlawg Jun 15, 2024
a1afd51
gah
schlawg Jun 18, 2024
c6a2f84
merge
schlawg Jun 21, 2024
eff6c89
wip
schlawg Jun 21, 2024
2b74e32
.gitignore
schlawg Jun 21, 2024
506f0ad
gah
schlawg Jun 22, 2024
ca63538
gah
schlawg Jun 22, 2024
5256796
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Jun 22, 2024
9061953
this f*cking dialog will kill me one day
schlawg Jun 23, 2024
20711ed
gah
schlawg Jun 27, 2024
7f6aec2
gah
schlawg Jun 27, 2024
ef3e6c3
code splitting obviates site.dialog
schlawg Jun 27, 2024
076d1ee
gah
schlawg Jun 27, 2024
4560d2b
wip
schlawg Jul 3, 2024
b29fe43
wip
schlawg Jul 4, 2024
1e02047
gah
schlawg Jul 4, 2024
dba0028
gah
schlawg Jul 4, 2024
f175720
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Jul 5, 2024
7d1c937
gah
schlawg Jul 5, 2024
3b1fe12
gah
schlawg Jul 5, 2024
61e9090
refacterz
schlawg Jul 6, 2024
8376463
wip
schlawg Jul 11, 2024
1b30799
merge prior to typescript 5.5
schlawg Jul 11, 2024
a0fe79c
wip
schlawg Jul 11, 2024
130b4ba
dunno whats in this
schlawg Jul 12, 2024
54fdb57
gah
schlawg Jul 12, 2024
b9bb035
add hash linked assets
schlawg Jul 14, 2024
e2b8301
Merge remote-tracking branch 'upstream/master' into local-play
schlawg Jul 14, 2024
a489916
we jammin
schlawg Jul 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@ project/metals.sbt
project/project
project/target
public/compiled
public/hashed
public/npm
public/lifat
public/css/
public/json
target
data/
dist/
node_modules/
local/
ui/common/css/theme/gen/*.scss
ui/common/**/*.js
ui/common/**/*.d.ts
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@

*.min.js
readme
routes

/.bloop/
/.bsp/
Expand Down
2 changes: 2 additions & 0 deletions app/Env.scala
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,8 @@ final class Env(
case lila.puzzle.DailyPuzzle.Render(puzzle, fen, lastMove, promise) =>
promise.success(Html(views.puzzle.bits.daily(puzzle, fen, lastMove)))

def getFile(path: String) = environment.getFile(path)

end Env

given ConfigLoader[NetConfig] = ConfigLoader(config =>
Expand Down
1 change: 1 addition & 0 deletions app/LilaComponents.scala
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ final class LilaComponents(
lazy val irwin: Irwin = wire[Irwin]
lazy val learn: Learn = wire[Learn]
lazy val lobby: Lobby = wire[Lobby]
lazy val localPlay: Local = wire[Local]
lazy val main: Main = wire[Main]
lazy val msg: Msg = wire[Msg]
lazy val mod: Mod = wire[Mod]
Expand Down
77 changes: 77 additions & 0 deletions app/controllers/Local.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package controllers

import play.api.libs.json.*
import play.api.i18n.Lang
import play.api.mvc.*
import play.api.data.*
import play.api.data.Forms.*
import views.*

import lila.app.{ given, * }
import lila.common.Json.given
import lila.user.User
import lila.rating.{ Perf, PerfType }
import lila.local.GameSetup

final class Local(env: Env) extends LilaController(env):
val setupForm =
Form:
mapping(
"white" -> optional(nonEmptyText),
"black" -> optional(nonEmptyText),
"fen" -> optional(nonEmptyText),
"time" -> optional(nonEmptyText),
"go" -> play.api.data.Forms.boolean
)(GameSetup.apply)(unapply)

def index(devUi: Option[String]) = OpenBody:
NoBot:
Ok.page(indexPage(none, optTrue(devUi))).map(_.enforceCrossSiteIsolation)

def newGame(
white: Option[String],
black: Option[String],
fen: Option[String],
time: Option[String],
go: Option[String],
devUi: Option[String]
) = OpenBody:
NoBot:
Ok.page(indexPage(GameSetup(white, black, fen, time, optTrue(go)).some, optTrue(devUi)))
.map(_.enforceCrossSiteIsolation)

def newGameForm(devUi: Option[String]) = OpenBody:
NoBot:
bindForm(setupForm)(
err => jsonFormError(err),
setup => Ok.page(indexPage(setup.some, optTrue(devUi))).map(_.enforceCrossSiteIsolation)
)

private def indexPage(setup: Option[GameSetup], devUi: Boolean)(using ctx: Context) =
given setupFormat: Format[GameSetup] = Json.format[GameSetup]
views.local.index(
Json
.obj(
"pref" -> pref
)
.add("setup", setup)
.add(
"assets",
devUi.option(
// we'll replace these filesystem calls with a mapping json when things settle down
Json.obj(
"image" -> env.getFile(s"public/lifat/bots/images").listFiles().toList.map(_.getName),
"net" -> env.getFile(s"public/lifat/bots/nets").listFiles().toList.map(_.getName),
"book" -> env.getFile(s"public/lifat/bots/books").listFiles().toList.map(_.getName),
"sound" -> env.getFile(s"public/lifat/bots/sounds").listFiles().toList.map(_.getName)
)
)
),
devUi
)

private def pref(using ctx: Context) =
lila.pref.JsonView.write(ctx.pref, false).add("animationDuration", ctx.pref.animationMillis.some)

private def optTrue(s: Option[String]) =
s.exists(v => v == "" || v == "1" || v == "true")
2 changes: 1 addition & 1 deletion app/controllers/Round.scala
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ final class Round(
jsChat <- chat.flatMap(_.game).map(_.chat).soFu(lila.chat.JsonView.asyncLines)
yield Ok(data.add("chat", jsChat)).noCache
)
yield res
yield res.enforceCrossSiteIsolation

def player(fullId: GameFullId) = Open:
env.round.proxyRepo
Expand Down
2 changes: 2 additions & 0 deletions app/views/ui.scala
Original file line number Diff line number Diff line change
Expand Up @@ -93,5 +93,7 @@ val challenge = lila.challenge.ui.ChallengeUi(helpers)

val dev = lila.web.ui.DevUi(helpers)(mod.ui.menu)

val local = lila.local.ui.LocalUi(helpers)

def mobile(p: lila.cms.CmsPage.Render)(using Context) =
lila.web.ui.mobile(helpers)(cms.render(p))
99 changes: 99 additions & 0 deletions bin/results.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
#!/usr/bin/env python3

import json
import sys
import os

# type GameResult = {
# result: 'white'|'black'|'draw'|'error';
# reason: string;
# white: string|{name: string};
# black: string|{name: string};
# movetime: number;
# threads: number;
# hash: number;
# nfold?: number;
# startingFen?: string;
# moves: number | uci[];
# };

def main():
width = 16 # crosstable width (minus 1 padding)
engines = ['11hce','16hce','14nn12','16nn07','16nn12','16nn40','16nn60'] # preferred sort order
template = {'W': 0, 'D': 0, 'L': 0}
draws = {}
xtable = {}
results = []
errors = []

for x in range(1, len(sys.argv)):
try:
with open(sys.argv[x], 'r') as f:
results.extend(json.load(f))
print('Loaded ' + sys.argv[x])
except IOError as e:
print(str(e) + ' while loading ' + sys.argv[x])

for game in results:
outcome = game['result']
reason = game['reason']
w = short(game['white'])
b = short(game['black'])
if outcome == 'error' or outcome == 'draw' and reason.startswith('Stockfish'):
errors.append(reason) # tolerate errors in some earlier batches
elif outcome == 'draw':
xtable.setdefault(w, {}).setdefault(b, template.copy())['D'] += 1
xtable.setdefault(b, {}).setdefault(w, template.copy())['D'] += 1
draws[reason] = draws.get(reason, 0) + 1
else:
winner = w if outcome == 'white' else b
loser = b if outcome == 'white' else w
xtable.setdefault(winner, {}).setdefault(loser, template.copy())['W'] += 1
xtable.setdefault(loser, {}).setdefault(winner, template.copy())['L'] += 1

print('Total games:', len(results) - len(errors))
print('Draws by reason:')
for reason, count in draws.items():
print(f' {reason}: {count}')
print('Crosstable:\n| ' + 'row vs col'.ljust(width), end='| ')
for e in engines:
print(f"W/D/L vs {e}".ljust(width), end='| ')
print()
for _ in range(len(engines)+1):
print('|'.ljust(width+2,'-'), end='')
print('|')
for e in engines:
print('| ' + e.ljust(width), end='| ')
for vsE in engines:
try:
print(wdl(xtable[e][vsE]).ljust(width), end='| ')
except KeyError:
print(' -'.ljust(width), end='| ')
print()

def wdl(tally):
return f"{str(tally['W']).ljust(4)}/ {str(tally['D']).ljust(4)}/ {str(tally['L']).ljust(4)}"

def short(engine): # don't want the full engine name
try:
engine = engine['name'][10:]
except TypeError as e:
engine = engine[10:] # compensate for a breaking change in the dataset format
if engine == '11':
return '11hce'
elif engine == '16 HCE':
return '16hce'
elif engine == '14 NNUE':
return '14nn12'
elif engine.endswith('7MB'):
return '16nn07'
elif engine.endswith('12MB'):
return '16nn12'
elif engine.endswith('40MB'):
return '16nn40'
elif engine.endswith('60MB'):
return '16nn60'
return 'unknown'

if __name__ == '__main__':
main()
7 changes: 6 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ lazy val modules = Seq(
pool, lobby, relation, tv, coordinate, feed, history,
shutup, appeal, irc, explorer, learn, event, coach,
practice, evalCache, irwin, bot, racer, cms, i18n,
socket, bookmark, studySearch, gameSearch, forumSearch, teamSearch,
socket, bookmark, studySearch, gameSearch, forumSearch, teamSearch, local
)

lazy val moduleRefs = modules map projectToRef
Expand Down Expand Up @@ -155,6 +155,11 @@ lazy val racer = module("racer",
Seq()
)

lazy val local = module("local",
Seq(db, memo, ui, pref),
Seq()
)

lazy val video = module("video",
Seq(memo, ui),
macwire.bundle
Expand Down
7 changes: 7 additions & 0 deletions conf/routes
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,13 @@ GET /streamer/:username controllers.Streamer.show(username: UserS
GET /streamer/:username/redirect controllers.Streamer.redirect(username: UserStr)
POST /streamer/:username/check controllers.Streamer.checkOnline(username: UserStr)

# LocalPlay

GET /local controllers.Local.index(devUi: Option[String])
GET /local/new controllers.Local.newGame(white: Option[String], black: Option[String], fen: Option[String], time: Option[String], go: Option[String], devUi: Option[String])
POST /local controllers.Local.newGameForm(devUi: Option[String])
# GET /local/assets controllers.Local.assets

# Round
GET /$gameId<\w{8}> controllers.Round.watcher(gameId: GameId, color: Color = Color.white)
GET /$gameId<\w{8}>/$color<white|black> controllers.Round.watcher(gameId: GameId, color: Color)
Expand Down
111 changes: 111 additions & 0 deletions modules/local/src/main/LocalUi.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package lila.local
package ui

import play.api.libs.json.*
import play.api.i18n.Lang

import lila.ui.*
import ScalatagsTemplate.{ *, given }
import scalalib.paginator.Paginator
import lila.core.i18n.{ I18nKey as trans }
import lila.common.Json.given
import lila.common.String.html.safeJsonValue
import lila.local.GameSetup

final class LocalUi(helpers: Helpers):
import helpers.{ *, given }

def index(data: JsObject, devUi: Boolean)(using ctx: Context) =
Page("")
.copy(fullTitle = s"Play vs Bots".some)
.js(
PageModule(if devUi then "local.dev" else "local", data ++ Json.obj("i18n" -> i18nJsObject(i18nKeys)))
)
.js(EsmInit("round"))
.css(if devUi then "local.dev" else "local")
.css("round")
.css(ctx.pref.hasKeyboardMove.option("keyboardMove"))
.css(ctx.pref.hasVoice.option("voice"))
.csp(_.withWebAssembly)
.graph(
OpenGraph(
title = "Play vs Bots",
description = "Play vs Bots",
url = netBaseUrl.value
)
)
.zoom
.hrefLangs(lila.ui.LangPath("/")) {
emptyFrag
}

//def i18n(using Translate) = i18nJsObject(i18nKeys)

private val i18nKeys = Vector(
trans.site.oneDay,
trans.site.nbDays,
trans.site.nbHours,
trans.site.nbSecondsToPlayTheFirstMove,
trans.site.kingInTheCenter,
trans.site.threeChecks,
trans.site.variantEnding,
trans.site.anonymous,
trans.site.flipBoard,
trans.site.aiNameLevelAiLevel,
trans.site.yourTurn,
trans.site.abortGame,
trans.site.proposeATakeback,
trans.site.offerDraw,
trans.site.resign,
trans.site.opponentLeftCounter,
trans.site.opponentLeftChoices,
trans.site.forceResignation,
trans.site.forceDraw,
trans.site.threefoldRepetition,
trans.site.claimADraw,
trans.site.drawOfferSent,
trans.site.cancel,
trans.site.yourOpponentOffersADraw,
trans.site.accept,
trans.site.decline,
trans.site.takebackPropositionSent,
trans.site.yourOpponentProposesATakeback,
trans.site.thisAccountViolatedTos,
trans.site.gameAborted,
trans.site.checkmate,
trans.site.cheatDetected,
trans.site.whiteResigned,
trans.site.blackResigned,
trans.site.whiteDidntMove,
trans.site.blackDidntMove,
trans.site.stalemate,
trans.site.whiteLeftTheGame,
trans.site.blackLeftTheGame,
trans.site.draw,
trans.site.whiteTimeOut,
trans.site.blackTimeOut,
trans.site.whiteIsVictorious,
trans.site.blackIsVictorious,
trans.site.drawByMutualAgreement,
trans.site.fiftyMovesWithoutProgress,
trans.site.insufficientMaterial,
trans.site.withdraw,
trans.site.rematch,
trans.site.rematchOfferSent,
trans.site.rematchOfferAccepted,
trans.site.waitingForOpponent,
trans.site.cancelRematchOffer,
trans.site.newOpponent,
trans.site.confirmMove,
trans.site.viewRematch,
trans.site.whitePlays,
trans.site.blackPlays,
trans.site.giveNbSeconds,
trans.preferences.giveMoreTime,
trans.site.gameOver,
trans.site.analysis,
trans.site.yourOpponentWantsToPlayANewGameWithYou,
trans.site.youPlayTheWhitePieces,
trans.site.youPlayTheBlackPieces,
trans.site.itsYourTurn
)
9 changes: 9 additions & 0 deletions modules/local/src/main/model.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package lila.local

case class GameSetup(
white: Option[String],
black: Option[String],
fen: Option[String],
time: Option[String],
go: Boolean = false
)
Loading
Loading