diff --git a/Source/drlg_l1.cpp b/Source/drlg_l1.cpp index e06fb8cb0..e8aa73b40 100644 --- a/Source/drlg_l1.cpp +++ b/Source/drlg_l1.cpp @@ -1952,23 +1952,6 @@ void FillChambers() } } -void FloodTransparancyValues() -{ - int yy = 16; - uint8_t tileID = 13; - for (int j = 0; j < DMAXY; j++) { - int xx = 16; - for (int i = 0; i < DMAXX; i++) { - if (dungeon[i][j] == tileID && dTransVal[xx][yy] == 0) { - FindTransparencyValues(tileID, i, j, xx, yy, 0); - TransVal++; - } - xx += 2; - } - yy += 2; - } -} - void FixTransparency() { int yy = 16; @@ -2215,7 +2198,7 @@ void GenerateLevel(lvl_entry entry) FixTilesPatterns(); AddWall(); ClearFlags(); - FloodTransparancyValues(); + FloodTransparencyValues(13); doneflag = true; diff --git a/Source/drlg_l2.cpp b/Source/drlg_l2.cpp index 83906d521..276609c41 100644 --- a/Source/drlg_l2.cpp +++ b/Source/drlg_l2.cpp @@ -2762,23 +2762,6 @@ bool CreateDungeon() return true; } -void FloodTransparancyValues() -{ - int yy = 16; - uint8_t tileID = 3; - for (int j = 0; j < DMAXY; j++) { - int xx = 16; - for (int i = 0; i < DMAXX; i++) { - if (dungeon[i][j] == tileID && dTransVal[xx][yy] == 0) { - FindTransparencyValues(tileID, i, j, xx, yy, 0); - TransVal++; - } - xx += 2; - } - yy += 2; - } -} - void FixTransparency() { int yy = 16; @@ -2932,7 +2915,7 @@ void GenerateLevel(lvl_entry entry) if (setloadflag) { SetRoom(nSx1, nSy1); } - FloodTransparancyValues(); + FloodTransparencyValues(3); FixTransparency(); if (entry == ENTRY_MAIN) { doneflag = PlaceMiniSet(USTAIRS, 1, 1, -1, -1, true); diff --git a/Source/drlg_l4.cpp b/Source/drlg_l4.cpp index aff347fc7..a7471fe3c 100644 --- a/Source/drlg_l4.cpp +++ b/Source/drlg_l4.cpp @@ -1190,23 +1190,6 @@ void LoadDiabQuads(bool preflag) #pragma GCC optimize("O0") #endif -void FloodTransparancyValues() -{ - int yy = 16; - uint8_t tileID = 6; - for (int j = 0; j < DMAXY; j++) { - int xx = 16; - for (int i = 0; i < DMAXX; i++) { - if (dungeon[i][j] == tileID && dTransVal[xx][yy] == 0) { - FindTransparencyValues(tileID, i, j, xx, yy, 0); - TransVal++; - } - xx += 2; - } - yy += 2; - } -} - #if defined(__3DS__) #pragma GCC pop_options #endif @@ -1350,7 +1333,7 @@ void GenerateLevel(lvl_entry entry) } } AddWall(); - FloodTransparancyValues(); + FloodTransparencyValues(6); FixTransparency(); if (setloadflag) { SetSetPiecesRoom(SP4x1, SP4y1); diff --git a/Source/gendung.cpp b/Source/gendung.cpp index 357616a61..b392af35c 100644 --- a/Source/gendung.cpp +++ b/Source/gendung.cpp @@ -269,6 +269,54 @@ void CreateThemeRoom(int themeIndex) } } +void FindTransparencyValues(int i, int j, int x, int y, int d, uint8_t floorID) +{ + if (dTransVal[x][y] != 0 || dungeon[i][j] != floorID) { + if (d == 1) { + dTransVal[x][y] = TransVal; + dTransVal[x][y + 1] = TransVal; + } + if (d == 2) { + dTransVal[x + 1][y] = TransVal; + dTransVal[x + 1][y + 1] = TransVal; + } + if (d == 3) { + dTransVal[x][y] = TransVal; + dTransVal[x + 1][y] = TransVal; + } + if (d == 4) { + dTransVal[x][y + 1] = TransVal; + dTransVal[x + 1][y + 1] = TransVal; + } + if (d == 5) { + dTransVal[x + 1][y + 1] = TransVal; + } + if (d == 6) { + dTransVal[x][y + 1] = TransVal; + } + if (d == 7) { + dTransVal[x + 1][y] = TransVal; + } + if (d == 8) { + dTransVal[x][y] = TransVal; + } + return; + } + + dTransVal[x][y] = TransVal; + dTransVal[x + 1][y] = TransVal; + dTransVal[x][y + 1] = TransVal; + dTransVal[x + 1][y + 1] = TransVal; + FindTransparencyValues(i + 1, j, x + 2, y, 1, floorID); + FindTransparencyValues(i - 1, j, x - 2, y, 2, floorID); + FindTransparencyValues(i, j + 1, x, y + 2, 3, floorID); + FindTransparencyValues(i, j - 1, x, y - 2, 4, floorID); + FindTransparencyValues(i - 1, j - 1, x - 2, y - 2, 5, floorID); + FindTransparencyValues(i + 1, j - 1, x + 2, y - 2, 6, floorID); + FindTransparencyValues(i - 1, j + 1, x - 2, y + 2, 7, floorID); + FindTransparencyValues(i + 1, j + 1, x + 2, y + 2, 8, floorID); +} + } // namespace void FillSolidBlockTbls() @@ -549,52 +597,21 @@ void InitLevels() setlevel = false; } -void FindTransparencyValues(uint8_t tileID, int i, int j, int x, int y, int d) +void FloodTransparencyValues(uint8_t floorID) { - if (dTransVal[x][y] != 0 || dungeon[i][j] != tileID) { - if (d == 1) { - dTransVal[x][y] = TransVal; - dTransVal[x][y + 1] = TransVal; - } - if (d == 2) { - dTransVal[x + 1][y] = TransVal; - dTransVal[x + 1][y + 1] = TransVal; - } - if (d == 3) { - dTransVal[x][y] = TransVal; - dTransVal[x + 1][y] = TransVal; - } - if (d == 4) { - dTransVal[x][y + 1] = TransVal; - dTransVal[x + 1][y + 1] = TransVal; - } - if (d == 5) { - dTransVal[x + 1][y + 1] = TransVal; - } - if (d == 6) { - dTransVal[x][y + 1] = TransVal; - } - if (d == 7) { - dTransVal[x + 1][y] = TransVal; - } - if (d == 8) { - dTransVal[x][y] = TransVal; + int yy = 16; + for (int j = 0; j < DMAXY; j++) { + int xx = 16; + for (int i = 0; i < DMAXX; i++) { + if (dungeon[i][j] == floorID && dTransVal[xx][yy] == 0) { + FindTransparencyValues(i, j, xx, yy, 0, floorID); + TransVal++; + } + xx += 2; } - return; + yy += 2; } - - dTransVal[x][y] = TransVal; - dTransVal[x + 1][y] = TransVal; - dTransVal[x][y + 1] = TransVal; - dTransVal[x + 1][y + 1] = TransVal; - FindTransparencyValues(tileID, i + 1, j, x + 2, y, 1); - FindTransparencyValues(tileID, i - 1, j, x - 2, y, 2); - FindTransparencyValues(tileID, i, j + 1, x, y + 2, 3); - FindTransparencyValues(tileID, i, j - 1, x, y - 2, 4); - FindTransparencyValues(tileID, i - 1, j - 1, x - 2, y - 2, 5); - FindTransparencyValues(tileID, i + 1, j - 1, x + 2, y - 2, 6); - FindTransparencyValues(tileID, i - 1, j + 1, x - 2, y + 2, 7); - FindTransparencyValues(tileID, i + 1, j + 1, x + 2, y + 2, 8); } + } // namespace devilution diff --git a/Source/gendung.h b/Source/gendung.h index f23561f47..3b0d39786 100644 --- a/Source/gendung.h +++ b/Source/gendung.h @@ -247,6 +247,6 @@ void DRLG_LPass3(int lv); void DRLG_Init_Globals(); bool SkipThemeRoom(int x, int y); void InitLevels(); -void FindTransparencyValues(uint8_t tileID, int i, int j, int x, int y, int d); +void FloodTransparencyValues(uint8_t floorID); } // namespace devilution