public MinimumDistanceConstraint(ILevelDescription <TNode> mapDescription, IRoomShapeGeometry <TConfiguration> roomShapeGeometry, int minimumDistance)
 {
     this.mapDescription    = mapDescription;
     this.roomShapeGeometry = roomShapeGeometry;
     this.minimumDistance   = minimumDistance;
     graph = mapDescription.GetGraph();
 }
        private void DoMapping()
        {
            var graph         = levelDescription.GetGraph();
            var stageOneGraph = levelDescription.GetGraphWithoutCorridors();

            foreach (var vertex in graph.Vertices)
            {
                var roomNode = CreateRoomNode(vertex);

                // Create vertices mapping
                mappedGraph.AddVertex(roomNode);

                // Store room description
                roomDescriptions[roomNode.Id] = levelDescription.GetRoomDescription(vertex);
            }

            // Handle main graph edges
            foreach (var edge in graph.Edges)
            {
                mappedGraph.AddEdge(GetRoomNode(edge.From), GetRoomNode(edge.To));
            }

            // Handle stage one graph vertices
            foreach (var vertex in stageOneGraph.Vertices)
            {
                mappedStageOneGraph.AddVertex(GetRoomNode(vertex));
            }

            // Handle stage one graph edges
            foreach (var edge in stageOneGraph.Edges)
            {
                mappedStageOneGraph.AddEdge(GetRoomNode(edge.From), GetRoomNode(edge.To));
            }
        }
Esempio n. 3
0
 public CorridorConstraint(ILevelDescription <TNode> mapDescription, IConfigurationSpaces <TConfiguration> configurationSpaces, IRoomShapeGeometry <TConfiguration> roomShapeGeometry)
 {
     this.mapDescription      = mapDescription;
     this.configurationSpaces = configurationSpaces;
     this.roomShapeGeometry   = roomShapeGeometry;
     graphWithoutCorridors    = mapDescription.GetGraphWithoutCorridors();
     graph = mapDescription.GetGraph();
 }
        // TODO: remove when possible
        public Dictionary <Tuple <TNode, TNode>, IRoomDescription> GetNodesToCorridorMapping <TNode>(ILevelDescription <TNode> mapDescription)
        {
            var mapping = new Dictionary <Tuple <TNode, TNode>, IRoomDescription>();

            var graph = mapDescription.GetGraph();

            foreach (var room in graph.Vertices)
            {
                var roomDescription = mapDescription.GetRoomDescription(room);

                if (roomDescription.IsCorridor)
                {
                    var neighbors = graph.GetNeighbours(room).ToList();
                    mapping.Add(new Tuple <TNode, TNode>(neighbors[0], neighbors[1]), roomDescription);
                    mapping.Add(new Tuple <TNode, TNode>(neighbors[1], neighbors[0]), roomDescription);
                }
            }

            return(mapping);
        }
 public LevelDescriptionMapping(ILevelDescription <TNode> levelDescription)
 {
     this.levelDescription = levelDescription;
     roomDescriptions      = new IRoomDescription[levelDescription.GetGraph().VerticesCount];
     DoMapping();
 }