Browse Source

Cleanup GetSizeForThemeRoom

pull/4997/head
Anders Jenbo 4 years ago
parent
commit
8d32782b12
  1. 64
      Source/levels/gendung.cpp

64
Source/levels/gendung.cpp

@ -102,58 +102,32 @@ std::optional<Size> GetSizeForThemeRoom(int floor, Point origin, int minSize, in
return {};
}
bool yFlag = true;
bool xFlag = true;
int xCount = 0;
int yCount = 0;
int maxWidth = std::min(maxSize, DMAXX - origin.x);
int maxHeight = std::min(maxSize, DMAXY - origin.y);
int xArray[20] = {};
int yArray[20] = {};
for (int ii = 0; ii < maxSize; ii++) {
if (xFlag && origin.y + ii < DMAXY) {
for (int xx = origin.x; xx < origin.x + maxSize && xx < DMAXX; xx++) {
if (dungeon[xx][origin.y + ii] != floor) {
if (xx >= /* origin.x + */ minSize) {
break;
}
xFlag = false;
} else {
xCount++;
}
}
if (xFlag) {
xArray[ii] = xCount;
xCount = 0;
}
}
if (yFlag && origin.x + ii < DMAXX) {
for (int yy = origin.y; yy < origin.y + maxSize && yy < DMAXY; yy++) {
if (dungeon[origin.x + ii][yy] != floor) {
if (yy >= /* origin.y + */ minSize) {
break;
}
yFlag = false;
} else {
yCount++;
}
}
if (yFlag) {
yArray[ii] = yCount;
yCount = 0;
for (int x = 0; x < maxWidth; x++) {
for (int y = origin.y; y < origin.y + maxHeight; y++) {
if (dungeon[origin.x + x][y] != floor) {
if (yArray[x] < minSize && x < minSize)
return {};
break;
}
}
}
for (int ii = 0; ii < minSize; ii++) {
if (xArray[ii] < minSize || yArray[ii] < minSize) {
return {};
yArray[x]++;
}
}
for (int ii = 0; ii < minSize; ii++) {
if (xArray[ii] < minSize || yArray[ii] < minSize) {
return {};
int xArray[20] = {};
for (int y = 0; y < maxHeight; y++) {
for (int x = origin.x; x < origin.x + maxWidth; x++) {
if (dungeon[x][origin.y + y] != floor) {
if (xArray[y] < minSize && y < minSize)
return {};
break;
}
xArray[y]++;
}
}

Loading…
Cancel
Save