Stream custom live channels using your own media
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

61 lines
1.4 KiB

using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Scheduling.YamlScheduling.Models;
namespace ErsatzTV.Core.Scheduling.YamlScheduling;
public class YamlPlayoutContext(Playout playout, YamlPlayoutDefinition definition, int guideGroup)
{
private readonly System.Collections.Generic.HashSet<int> _visitedInstructions = [];
private int _instructionIndex;
private bool _guideGroupLocked;
private int _guideGroup = guideGroup;
public Playout Playout { get; } = playout;
public YamlPlayoutDefinition Definition { get; } = definition;
public DateTimeOffset CurrentTime { get; set; }
public int InstructionIndex
{
get => _instructionIndex;
set
{
_instructionIndex = value;
_visitedInstructions.Add(value);
}
}
public bool VisitedAll => _visitedInstructions.Count >= Definition.Playout.Count;
public int NextGuideGroup()
{
if (_guideGroupLocked)
{
return _guideGroup;
}
_guideGroup++;
if (_guideGroup > 1000)
{
_guideGroup = 1;
}
return _guideGroup;
}
public void LockGuideGroup(bool advance = true)
{
if (advance)
{
NextGuideGroup();
}
_guideGroupLocked = true;
}
public void UnlockGuideGroup()
{
_guideGroupLocked = false;
}
}