using UnityEngine; /// /// Конфиг параметров поля/кораблей/рифов для каждого уровня босса. /// Настраивается оператором в Inspector. /// [CreateAssetMenu(fileName = "BossLevelConfig", menuName = "Game/BossLevelConfig")] public class BossLevelConfig : ScriptableObject { // ── Запись: тип рифа + сколько штук разместить ──────────────────────── [System.Serializable] public class ReefEntry { [Tooltip("Конфигурация рифа (ScriptableObject ReefConfig)")] public ReefConfig config; [Tooltip("Сколько таких рифов разместить на поле")] public int count = 1; } // ── Данные уровня ───────────────────────────────────────────────────── [System.Serializable] public class LevelData { [Tooltip("Размер поля NxN (Растущие поля: 5-9; в других режимах — 10)")] public int fieldSize = 10; [Tooltip("Количество кораблей для режима 'Растущие поля' (маленькое поле)")] public int shipCountGame1 = 3; [Tooltip("Количество кораблей для режима 'Рифы' (10x10 с рифами, можно больше)")] public int shipCountGame2 = 7; [Tooltip("Рифы для режима 'Рифы' — массив типов с количеством каждого")] public ReefEntry[] reefs = new ReefEntry[0]; } [Tooltip("Данные для каждого уровня босса (0..4)")] public LevelData[] levels = new LevelData[] { new LevelData { fieldSize = 5, shipCountGame1 = 3, shipCountGame2 = 7 }, new LevelData { fieldSize = 6, shipCountGame1 = 4, shipCountGame2 = 8 }, new LevelData { fieldSize = 7, shipCountGame1 = 5, shipCountGame2 = 9 }, new LevelData { fieldSize = 8, shipCountGame1 = 6, shipCountGame2 = 9 }, new LevelData { fieldSize = 9, shipCountGame1 = 7, shipCountGame2 = 10 }, }; /// Возвращает данные уровня (clamp при выходе за границы). public LevelData GetLevel(int botLevel) { int idx = Mathf.Clamp(botLevel, 0, levels.Length - 1); return levels[idx]; } }