Пример #1
0
        //id는 입력된 Side가 소속된 공간
        private bool IsOutterSide(Guid id, Data.Side side, Space.RelationLevel level)
        {
            foreach (Space.RoomRelationShip other in this.Relations[level])
            {
                if (id != other.Origin.id)
                {
                    foreach (Data.SideCardinalDirection othersideDirection in Enum.GetValues(typeof(Data.SideCardinalDirection)))
                    {
                        foreach (Data.Side otherSide in other.Origin.Sides[othersideDirection])
                        {
                            if (side.IsContact(otherSide))
                            {
                                return(false);
                            }
                        }
                    }
                }
            }

            return(true);
        }
Пример #2
0
        private Space.RoomRelationShip CreateWaitingList <Initial>(List <Guid> PlacedRelList, Dictionary <Space.RelationLevel, List <Space.RoomRelationShip> > NotPlacedRelList, Space.RelationLevel lv)
        {
            Space.RoomRelationShip init = new Space.RoomRelationShip(new Space.Room(), lv);
            foreach (Space.RoomRelationShip rel in Relationships.Values)
            {
                if (rel.Level == lv && rel.Origin is Initial)
                {
                    init = rel;
                }
            }

            if (init.Relations.Count == 0)
            {
                throw new System.Exception("Not Found initial start point at func CreateWaitingList");
            }

            PlacedRelList.Add(init.Origin.id);

            foreach (Guid id in init.Relations.Keys)
            {
                if (Relationships[id].Level == lv)
                {
                    NotPlacedRelList[lv].Add(Relationships[id]);
                }
            }
            NotPlacedRelList[lv].Sort();

            return(init);
        }