Danil Iarosh d39d160d92 Implement physical prize dispensing, service stats, and QR screen timeout
- Добавлен асинхронный процесс аппаратной выдачи физических призов (хоппер и витрина) в GameplayHudController.
- Реализована блокировка выдачи по 10-секундному таймауту датчика хоппера с гарантированной отправкой команды отключения двигателя '300'.
- Реализован автоматический таймаут неактивности на экране QR-кода с последующим переходом в главное меню.
- Расширен сервис статистики PrizeSessionStateService новыми долгосрочными счетчиками (сыгранные игры, очки, монеты, сбои связи COM, физ. выдачи и ошибки).
- Обновлен построитель сводки статистики в меню настроек для отображения новых счетчиков и списка последних 5 сессий.
- Написаны EditMode тесты для проверки инкремента счетчиков и запуска выдачи призов.
2026-06-23 10:36:13 +03:00

32 lines
896 B
C#

using System;
using UnityEngine;
using UnityEngine.Audio;
namespace DanroJump.Audio
{
/// <summary>
/// Описывает музыкальный трек для конкретного состояния игры.
/// </summary>
[Serializable]
public sealed class GameMusicTrack
{
[SerializeField] private GameMusicCue cue;
[SerializeField] private AudioClip clip;
[SerializeField] private AudioMixerGroup outputGroupOverride;
[SerializeField] [Range(0f, 1f)] private float volume = 1f;
[SerializeField] private bool loop = true;
public GameMusicCue Cue => cue;
public AudioClip Clip => clip;
public AudioMixerGroup OutputGroupOverride => outputGroupOverride;
public float Volume => Mathf.Clamp01(volume);
public bool Loop => loop;
public bool HasClip => clip != null;
}
}