mirror of
https://github.com/array-in-a-matrix/brainwine.git
synced 2025-04-02 11:11:58 -04:00
Fixed certain structures generating out of bounds
This commit is contained in:
parent
b2c7b3727a
commit
2269b4eb5f
2 changed files with 5 additions and 4 deletions
|
@ -44,6 +44,9 @@ public class GeneratorContext {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void placePrefab(Prefab prefab, int x, int y) {
|
public void placePrefab(Prefab prefab, int x, int y) {
|
||||||
|
x = Math.max(1, Math.min(x, getWidth() - prefab.getWidth() - 1));
|
||||||
|
y = Math.max(1, Math.min(y, getHeight() - prefab.getHeight() - 3));
|
||||||
|
|
||||||
if(!willPrefabOverlap(prefab, x, y)) {
|
if(!willPrefabOverlap(prefab, x, y)) {
|
||||||
zone.placePrefab(prefab, x, y, random);
|
zone.placePrefab(prefab, x, y, random);
|
||||||
prefabs.put(new BlockPosition(x, y), prefab);
|
prefabs.put(new BlockPosition(x, y), prefab);
|
||||||
|
|
|
@ -33,9 +33,9 @@ public class StructureGenerator implements GeneratorTask {
|
||||||
placeRandomSpawnTower(ctx, (int)(width * 0.8));
|
placeRandomSpawnTower(ctx, (int)(width * 0.8));
|
||||||
|
|
||||||
for(Prefab structure : uniqueStructures) {
|
for(Prefab structure : uniqueStructures) {
|
||||||
int x = ctx.nextInt(width - 2) + 1;
|
int x = ctx.nextInt(width);
|
||||||
int minY = ctx.getZone().getSurface()[x];
|
int minY = ctx.getZone().getSurface()[x];
|
||||||
int y = ctx.nextInt(height - minY - 2) + minY;
|
int y = ctx.nextInt(height - minY) + minY;
|
||||||
ctx.placePrefab(structure, x, y);
|
ctx.placePrefab(structure, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,9 +49,7 @@ public class StructureGenerator implements GeneratorTask {
|
||||||
|
|
||||||
if(ctx.isUnderground(x, y) && ctx.isUnderground(x + prefabWidth, y)) {
|
if(ctx.isUnderground(x, y) && ctx.isUnderground(x + prefabWidth, y)) {
|
||||||
int placeX = x + (prefabWidth >= dungeonRegion.getX() ? x : ctx.nextInt(dungeonRegion.getX() - prefabWidth));
|
int placeX = x + (prefabWidth >= dungeonRegion.getX() ? x : ctx.nextInt(dungeonRegion.getX() - prefabWidth));
|
||||||
placeX = Math.max(1, Math.min(placeX, width - prefabWidth - 1));
|
|
||||||
int placeY = y + (prefabHeight >= dungeonRegion.getY() ? y : ctx.nextInt(dungeonRegion.getY() - prefabHeight));
|
int placeY = y + (prefabHeight >= dungeonRegion.getY() ? y : ctx.nextInt(dungeonRegion.getY() - prefabHeight));
|
||||||
placeY = Math.max(1, Math.min(placeY, height - prefabHeight - 2));
|
|
||||||
ctx.placePrefab(dungeon, placeX, placeY);
|
ctx.placePrefab(dungeon, placeX, placeY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue