Прокачка и улучшения
Назначение
Данный раздел отвечает за реализацию механики повышения уровня и редкости элементалей в коллекции игрока. Основная задача — предоставить пользователю удобный и наглядный способ прокачивать своих персонажей, при этом контролируя доступность улучшений с учётом ресурсов (маны) и ограничений по максимальному уровню и редкости. Эта функциональность является ключевой для развития коллекции и повышения боевой эффективности элементалей, что расширяет игровой опыт и стратегические возможности пользователя.
Функциональность
Выбор элементаля для прокачки: Пользователь может выбрать из своей коллекции конкретного элементаля, фильтруя по стихиям и редкостям, и запросить повышение уровня или редкости.
Проверка доступности прокачки: Система проверяет, доступен ли элементаль для улучшения (не достиг максимального уровня или редкости) и достаточно ли маны у игрока для совершения операции.
Подтверждение операции: Перед применением прокачки выводится модальное окно с детальной информацией о текущем и новом уровне/редкости, стоимости в мане и остатке после списания.
Обработка прокачки: При подтверждении вызывается функция обновления элементаля, которая либо увеличивает уровень, либо, при достижении максимума, повышает редкость, создавая нового элементаля с начальным уровнем.
Виброотклик: Для усиления взаимодействия реализована тактильная обратная связь — при успешном улучшении карта элементаля вибрирует, причём при повышении редкости вибрация более интенсивная.
Обновление UI: После прокачки интерфейс обновляется, отражая новые характеристики элементаля и баланс маны игрока.
Ключевые методы и взаимодействия
В компоненте CollectionTab.tsx реализованы:
Управление выбором элементаля и фильтрами.
Отображение подтверждающего модального окна с деталями.
Обработка событий подтверждения и отмены.
const handleConfirmLevelUp = () => {
if (selectedElemental && selectedDisplayData) {
onLevelUpElemental(selectedElemental.id);
setShowConfirmModal(false);
// Запуск вибрации карты
...
}
};
Компонент
CollectibleCard.tsxотвечает за отображение карточки элементаля и обработку клика по кнопке прокачки. В нём также реализована логика вызова вибрации через глобальный объектwindow.triggerCardVibration.В
gameLogic.tsсосредоточены методы, определяющие:Стоимость повышения уровня (
getLevelUpCost).Стоимость повышения редкости (
getRarityUpgradeCost).Проверка возможности прокачки (
canLevelUpElemental).Логика самого повышения уровня или редкости (
levelUpElemental), которая при достижении максимума уровня создаёт элементаля следующей редкости с новым уникальным ID.
export const canLevelUpElemental = (
elemental: CollectedElemental,
playerMana: number
): boolean => {
if (elemental.rarity === 'immortal') return false;
const maxLevel = getMaxLevelForRarity(elemental.rarity);
const canUpgradeRarity = elemental.level >= maxLevel;
if (canUpgradeRarity) {
return playerMana >= getRarityUpgradeCost(elemental.rarity);
}
return elemental.level < maxLevel && playerMana >= getLevelUpCost(elemental);
};
Взаимосвязь с родительской темой и другими подсистемами
Интеграция с коллекцией элементалей: Механизмы прокачки напрямую зависят от структуры коллекции, описанной в главной теме. Улучшения изменяют характеристики элементалей, что влияет на бой и другие игровые процессы.
Взаимодействие с ресурсами игрока: Проверка достаточности маны и её обновление после прокачки обеспечивает баланс и экономическую модель игры.
Связь с UI фильтрации и отображения: Фильтры и сортировки в
CollectionTabпозволяют быстро найти нужного элементаля для прокачки, объединяя функционал с подсистемой фильтрации.Тактильная обратная связь: Введение вибрации при прокачке — новый элемент UX, не покрытый в родительской теме, повышающий вовлечённость и удовлетворённость пользователя.
Поддержка расширяемости: Логика уровней и редкостей построена так, что легко добавлять новые стадии развития и стоимости, что гармонично вписывается в общую архитектуру проекта.
Таким образом, подсистема прокачки и улучшений является связующим звеном между коллекцией, ресурсами и интерфейсом, расширяя возможности развития персонажей и углубляя игровой процесс.
Диаграмма процесса прокачки элементаля
flowchart TD
User[Пользователь выбирает элементаля]
CheckCanLevelUp{Можно ли прокачать?}
NotEnoughMana[Недостаточно маны]
ShowConfirmModal[Показать окно подтверждения]
UserConfirms{Подтверждение действия?}
UpgradeLevel[Повысить уровень]
UpgradeRarity[Повысить редкость]
UpdateCollection[Обновить коллекцию]
PlayVibration[Запустить вибрацию карты]
CloseModal[Закрыть окно]
UpdateUI[Обновить интерфейс]
User --> CheckCanLevelUp
CheckCanLevelUp -- Нет --> NotEnoughMana
CheckCanLevelUp -- Да --> ShowConfirmModal
ShowConfirmModal --> UserConfirms
UserConfirms -- Нет --> CloseModal
UserConfirms -- Да --> UpgradeLevel
UpgradeLevel --> UpdateCollection
CheckCanLevelUp -- Редкость? --> UpgradeRarity
UpgradeRarity --> UpdateCollection
UpdateCollection --> PlayVibration
PlayVibration --> CloseModal
CloseModal --> UpdateUI
Данная диаграмма иллюстрирует взаимодействие пользователя с системой прокачки: от выбора элементаля через проверку условий, подтверждение, выполнение улучшения до обновления интерфейса и запуска вибрации, повышающей пользовательский опыт.