using System; using System.Collections.Generic; using _Project.Scripts.PlayerUtils; using UnityEngine; namespace _Project.Scripts.LevelGenerating { [Serializable] public class EnemySpawnEntry { public BodyClass enemyClass = BodyClass.Trooper; [Tooltip("Кастомный префаб этого класса. Если пусто — возьмётся общий префаб или создастся капсула.")] public GameObject customPrefab; [Tooltip("Вес (шанс) выбора этого класса относительно других в списке")] [Min(1f)] public float weight = 10f; } // ===================================================================== // Конфиг спавна врагов для темы комнаты (RoomTheme). // Создаётся: ПКМ -> Create -> Level -> Room Enemy Spawn Config. // ===================================================================== [CreateAssetMenu(menuName = "Level/Room Enemy Spawn Config", fileName = "RoomEnemySpawnConfig")] public class RoomEnemySpawnConfig : ScriptableObject { [Header("Количество врагов в комнате")] [Min(0)] public int minEnemies = 2; [Min(0)] public int maxEnemies = 4; [Tooltip("Добавлять +1 врага за каждые N кв. метров площади (0 = не зависит от размера комнаты)")] [Min(0f)] public float extraEnemyPerArea = 35f; [Tooltip("Отступ от стен при спавне врагов (в метрах)")] [Min(1f)] public float wallMargin = 2f; [Header("Префаб по умолчанию")] [Tooltip("Если не назначен — генератор сам соберёт работающую капсулу с EnemyAI!")] public GameObject defaultEnemyPrefab; [Header("Пул классов для этой комнаты")] public List enemyPool = new List { new EnemySpawnEntry { enemyClass = BodyClass.Scout, weight = 25f }, new EnemySpawnEntry { enemyClass = BodyClass.Trooper, weight = 45f }, new EnemySpawnEntry { enemyClass = BodyClass.Juggernaut, weight = 15f }, new EnemySpawnEntry { enemyClass = BodyClass.Sniper, weight = 15f } }; } }