using UnityEngine;
namespace DanroJump.Gameplay
{
///
/// Маркер точки спавна контента на платформе.
///
public sealed class PlatformSpawnPoint : MonoBehaviour
{
[SerializeField] private PlatformContentKind kind;
[SerializeField] private bool optional;
[SerializeField] [Min(0f)] private float weight = 1f;
///
/// Категория контента, который может появиться в этой точке.
///
public PlatformContentKind Kind => kind;
///
/// Можно ли пропустить эту точку, если контент этапа не выбран.
///
public bool Optional => optional;
///
/// Вес точки при выборе между несколькими подходящими позициями.
///
public float Weight => weight;
///
/// Transform, в позиции которого создается контент.
///
public Transform Anchor => transform;
///
/// Рисует цветную gizmo-точку в редакторе для удобной настройки prefab платформ.
///
private void OnDrawGizmos()
{
Gizmos.color = KindColor(kind);
Gizmos.DrawWireSphere(transform.position, 0.12f);
Gizmos.DrawLine(transform.position, transform.position + transform.up * 0.25f);
}
///
/// Возвращает цвет gizmo по типу контента.
///
private static Color KindColor(PlatformContentKind contentKind)
{
switch (contentKind)
{
case PlatformContentKind.Collectible:
return Color.yellow;
case PlatformContentKind.Equipment:
return Color.cyan;
case PlatformContentKind.Enemy:
return Color.red;
default:
return Color.white;
}
}
}
}