# 41. Выбор клетки результата в предпросмотре синтеза

Дата: 9 ноября 2026. Интерфейс: 0.5.4. Профиль партии: prototype-solo30-v6.

## Пользовательский сценарий

Откройте предпросмотр сборки или повышения качества. Выберите место результата нажатием на изображение компонента в нижней панели либо на сам подходящий кристалл на карте. Предпросмотр остаётся открытым. Координаты результата, выделенная картинка, белая метка и набор расходуемых экземпляров обновляются вместе.

Кнопка «Собрать» или «Улучшить» выполняет действие только после подтверждения. «Отмена» и Escape закрывают предпросмотр без расходования камней. Нажатие на пустую клетку, булыжник или неподходящий минерал не закрывает предпросмотр и не запускает строительство или удаление; появляется короткое пояснение.

Изображения стали настоящими кнопками с отметкой выбранного состояния aria-pressed. Доступны касание, мышь, Tab, Enter и пробел. На кнопке указаны координаты клетки, а доступное имя содержит минерал, качество и место. Основная область нажатия не меньше 44×44.

## Допустимые места

- Для составного рецепта выбирается любой точный ингредиент текущего набора: сохранённые башни либо новая пятёрка.
- Смешивать эти два набора внутри одного предпросмотра нельзя. Если оба набора готовы, нужный набор можно выбрать существующим способом до открытия предпросмотра.
- Если на поле есть лишний одинаковый подходящий экземпляр, он тоже доступен. Выбор пересобирает точный список расходуемых камней. Исключённый сохранённый дубликат остаётся на поле.
- При улучшении пары или четвёрки выбирается любой совпадающий камень этой новой пятёрки. Третий одинаковый экземпляр может стать местом результата пары. Сохранённый экземпляр в повышение качества не подставляется.
- Великий камень из четырёх одинаковых камней пятого качества сохраняет своё особое правило.
- Результат размещается на существующем допустимом компоненте. Свободное размещение на пустой клетке не добавлено.

Для пятёрки по-прежнему остаётся один результат и четыре булыжника. Для сохранённого рецепта превращаются только использованные экземпляры. На карте белая ✦ указывает результат, числа — компоненты, ↔ — дополнительный подходящий экземпляр, × — прочие позиции пятёрки, которые станут булыжниками.

## Реализация

Модель предпросмотра содержит anchorChoices: точные ID, определения, типы и координаты допустимых опор. Перед каждым переключением повторно проверяется прежний fingerprint, затем строится новый read-only план с другим anchorId или id. Проверяются совпадение результата и сохранение типа набора. Финальное подтверждение повторяет проверку и передаёт обычную команду движку.

Выбор места меняет только интерфейс. Партия, ресурсы, фаза, команда-история и случайные последовательности остаются прежними. Во время предпросмотра бой остановлен. После отмены он продолжает работать, если не был поставлен на обычную паузу ранее.

Касание карты в предпросмотре сначала проверяет пересечение луча с видимой геометрией кристалла, затем использует клетку основания. Это позволяет нажимать на верх высокого кристалла, который визуально находится над другой клеткой. В обычном строительстве прежнее определение клетки не меняется. Перетягивание и жест двумя пальцами сохраняют защиту от случайного нажатия.

Дополнительные метки используют прежнюю пакетную отрисовку колец. Буфер и HTML-метки увеличиваются только при необходимости, поэтому подходят и для более пяти возможных мест. Глубина колец сохраняет перекрытие самим кристаллом. Обычное удаление и клавиатурная стройка заблокированы на время выбора места.

## Проверка

138 тестов проходят: 130 прежних и восемь новых. Проверены смена каждой опоры сохранённого рецепта, дополнительный дубликат, пятёрка, пара, Великий камень, запрет смешивания наборов, устаревший предпросмотр и подтверждение каждой поддержанной оригинальной формулы на каждом её ингредиенте.

Браузерный сценарий использует реальные кнопки и касания canvas. Он проверяет выбор через вложенное изображение и Enter, переключение на карте без закрытия, отказ неподходящему камню и пустой клетке, отмену и фактический результат в выбранном месте. Отдельно проверены восемь кандидатов и рост буфера меток, третий одинаковый камень в улучшении и попадание в верхнюю часть высокого кристалла, когда клетка плоскости отличается.

Обычный работающий цикл без ограничения requestAnimationFrame подтверждает остановку боя на время выбора и продолжение после отмены. Проверены размеры 320×568, 390×844, 844×390 и 1440×1000. Отчёт: output/GemTD_synthesis_anchor_QA.json. Изображение: output/GemTD_synthesis_anchor_mobile.png. Публикация подтверждается отдельно ответом Sites и output/GemTD_synthesis_anchor_delivery.json.

Кампания остаётся на 30 волн. Рецепты, ограничения качества и формат сохранения партии не менялись. Двойное подтверждение обычной постановки кристалла и кооперативные пинги остаются отдельно отложенными задачами.
