refactor 3 versions of FindTransparencyValues in: drlg_l1.cpp, drlg_l2.cpp, drlg_l4.cpp (#2554)
This commit is contained in:
parent
703e5a3f14
commit
bcd60ea0b4
5 changed files with 58 additions and 150 deletions
|
|
@ -1952,62 +1952,15 @@ void FillChambers()
|
|||
}
|
||||
}
|
||||
|
||||
void FindTransparencyValues(int i, int j, int x, int y, int d)
|
||||
{
|
||||
if (dTransVal[x][y] != 0 || dungeon[i][j] != 13) {
|
||||
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);
|
||||
FindTransparencyValues(i - 1, j, x - 2, y, 2);
|
||||
FindTransparencyValues(i, j + 1, x, y + 2, 3);
|
||||
FindTransparencyValues(i, j - 1, x, y - 2, 4);
|
||||
FindTransparencyValues(i - 1, j - 1, x - 2, y - 2, 5);
|
||||
FindTransparencyValues(i + 1, j - 1, x + 2, y - 2, 6);
|
||||
FindTransparencyValues(i - 1, j + 1, x - 2, y + 2, 7);
|
||||
FindTransparencyValues(i + 1, j + 1, x + 2, y + 2, 8);
|
||||
}
|
||||
|
||||
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] == 13 && dTransVal[xx][yy] == 0) {
|
||||
FindTransparencyValues(i, j, xx, yy, 0);
|
||||
if (dungeon[i][j] == tileID && dTransVal[xx][yy] == 0) {
|
||||
FindTransparencyValues(tileID, i, j, xx, yy, 0);
|
||||
TransVal++;
|
||||
}
|
||||
xx += 2;
|
||||
|
|
|
|||
|
|
@ -2762,62 +2762,15 @@ bool CreateDungeon()
|
|||
return true;
|
||||
}
|
||||
|
||||
void FindTransparencyValues(int i, int j, int x, int y, int d)
|
||||
{
|
||||
if (dTransVal[x][y] != 0 || dungeon[i][j] != 3) {
|
||||
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);
|
||||
FindTransparencyValues(i - 1, j, x - 2, y, 2);
|
||||
FindTransparencyValues(i, j + 1, x, y + 2, 3);
|
||||
FindTransparencyValues(i, j - 1, x, y - 2, 4);
|
||||
FindTransparencyValues(i - 1, j - 1, x - 2, y - 2, 5);
|
||||
FindTransparencyValues(i + 1, j - 1, x + 2, y - 2, 6);
|
||||
FindTransparencyValues(i - 1, j + 1, x - 2, y + 2, 7);
|
||||
FindTransparencyValues(i + 1, j + 1, x + 2, y + 2, 8);
|
||||
}
|
||||
|
||||
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] == 3 && dTransVal[xx][yy] == 0) {
|
||||
FindTransparencyValues(i, j, xx, yy, 0);
|
||||
if (dungeon[i][j] == tileID && dTransVal[xx][yy] == 0) {
|
||||
FindTransparencyValues(tileID, i, j, xx, yy, 0);
|
||||
TransVal++;
|
||||
}
|
||||
xx += 2;
|
||||
|
|
|
|||
|
|
@ -1190,62 +1190,15 @@ void LoadDiabQuads(bool preflag)
|
|||
#pragma GCC optimize("O0")
|
||||
#endif
|
||||
|
||||
void FindTransparencyValues(int i, int j, int x, int y, int d)
|
||||
{
|
||||
if (dTransVal[x][y] != 0 || dungeon[i][j] != 6) {
|
||||
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);
|
||||
FindTransparencyValues(i - 1, j, x - 2, y, 2);
|
||||
FindTransparencyValues(i, j + 1, x, y + 2, 3);
|
||||
FindTransparencyValues(i, j - 1, x, y - 2, 4);
|
||||
FindTransparencyValues(i - 1, j - 1, x - 2, y - 2, 5);
|
||||
FindTransparencyValues(i + 1, j - 1, x + 2, y - 2, 6);
|
||||
FindTransparencyValues(i - 1, j + 1, x - 2, y + 2, 7);
|
||||
FindTransparencyValues(i + 1, j + 1, x + 2, y + 2, 8);
|
||||
}
|
||||
|
||||
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] == 6 && dTransVal[xx][yy] == 0) {
|
||||
FindTransparencyValues(i, j, xx, yy, 0);
|
||||
if (dungeon[i][j] == tileID && dTransVal[xx][yy] == 0) {
|
||||
FindTransparencyValues(tileID, i, j, xx, yy, 0);
|
||||
TransVal++;
|
||||
}
|
||||
xx += 2;
|
||||
|
|
|
|||
|
|
@ -549,4 +549,52 @@ void InitLevels()
|
|||
setlevel = false;
|
||||
}
|
||||
|
||||
void FindTransparencyValues(uint8_t tileID, int i, int j, int x, int y, int d)
|
||||
{
|
||||
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;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -247,5 +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);
|
||||
|
||||
} // namespace devilution
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue