Terraria.Liquid.QuickWater C# (CSharp) Méthode

QuickWater() public static méthode

public static QuickWater ( int verbose, int minY = -1, int maxY = -1 ) : double
verbose int
minY int
maxY int
Résultat double
        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;
        }