public static double QuickWater(int verbose = 0, int minY = -1, int maxY = -1)
{
Main.tileSolid[379] = true;
int num1 = 0;
if (minY == -1)
minY = 3;
if (maxY == -1)
maxY = Main.maxTilesY - 3;
for (int index1 = maxY; index1 >= minY; --index1)
{
if (verbose > 0)
{
float num2 = (float)(maxY - index1) / (float)(maxY - minY + 1) / (float)verbose;
Main.statusText = string.Concat(new object[4]
{
(object) Lang.gen[27],
(object) " ",
(object) (int) ((double) num2 * 100.0 + 1.0),
(object) "%"
});
}
else if (verbose < 0)
{
float num2 = (float)(maxY - index1) / (float)(maxY - minY + 1) / (float)-verbose;
Main.statusText = string.Concat(new object[4]
{
(object) Lang.gen[18],
(object) " ",
(object) (int) ((double) num2 * 100.0 + 1.0),
(object) "%"
});
}
for (int index2 = 0; index2 < 2; ++index2)
{
int num2 = 2;
int num3 = Main.maxTilesX - 2;
int num4 = 1;
if (index2 == 1)
{
num2 = Main.maxTilesX - 2;
num3 = 2;
num4 = -1;
}
int index3 = num2;
while (index3 != num3)
{
Tile tile = Main.tile[index3, index1];
if ((int)tile.liquid > 0)
{
int num5 = -num4;
bool flag1 = false;
int x = index3;
int y = index1;
byte num6 = tile.liquidType();
bool flag2 = tile.lava();
bool flag3 = tile.honey();
byte num7 = tile.liquid;
tile.liquid = (byte)0;
bool flag4 = true;
int num8 = 0;
while (flag4 && x > 3 && (x < Main.maxTilesX - 3 && y < Main.maxTilesY - 3))
{
flag4 = false;
while ((int)Main.tile[x, y + 1].liquid == 0 && y < Main.maxTilesY - 5 && (!Main.tile[x, y + 1].nactive() || !Main.tileSolid[(int)Main.tile[x, y + 1].type] || Main.tileSolidTop[(int)Main.tile[x, y + 1].type]))
{
flag1 = true;
num5 = num4;
num8 = 0;
flag4 = true;
++y;
if (y > WorldGen.waterLine && WorldGen.gen && !flag3)
num6 = (byte)1;
}
if ((int)Main.tile[x, y + 1].liquid > 0 && (int)Main.tile[x, y + 1].liquid < (int)byte.MaxValue && (int)Main.tile[x, y + 1].liquidType() == (int)num6)
{
int num9 = (int)byte.MaxValue - (int)Main.tile[x, y + 1].liquid;
if (num9 > (int)num7)
num9 = (int)num7;
Main.tile[x, y + 1].liquid += (byte)num9;
num7 -= (byte)num9;
if ((int)num7 <= 0)
{
++num1;
break;
}
}
if (num8 == 0)
{
if ((int)Main.tile[x + num5, y].liquid == 0 && (!Main.tile[x + num5, y].nactive() || !Main.tileSolid[(int)Main.tile[x + num5, y].type] || Main.tileSolidTop[(int)Main.tile[x + num5, y].type]))
num8 = num5;
else if ((int)Main.tile[x - num5, y].liquid == 0 && (!Main.tile[x - num5, y].nactive() || !Main.tileSolid[(int)Main.tile[x - num5, y].type] || Main.tileSolidTop[(int)Main.tile[x - num5, y].type]))
num8 = -num5;
}
if (num8 != 0 && (int)Main.tile[x + num8, y].liquid == 0 && (!Main.tile[x + num8, y].nactive() || !Main.tileSolid[(int)Main.tile[x + num8, y].type] || Main.tileSolidTop[(int)Main.tile[x + num8, y].type]))
{
flag4 = true;
x += num8;
}
if (flag1 && !flag4)
{
flag1 = false;
flag4 = true;
num5 = -num4;
num8 = 0;
}
}
if (index3 != x && index1 != y)
++num1;
Main.tile[x, y].liquid = num7;
Main.tile[x, y].liquidType((int)num6);
if ((int)Main.tile[x - 1, y].liquid > 0 && Main.tile[x - 1, y].lava() != flag2)
{
if (flag2)
Liquid.LavaCheck(x, y);
else
Liquid.LavaCheck(x - 1, y);
}
else if ((int)Main.tile[x + 1, y].liquid > 0 && Main.tile[x + 1, y].lava() != flag2)
{
if (flag2)
Liquid.LavaCheck(x, y);
else
Liquid.LavaCheck(x + 1, y);
}
else if ((int)Main.tile[x, y - 1].liquid > 0 && Main.tile[x, y - 1].lava() != flag2)
{
if (flag2)
Liquid.LavaCheck(x, y);
else
Liquid.LavaCheck(x, y - 1);
}
else if ((int)Main.tile[x, y + 1].liquid > 0 && Main.tile[x, y + 1].lava() != flag2)
{
if (flag2)
Liquid.LavaCheck(x, y);
else
Liquid.LavaCheck(x, y + 1);
}
if ((int)Main.tile[x, y].liquid > 0)
{
if ((int)Main.tile[x - 1, y].liquid > 0 && Main.tile[x - 1, y].honey() != flag3)
{
if (flag3)
Liquid.HoneyCheck(x, y);
else
Liquid.HoneyCheck(x - 1, y);
}
else if ((int)Main.tile[x + 1, y].liquid > 0 && Main.tile[x + 1, y].honey() != flag3)
{
if (flag3)
Liquid.HoneyCheck(x, y);
else
Liquid.HoneyCheck(x + 1, y);
}
else if ((int)Main.tile[x, y - 1].liquid > 0 && Main.tile[x, y - 1].honey() != flag3)
{
if (flag3)
Liquid.HoneyCheck(x, y);
else
Liquid.HoneyCheck(x, y - 1);
}
else if ((int)Main.tile[x, y + 1].liquid > 0 && Main.tile[x, y + 1].honey() != flag3)
{
if (flag3)
Liquid.HoneyCheck(x, y);
else
Liquid.HoneyCheck(x, y + 1);
}
}
}
index3 += num4;
}
}
}
return (double)num1;
}