32298595f2
CI / changes (pull_request) Successful in 2s
CI / unit (pull_request) Successful in 10s
CI / integration (pull_request) Successful in 17s
CI / ui (pull_request) Successful in 1m9s
CI / conformance (pull_request) Successful in 9s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m39s
A GatewayClient-shaped facade over the offline engine, so the same game screen can drive a local vs_ai game with no backend (the wiring into Game.svelte is B3.2). - source.ts: LocalSource implements the game-loop subset (GameLoopSource) for a local game id — gameState/gameHistory via replay, submitPlay/pass/exchange/resign apply the human move then run the robot (decide(generateMoves)) synchronously, persisting both and delivering the robot's move through a per-game event emitter (no live stream). hint is gated to >30 min since the robot's last move; evaluate/checkWord are local. It translates the UI's glyph space to the engine's index space with the static letters table. - ruleset.ts: add the static per-variant letters (glyphs), pinned to the Go alphabet — offline is now fully self-contained (no reliance on a warm server alphabet cache). - engine.ts: submitPlay (infers the direction like the server SubmitPlay), evaluatePlay + dictionaryHas for the move preview / word check, and record the main-word coordinate + the words on a play (for the history MoveRecord). - source.test.ts: create -> human pass -> synchronous robot reply via the event, the hint gate, decoded history, and a whole game driven to completion. Pure additive library code; no runtime behavior change (bundle unchanged).
315 lines
3.2 KiB
JSON
315 lines
3.2 KiB
JSON
{
|
||
"erudit_ru": {
|
||
"size": 33,
|
||
"rackSize": 7,
|
||
"bingo": 15,
|
||
"blanks": 3,
|
||
"values": [
|
||
1,
|
||
3,
|
||
2,
|
||
3,
|
||
2,
|
||
1,
|
||
0,
|
||
5,
|
||
5,
|
||
1,
|
||
2,
|
||
2,
|
||
2,
|
||
2,
|
||
1,
|
||
1,
|
||
2,
|
||
2,
|
||
2,
|
||
2,
|
||
3,
|
||
10,
|
||
5,
|
||
10,
|
||
5,
|
||
10,
|
||
10,
|
||
10,
|
||
5,
|
||
5,
|
||
10,
|
||
10,
|
||
3
|
||
],
|
||
"counts": [
|
||
10,
|
||
3,
|
||
5,
|
||
3,
|
||
5,
|
||
9,
|
||
0,
|
||
2,
|
||
2,
|
||
8,
|
||
4,
|
||
6,
|
||
4,
|
||
5,
|
||
8,
|
||
10,
|
||
6,
|
||
6,
|
||
6,
|
||
5,
|
||
3,
|
||
1,
|
||
2,
|
||
1,
|
||
2,
|
||
1,
|
||
1,
|
||
1,
|
||
2,
|
||
2,
|
||
1,
|
||
1,
|
||
3
|
||
],
|
||
"letters": [
|
||
"А",
|
||
"Б",
|
||
"В",
|
||
"Г",
|
||
"Д",
|
||
"Е",
|
||
"Ё",
|
||
"Ж",
|
||
"З",
|
||
"И",
|
||
"Й",
|
||
"К",
|
||
"Л",
|
||
"М",
|
||
"Н",
|
||
"О",
|
||
"П",
|
||
"Р",
|
||
"С",
|
||
"Т",
|
||
"У",
|
||
"Ф",
|
||
"Х",
|
||
"Ц",
|
||
"Ч",
|
||
"Ш",
|
||
"Щ",
|
||
"Ъ",
|
||
"Ы",
|
||
"Ь",
|
||
"Э",
|
||
"Ю",
|
||
"Я"
|
||
]
|
||
},
|
||
"scrabble_en": {
|
||
"size": 26,
|
||
"rackSize": 7,
|
||
"bingo": 50,
|
||
"blanks": 2,
|
||
"values": [
|
||
1,
|
||
3,
|
||
3,
|
||
2,
|
||
1,
|
||
4,
|
||
2,
|
||
4,
|
||
1,
|
||
8,
|
||
5,
|
||
1,
|
||
3,
|
||
1,
|
||
1,
|
||
3,
|
||
10,
|
||
1,
|
||
1,
|
||
1,
|
||
1,
|
||
4,
|
||
4,
|
||
8,
|
||
4,
|
||
10
|
||
],
|
||
"counts": [
|
||
9,
|
||
2,
|
||
2,
|
||
4,
|
||
12,
|
||
2,
|
||
3,
|
||
2,
|
||
9,
|
||
1,
|
||
1,
|
||
4,
|
||
2,
|
||
6,
|
||
8,
|
||
2,
|
||
1,
|
||
6,
|
||
4,
|
||
6,
|
||
4,
|
||
2,
|
||
2,
|
||
1,
|
||
2,
|
||
1
|
||
],
|
||
"letters": [
|
||
"A",
|
||
"B",
|
||
"C",
|
||
"D",
|
||
"E",
|
||
"F",
|
||
"G",
|
||
"H",
|
||
"I",
|
||
"J",
|
||
"K",
|
||
"L",
|
||
"M",
|
||
"N",
|
||
"O",
|
||
"P",
|
||
"Q",
|
||
"R",
|
||
"S",
|
||
"T",
|
||
"U",
|
||
"V",
|
||
"W",
|
||
"X",
|
||
"Y",
|
||
"Z"
|
||
]
|
||
},
|
||
"scrabble_ru": {
|
||
"size": 33,
|
||
"rackSize": 7,
|
||
"bingo": 50,
|
||
"blanks": 2,
|
||
"values": [
|
||
1,
|
||
3,
|
||
1,
|
||
3,
|
||
2,
|
||
1,
|
||
3,
|
||
5,
|
||
5,
|
||
1,
|
||
4,
|
||
2,
|
||
2,
|
||
2,
|
||
1,
|
||
1,
|
||
2,
|
||
1,
|
||
1,
|
||
1,
|
||
2,
|
||
10,
|
||
5,
|
||
5,
|
||
5,
|
||
8,
|
||
10,
|
||
10,
|
||
4,
|
||
3,
|
||
8,
|
||
8,
|
||
3
|
||
],
|
||
"counts": [
|
||
8,
|
||
2,
|
||
4,
|
||
2,
|
||
4,
|
||
8,
|
||
1,
|
||
1,
|
||
2,
|
||
5,
|
||
1,
|
||
4,
|
||
4,
|
||
3,
|
||
5,
|
||
10,
|
||
4,
|
||
5,
|
||
5,
|
||
5,
|
||
4,
|
||
1,
|
||
1,
|
||
1,
|
||
1,
|
||
1,
|
||
1,
|
||
1,
|
||
2,
|
||
2,
|
||
1,
|
||
1,
|
||
2
|
||
],
|
||
"letters": [
|
||
"А",
|
||
"Б",
|
||
"В",
|
||
"Г",
|
||
"Д",
|
||
"Е",
|
||
"Ё",
|
||
"Ж",
|
||
"З",
|
||
"И",
|
||
"Й",
|
||
"К",
|
||
"Л",
|
||
"М",
|
||
"Н",
|
||
"О",
|
||
"П",
|
||
"Р",
|
||
"С",
|
||
"Т",
|
||
"У",
|
||
"Ф",
|
||
"Х",
|
||
"Ц",
|
||
"Ч",
|
||
"Ш",
|
||
"Щ",
|
||
"Ъ",
|
||
"Ы",
|
||
"Ь",
|
||
"Э",
|
||
"Ю",
|
||
"Я"
|
||
]
|
||
}
|
||
}
|