using RobotNet.RobotShares.Dtos; namespace RobotNet.RobotManager.Services.Traffic; public class TrafficMap { public Guid MapId { get; set; } public Dictionary Agents { get; set; } = []; public Dictionary> Locked { get; set; } = []; public List Conflicts { get; set; } = []; public List GivewayResolution { get; set; } = []; public void AddLocker(string robotId, TrafficNodeDto[] releaseNodes) { //Console.WriteLine($"{robotId} Add Locker: {string.Join(", ", releaseNodes.Select(n => n.Name))}"); if (Locked.TryGetValue(robotId, out List? lockedNodes) && lockedNodes is not null) Locked[robotId].AddRange(releaseNodes.Where(n => !lockedNodes.Any(ln => ln.Id == n.Id))); else Locked.Add(robotId, [.. releaseNodes]); } public void UpdateLocker(string robotId, TrafficNodeDto[] releaseNodes) { //Console.WriteLine($"{robotId} Update Locker: {string.Join(", ", releaseNodes.Select(n => n.Name))}"); if (Locked.TryGetValue(robotId, out _)) Locked[robotId] = [.. releaseNodes]; else Locked.Add(robotId, [.. releaseNodes]); } }