Completed Second Step of Maze Generation
Completed the second step of maze generation. In this step, a graph is built that describes which rooms can be connected to each other by doorways. A maze is created by removing nodes (rooms) from the graph. The algorithm is incomplete, but it already produces interesting mazes comparable to DD's hand-made mazes. A few details for the future: 1. Doorways are currently carved into walls at default locations. This is just for testing and placement should be improved later. Some doorways should be removed and redundant doorways should be possible. 2. The size of a section should be assessed and the section should be discarded if it has too few rooms. 3. An NPE occurs every so often when a maze is generated. It's possible that it happens because of removing a node from the graph that is coincidentally the current node for LinkedList's iterator. The solution would be to add nodes to a list and defer removals until after the iteration is done.
This commit is contained in:
@@ -4,35 +4,21 @@ import StevenDimDoors.mod_pocketDim.Point3D;
|
||||
|
||||
public class DoorwayData
|
||||
{
|
||||
public final char X_AXIS = 'X';
|
||||
public final char Y_AXIS = 'Y';
|
||||
public final char Z_AXIS = 'Z';
|
||||
public static final char X_AXIS = 'X';
|
||||
public static final char Y_AXIS = 'Y';
|
||||
public static final char Z_AXIS = 'Z';
|
||||
|
||||
private RoomNode head;
|
||||
private RoomNode tail;
|
||||
private Point3D minCorner;
|
||||
private Point3D maxCorner;
|
||||
private char axis;
|
||||
|
||||
public DoorwayData(RoomNode head, RoomNode tail, Point3D minCorner, Point3D maxCorner, char axis)
|
||||
public DoorwayData(Point3D minCorner, Point3D maxCorner, char axis)
|
||||
{
|
||||
this.head = head;
|
||||
this.tail = tail;
|
||||
this.minCorner = minCorner;
|
||||
this.maxCorner = maxCorner;
|
||||
this.axis = axis;
|
||||
}
|
||||
|
||||
public RoomNode head()
|
||||
{
|
||||
return head;
|
||||
}
|
||||
|
||||
public RoomNode tail()
|
||||
{
|
||||
return tail;
|
||||
}
|
||||
|
||||
public Point3D minCorner()
|
||||
{
|
||||
return minCorner;
|
||||
|
||||
Reference in New Issue
Block a user