private iDoor ToDoor(iDoor door, FullHomeInfo full) { var number = full.HomeInfo.Begin - 1 + door.DoorNumber; var entrance = _homeParser.GetEntrance(number, full.Building.Doors, full.Building.Entrances); return(new New.Implementation.Classes.Door(door, number, entrance, GetStatus(full.ForbiddenElement, number), ToCodes(full.HomeInfo.GetCodesByEntrance(entrance)))); }
private IEnumerable <Door> GetHomeDoors(FullHomeInfo fullInfo, HomeMap source) { // объявляем переменные для краткости var home = fullInfo.Building; var homeInfo = fullInfo.HomeInfo; var rule = fullInfo.ForbiddenElement; var start = homeInfo.Begin; var all = new HashSet <int>(Enumerable.Range(start, home.Doors)); var forbidden = new HashSet <int>(); forbidden.UnionWith(rule.Aggressive); forbidden.UnionWith(rule.NoVisit); forbidden.UnionWith(rule.NoWorried); all.ExceptWith(forbidden); foreach (var i in all) { var temp = new Door(home) { Number = i, Entrance = GetEntrance(i - start, home.Doors, home.Entrances) }; var contains = homeInfo.AllCodes.ContainsKey(temp.Entrance); if (contains) { temp.Codes.AddRange(homeInfo.AllCodes[temp.Entrance]); } yield return(temp); } }