Clean repo for open source release
Remove build artifacts, dev tool configs, unused dependencies, and third-party source dumps. Add proper README, update .gitignore, clean up Makefile.
This commit is contained in:
94
src/main/java/com/tiedup/remake/worldgen/RoomLayout.java
Normal file
94
src/main/java/com/tiedup/remake/worldgen/RoomLayout.java
Normal file
@@ -0,0 +1,94 @@
|
||||
package com.tiedup.remake.worldgen;
|
||||
|
||||
enum RoomLayout {
|
||||
SQUARE {
|
||||
@Override
|
||||
public boolean isInShape(int rx, int rz) {
|
||||
return rx >= 0 && rx <= 12 && rz >= 0 && rz <= 12;
|
||||
}
|
||||
},
|
||||
OCTAGONAL {
|
||||
@Override
|
||||
public boolean isInShape(int rx, int rz) {
|
||||
if (rx < 0 || rx > 12 || rz < 0 || rz > 12) return false;
|
||||
if (rx + rz <= 2) return false;
|
||||
if ((12 - rx) + rz <= 2) return false;
|
||||
if (rx + (12 - rz) <= 2) return false;
|
||||
if ((12 - rx) + (12 - rz) <= 2) return false;
|
||||
return true;
|
||||
}
|
||||
},
|
||||
CIRCULAR {
|
||||
@Override
|
||||
public boolean isInShape(int rx, int rz) {
|
||||
if (rx < 0 || rx > 12 || rz < 0 || rz > 12) return false;
|
||||
int dx = rx - 6;
|
||||
int dz = rz - 6;
|
||||
return dx * dx + dz * dz <= 36;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[][] innerCorners() {
|
||||
return new int[][] { { 6, 1 }, { 6, 11 }, { 1, 6 }, { 11, 6 } };
|
||||
}
|
||||
},
|
||||
CROSS {
|
||||
@Override
|
||||
public boolean isInShape(int rx, int rz) {
|
||||
if (rx < 0 || rx > 12 || rz < 0 || rz > 12) return false;
|
||||
return (rx >= 3 && rx <= 9) || (rz >= 3 && rz <= 9);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[][] innerCorners() {
|
||||
return new int[][] { { 3, 3 }, { 3, 9 }, { 9, 3 }, { 9, 9 } };
|
||||
}
|
||||
};
|
||||
|
||||
public abstract boolean isInShape(int rx, int rz);
|
||||
|
||||
public boolean isWall(int rx, int rz) {
|
||||
if (!isInShape(rx, rz)) return false;
|
||||
return (
|
||||
!isInShape(rx - 1, rz) ||
|
||||
!isInShape(rx + 1, rz) ||
|
||||
!isInShape(rx, rz - 1) ||
|
||||
!isInShape(rx, rz + 1)
|
||||
);
|
||||
}
|
||||
|
||||
/** Is this interior position adjacent to a wall? */
|
||||
public boolean isWallAdjacent(int rx, int rz) {
|
||||
if (!isInShape(rx, rz) || isWall(rx, rz)) return false;
|
||||
return (
|
||||
isWall(rx - 1, rz) ||
|
||||
isWall(rx + 1, rz) ||
|
||||
isWall(rx, rz - 1) ||
|
||||
isWall(rx, rz + 1)
|
||||
);
|
||||
}
|
||||
|
||||
/** Returns the 4 innermost corner positions for this layout. */
|
||||
public int[][] innerCorners() {
|
||||
return switch (this) {
|
||||
case SQUARE -> new int[][] {
|
||||
{ 1, 1 },
|
||||
{ 1, 11 },
|
||||
{ 11, 1 },
|
||||
{ 11, 11 },
|
||||
};
|
||||
case OCTAGONAL -> new int[][] {
|
||||
{ 3, 1 },
|
||||
{ 1, 9 },
|
||||
{ 11, 3 },
|
||||
{ 9, 11 },
|
||||
};
|
||||
default -> new int[][] {
|
||||
{ 1, 1 },
|
||||
{ 1, 11 },
|
||||
{ 11, 1 },
|
||||
{ 11, 11 },
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user