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

UpdateLiquid() public static méthode

public static UpdateLiquid ( ) : void
Résultat void
        public static void UpdateLiquid()
        {
            int num1 = Main.netMode;
            if (!WorldGen.gen)
            {
                if (!Liquid.panicMode)
                {
                    if (Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > 4000)
                    {
                        ++Liquid.panicCounter;
                        if (Liquid.panicCounter > 1800 || Liquid.numLiquid + LiquidBuffer.numLiquidBuffer > 13500)
                            Liquid.StartPanic();
                    }
                    else
                        Liquid.panicCounter = 0;
                }
                if (Liquid.panicMode)
                {
                    int num2 = 0;
                    while (Liquid.panicY >= 3 && num2 < 5)
                    {
                        ++num2;
                        Liquid.QuickWater(0, Liquid.panicY, Liquid.panicY);
                        --Liquid.panicY;
                        if (Liquid.panicY < 3)
                        {
                            Console.WriteLine("Water has been settled.");
                            Liquid.panicCounter = 0;
                            Liquid.panicMode = false;
                            WorldGen.WaterCheck();
                            if (Main.netMode == 2)
                            {
                                for (int index1 = 0; index1 < (int)byte.MaxValue; ++index1)
                                {
                                    for (int index2 = 0; index2 < Main.maxSectionsX; ++index2)
                                    {
                                        for (int index3 = 0; index3 < Main.maxSectionsY; ++index3)
                                            Netplay.Clients[index1].TileSections[index2, index3] = false;
                                    }
                                }
                            }
                        }
                    }
                    return;
                }
            }
            Liquid.quickFall = Liquid.quickSettle || Liquid.numLiquid > 2000;
            ++Liquid.wetCounter;
            int num3 = Liquid.maxLiquid / Liquid.cycles;
            int num4 = num3 * (Liquid.wetCounter - 1);
            int num5 = num3 * Liquid.wetCounter;
            if (Liquid.wetCounter == Liquid.cycles)
                num5 = Liquid.numLiquid;
            if (num5 > Liquid.numLiquid)
            {
                num5 = Liquid.numLiquid;
                int num2 = Main.netMode;
                Liquid.wetCounter = Liquid.cycles;
            }
            if (Liquid.quickFall)
            {
                for (int index = num4; index < num5; ++index)
                {
                    Main.liquid[index].delay = 10;
                    Main.liquid[index].Update();
                    Main.tile[Main.liquid[index].x, Main.liquid[index].y].skipLiquid(false);
                }
            }
            else
            {
                for (int index = num4; index < num5; ++index)
                {
                    if (!Main.tile[Main.liquid[index].x, Main.liquid[index].y].skipLiquid())
                        Main.liquid[index].Update();
                    else
                        Main.tile[Main.liquid[index].x, Main.liquid[index].y].skipLiquid(false);
                }
            }
            if (Liquid.wetCounter >= Liquid.cycles)
            {
                Liquid.wetCounter = 0;
                for (int l = Liquid.numLiquid - 1; l >= 0; --l)
                {
                    if (Main.liquid[l].kill > 4)
                        Liquid.DelWater(l);
                }
                int num2 = Liquid.maxLiquid - (Liquid.maxLiquid - Liquid.numLiquid);
                if (num2 > LiquidBuffer.numLiquidBuffer)
                    num2 = LiquidBuffer.numLiquidBuffer;
                for (int index = 0; index < num2; ++index)
                {
                    Main.tile[Main.liquidBuffer[0].x, Main.liquidBuffer[0].y].checkingLiquid(false);
                    Liquid.AddWater(Main.liquidBuffer[0].x, Main.liquidBuffer[0].y);
                    LiquidBuffer.DelBuffer(0);
                }
                if (Liquid.numLiquid > 0 && Liquid.numLiquid > Liquid.stuckAmount - 50 && Liquid.numLiquid < Liquid.stuckAmount + 50)
                {
                    ++Liquid.stuckCount;
                    if (Liquid.stuckCount >= 10000)
                    {
                        Liquid.stuck = true;
                        for (int l = Liquid.numLiquid - 1; l >= 0; --l)
                            Liquid.DelWater(l);
                        Liquid.stuck = false;
                        Liquid.stuckCount = 0;
                    }
                }
                else
                {
                    Liquid.stuckCount = 0;
                    Liquid.stuckAmount = Liquid.numLiquid;
                }
            }
            if (Main.netMode != 2 || Liquid._netChangeSet.Count <= 0)
                return;
            Utils.Swap<HashSet<int>>(ref Liquid._netChangeSet, ref Liquid._swapNetChangeSet);
            NetManager.Instance.Broadcast(NetLiquidModule.Serialize(Liquid._swapNetChangeSet), -1);
            Liquid._swapNetChangeSet.Clear();
        }