Инкапсулированы методы появления и ухода персонажа Инкапсулирована работа с аниматором Работа с репликами вынесена в ScriptableObject Логика MessageBox вынесена в отдельный класс Переработан event bus персонажей Сложность и призовой модуль вынесены в отдельные классы Character.cs приведён к Single Responsibility Principle.
52 lines
2.0 KiB
C#
52 lines
2.0 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace CharacterSystem
|
|
{
|
|
[CreateAssetMenu(fileName = "DifficultyModule", menuName = "Scriptable Objects/DifficultyModule")]
|
|
public class DifficultyModule : ScriptableObject
|
|
{
|
|
[Header("Списки сложностей")]
|
|
public List<DifficultyPreset> difficultyPresetsEasy;
|
|
public List<DifficultyPreset> difficultyPresetsMedium;
|
|
public List<DifficultyPreset> difficultyPresetsHard;
|
|
|
|
[Header("Время размышлений")]
|
|
[SerializeField] float minThinkTime = 0;
|
|
[SerializeField] float maxThinkTime = 2;
|
|
|
|
private int presetIndex;
|
|
private List<DifficultyPreset> _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 IncreaseDifficuly()
|
|
=> presetIndex = Mathf.Clamp(presetIndex + 1, 0, _activeDifficultyList.Count - 1);
|
|
|
|
public void DecreaseDifficuly()
|
|
=> presetIndex = Mathf.Clamp(presetIndex - 1, 0, _activeDifficultyList.Count - 1);
|
|
|
|
public void ResetPresetIndex()
|
|
=> presetIndex = _activeDifficultyList.Count / 2;
|
|
|
|
private List<DifficultyPreset> GetListByDifficulty(string difficulty) => difficulty switch
|
|
{
|
|
"Легкая" => difficultyPresetsEasy,
|
|
"Средняя" => difficultyPresetsMedium,
|
|
"Сложная" => difficultyPresetsHard,
|
|
_ => difficultyPresetsMedium
|
|
};
|
|
}
|
|
} |