private void CreateOneRoomNodes(ISectorMap map, HashSet <string> edgeHash, Room room, Size cellSize) { var interiorObjects = _randomSource.RollInteriorObjects(room.Width, room.Height); for (var x = 0; x < room.Width; x++) { for (var y = 0; y < room.Height; y++) { var nodeX = x + room.PositionX * cellSize.Width; var nodeY = y + room.PositionY * cellSize.Height; var isObstacle = false; var interiorObjectMetas = interiorObjects .SingleOrDefault(o => o.Coords.CompsEqual(x, y)); if (interiorObjectMetas != null) { //TODO Сделать так, чтобы укрытия не генерировались на узлах с выходами // Как вариант - если выбираем узел, как выход, то снимаем флаг укрытия. // Вообще, нужно поискать алгоритмы, которые бы расставляли укрытия и выходы, оставляя комнату проходимой. isObstacle = true; } var node = new HexNode(nodeX, nodeY, isObstacle); room.Nodes.Add(node); map.AddNode(node); RoomHelper.AddAllNeighborToMap(map, edgeHash, room, node); } } CreateTransitions(map, room); }
private void CreateOneRoomNodes(ISectorMap map, HashSet <string> edgeHash, Room room, Size cellSize) { for (var x = 0; x < room.Width; x++) { for (var y = 0; y < room.Height; y++) { var nodeX = x + (room.PositionX * cellSize.Width); var nodeY = y + (room.PositionY * cellSize.Height); var node = new HexNode(nodeX, nodeY); room.Nodes.Add(node); map.AddNode(node); RoomHelper.AddAllNeighborToMap(map, edgeHash, room, node); } } CreateTransitions(map, room); }