Уведомления о достижениях

Назначение

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

Функциональность

Компонент отображает всплывающее окно с информацией о достижении — иконкой, названием и описанием. Процесс работы включает следующие ключевые этапы:

Такой подход обеспечивает автоматическое и кратковременное отображение достижений без необходимости действий со стороны пользователя.

Пример ключевого кода из AchievementNotification.tsx:

useEffect(() => {
  const showTimer = setTimeout(() => setIsVisible(true), 100);
  const hideTimer = setTimeout(() => {
    setIsVisible(false);
    setTimeout(onDismiss, 500);
  }, 4000);
  return () => {
    clearTimeout(showTimer);
    clearTimeout(hideTimer);
  };
}, [onDismiss]);

Взаимосвязь с родительской темой и другими подсистемами

Уведомления о достижениях тесно интегрированы с общей системой поддержки игрока, дополняя пошаговые туториалы и настройки:

Новизна данного подсегмента состоит в реализации временного, анимированного и автономного отображения достижений, что не покрывается в других подтемах поддержки и обучения.

Диаграмма: последовательность отображения уведомления о достижении

sequenceDiagram
    participant GameLogic as Игровая логика
    participant App as Корневой компонент
    participant AchievementNotification as Уведомление

    GameLogic->>App: Новое достижение
    App->>AchievementNotification: Передать данные достижения
    AchievementNotification->>AchievementNotification: Инициализация (isVisible = false)
    AchievementNotification-->>AchievementNotification: Задержка 100мс
    AchievementNotification->>AchievementNotification: Показать уведомление (isVisible = true)
    Note right of AchievementNotification: Уведомление отображается 4 секунды
    AchievementNotification->>AchievementNotification: Скрыть уведомление (isVisible = false)
    AchievementNotification-->>App: Вызов onDismiss для удаления уведомления

Эта диаграмма иллюстрирует жизненный цикл отображения уведомления — от получения данных о достижении до его автоматического скрытия и удаления из интерфейса.


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