Отображение результатов
Назначение
Отображение результатов служит для информирования игрока о итогах завершившегося боя. Эта часть интерфейса решает задачу наглядного представления подробной статистики по сражению, изменений в игровых ресурсах (например, мана), а также полученных достижений. Благодаря этому игрок получает обратную связь о своих успехах или неудачах, что способствует мотивации и лучшему пониманию игрового процесса.
Функциональность
Основная функциональность заключается в визуализации итогов боя с акцентом на ключевые данные:
Статус исхода боя (победа, поражение, ничья) с соответствующими иконками и сообщениями;
Изменение маны игрока, итоговое ее количество, а также текущая серия побед;
Подробный лог боя, включающий выбор стихий (элементов) игрока и оппонента, а также их взаимодействие;
Отображение использованных элементалей с их характеристиками, например, уровнем защиты;
Финальные расчёты, включая базовую ставку, сэкономленную защиту и итоговое изменение ресурсов.
Для реализации используется React-компонент BattleResultPage, который принимает текущее состояние игры, извлекает из него данные боя и формирует удобный для восприятия интерфейс.
Пример ключевого фрагмента, определяющего статус результата:
const isVictory = battleLog.winner === 'player';
const isDefeat = battleLog.winner === 'opponent';
Далее, на основе этих булевых переменных, формируется отображение заголовка и стилей для различных блоков.
Визуализация логики стихийного противостояния происходит через цвета и эмодзи, взятые из константы ELEMENTS:
<div
className='element-battle-emoji'
style={{ color: ELEMENTS[battleLog.playerElement].color }}
>
{ELEMENTS[battleLog.playerElement].emoji}
</div>
Это позволяет быстро и интуитивно показать выбор стихий обеих сторон и исход их взаимодействия.
Взаимосвязь с основной механикой и другими подмодулями
Отображение результатов является завершающим этапом процесса пошаговой битвы элементалей. Оно тесно интегрируется с:
Логикой боя (gameLogic.ts), откуда получает итоговые данные по победителю, изменениям ресурсов и характеристикам элементалей;
Анимациями битвы (BattleAnimationPixi), после которых происходит переход к странице с результатами;
Выбором и подготовкой боя, так как отображаемые элементали и выбранные стихии берутся из состояния, сформированного на этапе подготовки.
Новизна данного подмодуля заключается в глубокой детализации боевого лога с разбивкой по элементам, защите и итоговым подсчетам ресурсов, что не покрывается в общей механике или анимациях. Это повышает прозрачность результатов и способствует лучшему пониманию игроком последствий своих действий.
Диаграмма процесса отображения результатов
flowchart TD
BattleEnd[Завершение боя]
FetchData[Получение данных боя из gameState]
CheckData{Данные боя доступны?}
RenderResult[Отрисовка результата боя]
ShowStats[Отображение статистики и ресурсов]
ShowBattleLog[Отображение детального лога боя]
UserAction[Действия пользователя]
ReturnToMenu[Возврат в меню/выбор боя]
BattleEnd --> FetchData --> CheckData
CheckData -->|Да| RenderResult
CheckData -->|Нет| UserAction
RenderResult --> ShowStats --> ShowBattleLog --> UserAction
UserAction --> ReturnToMenu
Эта диаграмма отражает основной поток работы компонента отображения результатов: после окончания боя происходит получение и проверка данных, затем формируется интерфейс с итогами и подробным боевым журналом, после чего пользователю предоставляется выбор дальнейших действий (например, начать новый бой).