Browse Source

Merge pull request #2555 from bcko/2348_bcko_refactor_FindTransparencyValues_2

pull/2562/head
BC Ko 5 years ago committed by GitHub
parent
commit
c85d3f4b21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      Source/drlg_l1.cpp
  2. 19
      Source/drlg_l2.cpp
  3. 19
      Source/drlg_l4.cpp
  4. 103
      Source/gendung.cpp
  5. 2
      Source/gendung.h

19
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;

19
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);

19
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);

103
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

2
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

Loading…
Cancel
Save