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];
}
}