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)); } }
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(); }