Exemplo n.º 1
0
        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))));
        }
Exemplo n.º 2
0
        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);
            }
        }