sea-battle/Assets/Scripts/BossLevelConfig.cs

55 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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