55 lines
2.6 KiB
C#
55 lines
2.6 KiB
C#
using UnityEngine;
|
||
|
||
/// <summary>
|
||
/// Конфиг параметров поля/кораблей/рифов для каждого уровня босса.
|
||
/// Настраивается оператором в Inspector.
|
||
/// </summary>
|
||
[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 },
|
||
};
|
||
|
||
/// <summary>Возвращает данные уровня (clamp при выходе за границы).</summary>
|
||
public LevelData GetLevel(int botLevel)
|
||
{
|
||
int idx = Mathf.Clamp(botLevel, 0, levels.Length - 1);
|
||
return levels[idx];
|
||
}
|
||
}
|