Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
- Интегрирована система кастомных визуальных эффектов (VFX): - Добавлена новая утилита MvpVFXUtility и настройки MvpVFXSpawnSettings для спавна эффектов. - Реализован пул эффектов VFXPool с поддержкой отслеживания версий спавна, сброса оверрайдов и анимации масштаба по времени. - Добавлены эффекты прыжка и приземления в PlayerAnimationEvents. - Интегрирован эффект DeathVignetteController для плавного затемнения экрана при смерти игрока. - Добавлены частицы stompImpactVFX при уничтожении врагов прыжком сверху (EnemyController). - Реализован эффект конфетти finishVFX при успешном завершении уровня (LevelFinish). - Интегрированы эффекты искр при сборе монеток, кристаллов и других собираемых предметов (Collectible, EnvironmentalCollectibleBase). - Улучшен и визуально доработан пользовательский интерфейс (UI): - Добавлен скрипт QRCodeTierHighlight для цветовой подсветки QR-кодов в зависимости от тира приза. - Реализована пульсация блока приза в баннере победы (WinBannerController). - Обновлено обозначение валюты в BalanceDisplay с "₽" на "руб.". - Добавлены новые префабы, сцены, ассеты тайлсетов и шейдеров для настройки визуального стиля. - Обновлён протокол и инициализация подсветки COM-платы: - Изменен префикс команд подсветки с 85/86 на 8550, а диапазон эффектов обновлен с 40...52 на 10...22 (LightController, LightMode, LightCycleDurations). - Исправлена хардкод-команда сброса подсветки при инициализации в ComDeviceClient с устаревшей 8600 на новую 8550 для предотвращения рассинхронизации буфера обмена платы.
53 lines
2.4 KiB
C#
53 lines
2.4 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace RR.Common.Controls
|
|
{
|
|
/// <summary>
|
|
/// Таблица длительности одного цикла каждого светового эффекта (в миллисекундах).
|
|
/// Используется в <see cref="LightSequence"/> для пересчёта количества циклов в секунды.ё
|
|
/// Для запуска карусели использовать команду 855001
|
|
/// </summary>
|
|
public static class LightCycleDurations
|
|
{
|
|
private static readonly Dictionary<LightMode, int> CycleMs = new()
|
|
{
|
|
{ LightMode.HorizontalWave, 1000 }, // 10
|
|
{ LightMode.VerticalWave, 1000 }, // 11
|
|
{ LightMode.DiagonalWave, 3000 }, // 12
|
|
{ LightMode.Rainbow, 3000 }, // 13
|
|
{ LightMode.WaveUp, 3000 }, // 14
|
|
{ LightMode.VerticalWaveUp, 1000 }, // 15
|
|
{ LightMode.FinalWave, 1000 }, // 16
|
|
{ LightMode.BlueWave, 1000 }, // 17
|
|
{ LightMode.DiagonalWave2, 5000 }, // 18
|
|
{ LightMode.FallingRows, 6000 }, // 19
|
|
{ LightMode.OrangeWave, 3000 }, // 20
|
|
{ LightMode.SeaWave, 3000 }, // 21
|
|
{ LightMode.DiagonalWave3, 4000 }, // 22
|
|
};
|
|
|
|
/// <summary>Длительность одного цикла в миллисекундах. Для <see cref="LightMode.Off"/> возвращает 0.</summary>
|
|
public static int GetCycleMs(LightMode mode)
|
|
{
|
|
return CycleMs.TryGetValue(mode, out int ms) ? ms : 0;
|
|
}
|
|
|
|
/// <summary>Длительность одного цикла в секундах (float).</summary>
|
|
public static float GetCycleSeconds(LightMode mode)
|
|
{
|
|
return GetCycleMs(mode) / 1000f;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Пересчитывает количество циклов в целые секунды для COM-команды.
|
|
/// Дробные циклы поддерживаются (0.5 = половина цикла).
|
|
/// </summary>
|
|
public static int CyclesToCommandSeconds(LightMode mode, float cycles)
|
|
{
|
|
float totalSeconds = GetCycleSeconds(mode) * cycles;
|
|
return (int)(totalSeconds + 0.5f); // округление до ближайшего целого
|
|
}
|
|
}
|
|
}
|
|
|