Fix some of the flood fill methods

This commit is contained in:
Simon Robertshaw 2012-08-05 16:11:43 +01:00
parent ed270d8dbf
commit 50103aa074

View File

@ -546,16 +546,7 @@ int Simulation::FloodParts(int x, int y, int fullc, int cm, int bm, int flags)
} }
if (bm==-1) if (bm==-1)
{ {
if (c-UI_WALLSTART+UI_ACTUALSTART==WL_ERASE) bm = bmap[y/CELL][x/CELL];
{
bm = bmap[y/CELL][x/CELL];
if (!bm)
return 0;
if (bm==WL_WALL)
cm = 0xFF;
}
else
bm = 0;
} }
if (((pmap[y][x]&0xFF)!=cm || bmap[y/CELL][x/CELL]!=bm )) if (((pmap[y][x]&0xFF)!=cm || bmap[y/CELL][x/CELL]!=bm ))
@ -635,16 +626,7 @@ int Simulation::FloodWalls(int x, int y, int c, int cm, int bm, int flags)
int co = c; int co = c;
if (cm==-1) if (cm==-1)
{ {
if (c==0) cm = pmap[y][x]&0xFF;
{
cm = pmap[y][x]&0xFF;
if (!cm)
return 0;
//if ((flags&BRUSH_REPLACEMODE) && cm!=SLALT)
// return 0;
}
else
cm = 0;
} }
if (bm==-1) if (bm==-1)
{ {
@ -653,8 +635,6 @@ int Simulation::FloodWalls(int x, int y, int c, int cm, int bm, int flags)
bm = bmap[y/CELL][x/CELL]; bm = bmap[y/CELL][x/CELL];
if (!bm) if (!bm)
return 0; return 0;
if (bm==WL_WALL)
cm = 0xFF;
} }
else else
bm = 0; bm = 0;
@ -699,7 +679,7 @@ int Simulation::FloodWalls(int x, int y, int c, int cm, int bm, int flags)
if ((pmap[y+dy][x]&0xFF)==cm && bmap[(y+dy)/CELL][x/CELL]==bm) if ((pmap[y+dy][x]&0xFF)==cm && bmap[(y+dy)/CELL][x/CELL]==bm)
if (!FloodWalls(x, y+dy, c, cm, bm, flags)) if (!FloodWalls(x, y+dy, c, cm, bm, flags))
return 0; return 0;
return 0; return 1;
} }
int Simulation::flood_water(int x, int y, int i, int originaly, int check) int Simulation::flood_water(int x, int y, int i, int originaly, int check)
{ {