namespace TeleWave.Domain.Broadcast;

/// <summary>Роль строки в кадре заставки — от неё зависят размер и место.</summary>
public enum BumperLineStyle
{
    /// <summary>Подпись: мелко, вразрядку — «СЕЙЧАС», «ДАЛЕЕ В 21:30».</summary>
    Label = 0,

    /// <summary>Название: крупно, ужимается под ширину кадра.</summary>
    Title = 1,

    /// <summary>Мелкая строка под названием — год, жанр, номер серии.</summary>
    Caption = 2,
}

/// <summary>Каким цветом палитры блока рисуется строка.</summary>
public enum BumperLineColor
{
    Accent = 0,
    Text = 1,
}

/// <summary>
/// Строка текста в заставке. Своих цветов и размеров у строки нет — только роль и цвет из палитры
/// блока: иначе каждый подблок пришлось бы оформлять заново, и общий блок перестал бы быть общим.
///
/// <see cref="Text"/> хранится с плейсхолдерами («ДАЛЕЕ В {next.time}»); подставляет их планировщик
/// в момент, когда пара соседей и время показа уже известны.
/// </summary>
public class BumperLine
{
    public int Position { get; private set; }
    public BumperLineStyle Style { get; private set; }
    public BumperLineColor Color { get; private set; }
    public string Text { get; private set; } = string.Empty;

    private BumperLine() { }

    public static BumperLine Create(
        int position,
        BumperLineStyle style,
        BumperLineColor color,
        string text
    ) =>
        new()
        {
            Position = position,
            Style = style,
            Color = color,
            Text = text.Trim(),
        };
}
