package dev.llan.model.board.generation; import dev.llan.model.board.Connection; import dev.llan.model.board.Point; import java.util.List; public record RoomConnection(Room to, Room from) { public static RoomConnection getMinimalDistance(List added, List toAdd) { int minFromIndex = 0; int minToIndex = 0; double minDistance = getMinHallwayDistance(added.get(minFromIndex), toAdd.get(minToIndex)); for(int i = 0; i < added.size(); i++) { for(int j = 0; j < toAdd.size(); j++) { double dist = getMinHallwayDistance(added.get(i), toAdd.get(j)); if(dist < minDistance) { minDistance = dist; minFromIndex = i; minToIndex = j; } } } return new RoomConnection(toAdd.get(minToIndex), added.get(minFromIndex)); } private static double getMinHallwayDistance(Room to, Room from) { List toPoints = to.getConnectionPoints(); List fromPoints = from.getConnectionPoints(); Connection connection = Connection.getClosestPair(fromPoints, toPoints); Point toPoint = connection.getTo().point(); Point fromPoint = connection.getFrom().point(); return Point.getDistance(toPoint, fromPoint); } @Override public String toString() { final StringBuilder sb = new StringBuilder("RoomConnection{"); sb.append("to=").append(to); sb.append(", from=").append(from); sb.append('}'); return sb.toString(); } }