Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
- Добавлена система ввода текста через модальное окно с ячейками для аркадного автомата - Реализован TextInputModal с поддержкой кастомных алфавитов и навигации - Добавлен TextInputCell для ввода отдельных символов с циклической навигацией - Создан TextInputSettingsBinder для интеграции ввода текста с системой настроек - Реализована компактная сериализация настроек (только нужные поля в JSON) - Внедрена система баланса игрока (BalanceManager) - Баланс начисляется при оплате импульсом, списывается при начале/продолжении игры - Добавлен InactivityManager для выхода в меню при отсутствии активности (5 минут) - Улучшена система настроек - Добавлены флаги shownInSettings и exposed для управления видимостью настроек - Реализована автоматическая регистрация/отписка SettingsButtonBinder при активации/деактивации - Исправлена загрузка настроек с проверкой типов через Sanitize() - SettingsApplier упрощен - оставлена только поддержка AudioManager - Добавлен ValueSelectorRow для выбора целочисленных значений с шагом - Удалены примеры и документация из production кода (QUICK_SETUP.md, TextInputExample, AdvancedLoggingExample) - Убран весь отладочный вывод Debug.Log из системы настроек и ввода текста - Очищены неразрывные пробелы из файлов проекта - Добавлены префабы UI (InputCell)
47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
using UnityEngine;
|
|
using RR.Game2D.Core.Managers;
|
|
|
|
namespace RR.Common.Settings
|
|
{
|
|
public static class SettingsApplier
|
|
{
|
|
public static void Apply(SettingEntry def, SettingValue v)
|
|
{
|
|
if (def == null)
|
|
{
|
|
Debug.LogWarning("[SettingsApplier] Cannot apply settings: SettingEntry is null");
|
|
return;
|
|
}
|
|
|
|
switch (def.applyTarget)
|
|
{
|
|
case ApplyTarget.None:
|
|
return;
|
|
|
|
case ApplyTarget.Audio:
|
|
ApplyAudio(def, v);
|
|
return;
|
|
}
|
|
}
|
|
|
|
private static void ApplyAudio(SettingEntry def, SettingValue v)
|
|
{
|
|
float volume = Mathf.Clamp01(v.f);
|
|
|
|
// Применяем через AudioManager
|
|
if (GameManager.Instance?.Audio != null)
|
|
{
|
|
switch (def.audioTargetType)
|
|
{
|
|
case AudioTargetType.Music:
|
|
GameManager.Instance.Audio.SetMusicVolume(volume);
|
|
break;
|
|
|
|
case AudioTargetType.Sfx:
|
|
GameManager.Instance.Audio.SetSfxVolume(volume);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |