using System.Collections.Generic; using UnityEngine; namespace CharacterSystem { [CreateAssetMenu(fileName = "DifficultyModule", menuName = "Scriptable Objects/DifficultyModule")] public class DifficultyModule : ScriptableObject { [Header("Списки сложностей")] public List difficultyPresetsEasy; public List difficultyPresetsMedium; public List difficultyPresetsHard; [Header("Время размышлений")] [SerializeField] float minThinkTime = 0; [SerializeField] float maxThinkTime = 2; private int presetIndex; private List _activeDifficultyList; public float ThinkTime => Random.Range(minThinkTime, maxThinkTime); public void PullSettings() // прокинуть подписку { var difficulty = SettingsManager.GetString(SettingKey.DIFFICULTY); var mode = SettingsManager.GetString(SettingKey.DIFFICULTY_MODE); _activeDifficultyList = mode == "Заработок" ? difficultyPresetsHard : GetListByDifficulty(difficulty); ResetPresetIndex(); } public DifficultyPreset GetCurrentPreset() => _activeDifficultyList[presetIndex]; public void IncreaseDifficulty() => presetIndex = Mathf.Clamp(presetIndex + 1, 0, _activeDifficultyList.Count - 1); public void DecreaseDifficulty() => presetIndex = Mathf.Clamp(presetIndex - 1, 0, _activeDifficultyList.Count - 1); public void ResetPresetIndex() => presetIndex = _activeDifficultyList.Count / 2; private List GetListByDifficulty(string difficulty) => difficulty switch { "Легкая" => difficultyPresetsEasy, "Средняя" => difficultyPresetsMedium, "Сложная" => difficultyPresetsHard, _ => difficultyPresetsMedium }; } }