Files
ftcandClaude Opus 5 4f3a26dc45 M5-M7: сцены, лобби, экран игры и цикл матча
Обе сцены собраны через Code Mode, не руками.

- loader: поднимает модули, прогревает арт карт, уходит в lobby
- lobby: обе UI-ветки в одной сцене (по ARCHITECTURE.md), матч — это
  смена видимого корня, а не загрузка сцены
- GameScreen рисует текущее состояние и доводит узлы твинами, а не
  проигрывает поток событий: узел карты живёт вместе со своей картой,
  поэтому "шестёрка ушла из руки на стол" не требует отдельного случая
- один тап = ход целиком; логика вынесена в core/rules/intent.ts
  и покрыта тестами, в том числе проверкой, что она никогда не предложит
  ход, который правила отвергнут
- арт карт переехал в assets/resources: .pac — это инструкция упаковки
  на сборке, а не рантайм-ассет, и без ссылок на кадры в сборку
  не попадало ничего. Теперь все 37 спрайтов в одной текстуре 2048x2048
- клики кнопок подписываются в коде, а не через clickEvents сцены
- строки интерфейса собраны в одном файле

Сборка web-mobile проходит чисто, все ссылки в сцене проверены.
Вживую не запускалось: браузер в этом окружении не поднимает
главный цикл движка. Подробности — в docs/TECHNICAL.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 11:30:28 +03:00

46 lines
1.2 KiB
TypeScript

/**
* Every piece of text the player reads, in one place.
*
* Localisation is out of scope for iteration 1 (see docs/PLAN.md), but keeping
* the strings together means adding a language later is a change to this file
* and nothing else — rather than a hunt through scenes and components.
*/
export const Strings = {
appTitle: 'Fool',
appSubtitle: 'a game of durak',
newGame: 'New Game',
quit: 'Leave',
playAgain: 'Play Again',
backToLobby: 'Back',
statsTitle: 'Your record',
statsPlayed: 'Played',
statsWon: 'Won',
statsLost: 'Lost',
statsStreak: 'Streak',
take: 'Take',
done: 'Done',
yourMove: 'Your move',
yourDefence: 'Beat it, or take',
addMore: 'Add cards, or say done',
opponentThinking: 'Opponent is thinking',
opponentTook: 'Opponent takes the cards',
youTook: 'You take the cards',
trumpIs: 'Trump',
deckLeft: 'Deck',
opponentHand: 'Opponent',
wonTitle: 'You win',
lostTitle: 'You are the fool',
drawTitle: 'A draw',
wonBody: 'Your opponent was left holding the cards.',
lostBody: 'You were left holding the cards.',
drawBody: 'You both ran out at the same time.',
cannotPlayThat: 'You cannot play that card',
} as const;