using System.Collections.Generic; using UnityEngine; using UnityEngine.Serialization; namespace CharacterSystem { [CreateAssetMenu(fileName = "DifficultyModule", menuName = "Scriptable Objects/DifficultyModule")] public class DifficultyModule : ScriptableObject { [FormerlySerializedAs("difficultyPresetsEasy")] [SerializeField] private List _difficultyPresetsEasy = new List(); [FormerlySerializedAs("difficultyPresetsMedium")] [SerializeField] private List _difficultyPresetsMedium = new List(); [FormerlySerializedAs("difficultyPresetsHard")] [SerializeField] private List _difficultyPresetsHard = new List(); [FormerlySerializedAs("minThinkTime")] [SerializeField] private float _minThinkTime; [FormerlySerializedAs("maxThinkTime")] [SerializeField] private float _maxThinkTime = 2f; private int _presetIndex; private List _activeDifficultyList; public float ThinkTime => Random.Range(_minThinkTime, _maxThinkTime); public void PullSettings() { string difficulty = SettingsManager.GetString(SettingKey.DIFFICULTY); string mode = SettingsManager.GetString(SettingKey.DIFFICULTY_MODE); _activeDifficultyList = mode == "Заработок" ? _difficultyPresetsHard : GetListByDifficulty(difficulty); ResetPresetIndex(); } public DifficultyPreset GetCurrentPreset() { if (_activeDifficultyList == null || _activeDifficultyList.Count == 0) return null; return _activeDifficultyList[_presetIndex]; } public void IncreaseDifficulty() { if (_activeDifficultyList == null || _activeDifficultyList.Count == 0) return; _presetIndex = Mathf.Clamp(_presetIndex + 1, 0, _activeDifficultyList.Count - 1); } public void DecreaseDifficulty() { if (_activeDifficultyList == null || _activeDifficultyList.Count == 0) return; _presetIndex = Mathf.Clamp(_presetIndex - 1, 0, _activeDifficultyList.Count - 1); } public void ResetPresetIndex() => _presetIndex = _activeDifficultyList == null ? 0 : _activeDifficultyList.Count / 2; private List GetListByDifficulty(string difficulty) => difficulty switch { "Легкая" => _difficultyPresetsEasy, "Средняя" => _difficultyPresetsMedium, "Сложная" => _difficultyPresetsHard, _ => _difficultyPresetsMedium }; } }