- Добавлен асинхронный процесс аппаратной выдачи физических призов (хоппер и витрина) в GameplayHudController. - Реализована блокировка выдачи по 10-секундному таймауту датчика хоппера с гарантированной отправкой команды отключения двигателя '300'. - Реализован автоматический таймаут неактивности на экране QR-кода с последующим переходом в главное меню. - Расширен сервис статистики PrizeSessionStateService новыми долгосрочными счетчиками (сыгранные игры, очки, монеты, сбои связи COM, физ. выдачи и ошибки). - Обновлен построитель сводки статистики в меню настроек для отображения новых счетчиков и списка последних 5 сессий. - Написаны EditMode тесты для проверки инкремента счетчиков и запуска выдачи призов.
40 lines
1.4 KiB
C#
40 lines
1.4 KiB
C#
using UnityEngine;
|
|
using DanroJump.Audio;
|
|
|
|
namespace DanroJump.Gameplay
|
|
{
|
|
/// <summary>
|
|
/// Collectible, который дает игроку усиленный вертикальный отскок и очки.
|
|
/// </summary>
|
|
public sealed class BounceBoostCollectible : CollectibleBase
|
|
{
|
|
[SerializeField] [Min(0f)] private float bounceVelocity = 24f;
|
|
[SerializeField] [Min(0)] private int scoreValue = 5;
|
|
|
|
private GameplaySession session;
|
|
private IGameAudioService audioService;
|
|
|
|
/// <summary>
|
|
/// Получает игровую сессию для начисления очков.
|
|
/// </summary>
|
|
[Zenject.Inject]
|
|
public void Construct(
|
|
GameplaySession injectedSession,
|
|
[Zenject.InjectOptional] IGameAudioService injectedAudioService = null)
|
|
{
|
|
session = injectedSession;
|
|
audioService = injectedAudioService;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Применяет усиленный прыжок и награду за подбор.
|
|
/// </summary>
|
|
protected override void OnCollected(JumpPlayerController player)
|
|
{
|
|
audioService?.Play(GameAudioEvent.BoostCollected, transform.position);
|
|
player.BounceWithEnemyPassThrough(bounceVelocity);
|
|
session?.AddScore(scoreValue);
|
|
}
|
|
}
|
|
}
|