DelBuffer() public static method

public static DelBuffer ( int l ) : void
l int
return void
        public static void UpdateLiquid()
        {
            int netMode = Main.netMode;
            int num8    = 2;

            if (!WorldGen.gen)
            {
                if (!panicMode)
                {
                    if (numLiquid + LiquidBuffer.numLiquidBuffer > 4000)
                    {
                        panicCounter++;
                        if (panicCounter > 1800 || numLiquid + LiquidBuffer.numLiquidBuffer > 13500)
                        {
                            StartPanic();
                        }
                    }
                    else
                    {
                        panicCounter = 0;
                    }
                }
                if (panicMode)
                {
                    int num = 0;
                    while (panicY >= 3 && num < 5)
                    {
                        num++;
                        QuickWater(0, panicY, panicY);
                        panicY--;
                        if (panicY >= 3)
                        {
                            continue;
                        }
                        Console.WriteLine(Language.GetTextValue("Misc.WaterSettled"));
                        panicCounter = 0;
                        panicMode    = false;
                        WorldGen.WaterCheck();
                        if (Main.netMode != 2)
                        {
                            continue;
                        }
                        for (int i = 0; i < 16; i++)
                        {
                            for (int j = 0; j < Main.maxSectionsX; j++)
                            {
                                for (int k = 0; k < Main.maxSectionsY; k++)
                                {
                                    Netplay.Clients[i].TileSections[j, k] = false;
                                }
                            }
                        }
                    }
                    return;
                }
            }
            if (quickSettle || numLiquid > 2000)
            {
                quickFall = true;
            }
            else
            {
                quickFall = false;
            }
            wetCounter++;
            int num2 = maxLiquid / cycles;
            int num3 = num2 * (wetCounter - 1);
            int num4 = num2 * wetCounter;

            if (wetCounter == cycles)
            {
                num4 = numLiquid;
            }
            if (num4 > numLiquid)
            {
                num4 = numLiquid;
                int netMode2 = Main.netMode;
                wetCounter = cycles;
            }
            if (quickFall)
            {
                for (int l = num3; l < num4; l++)
                {
                    Main.liquid[l].delay = 10;
                    Main.liquid[l].Update();
                    Main.tile[Main.liquid[l].x, Main.liquid[l].y].skipLiquid(false);
                }
            }
            else
            {
                for (int m = num3; m < num4; m++)
                {
                    if (!Main.tile[Main.liquid[m].x, Main.liquid[m].y].skipLiquid())
                    {
                        Main.liquid[m].Update();
                    }
                    else
                    {
                        Main.tile[Main.liquid[m].x, Main.liquid[m].y].skipLiquid(false);
                    }
                }
            }
            if (wetCounter >= cycles)
            {
                wetCounter = 0;
                for (int num5 = numLiquid - 1; num5 >= 0; num5--)
                {
                    if (Main.liquid[num5].kill > 4)
                    {
                        DelWater(num5);
                    }
                }
                int num6 = maxLiquid - (maxLiquid - numLiquid);
                if (num6 > LiquidBuffer.numLiquidBuffer)
                {
                    num6 = LiquidBuffer.numLiquidBuffer;
                }
                for (int n = 0; n < num6; n++)
                {
                    Main.tile[Main.liquidBuffer[0].x, Main.liquidBuffer[0].y].checkingLiquid(false);
                    AddWater(Main.liquidBuffer[0].x, Main.liquidBuffer[0].y);
                    LiquidBuffer.DelBuffer(0);
                }
                if (numLiquid > 0 && numLiquid > stuckAmount - 50 && numLiquid < stuckAmount + 50)
                {
                    stuckCount++;
                    if (stuckCount >= 10000)
                    {
                        stuck = true;
                        for (int num7 = numLiquid - 1; num7 >= 0; num7--)
                        {
                            DelWater(num7);
                        }
                        stuck      = false;
                        stuckCount = 0;
                    }
                }
                else
                {
                    stuckCount  = 0;
                    stuckAmount = numLiquid;
                }
            }
            if (Main.netMode == 2 && _netChangeSet.Count > 0)
            {
                Utils.Swap(ref _netChangeSet, ref _swapNetChangeSet);
                NetManager.Instance.Broadcast(NetLiquidModule.Serialize(_swapNetChangeSet));
                _swapNetChangeSet.Clear();
            }
        }
Exemplo n.º 2
0
        public static void UpdateLiquid()
        {
            if (Main.netMode == 2)
            {
                cycles    = 0x19;
                maxLiquid = 0x1388;
            }
            if (!WorldGen.gen)
            {
                if (!panicMode)
                {
                    if ((Liquid.numLiquid + LiquidBuffer.numLiquidBuffer) > 0xfa0)
                    {
                        panicCounter++;
                        if ((panicCounter > 0x708) || ((Liquid.numLiquid + LiquidBuffer.numLiquidBuffer) > 0x34bc))
                        {
                            WorldGen.waterLine           = Main.maxTilesY;
                            Liquid.numLiquid             = 0;
                            LiquidBuffer.numLiquidBuffer = 0;
                            panicCounter = 0;
                            panicMode    = true;
                            panicY       = Main.maxTilesY - 3;
                        }
                    }
                    else
                    {
                        panicCounter = 0;
                    }
                }
                if (panicMode)
                {
                    int num = 0;
                    while ((panicY >= 3) && (num < 5))
                    {
                        num++;
                        QuickWater(0, panicY, panicY);
                        panicY--;
                        if (panicY < 3)
                        {
                            panicCounter = 0;
                            panicMode    = false;
                            WorldGen.WaterCheck();
                            if (Main.netMode == 2)
                            {
                                for (int i = 0; i < 8; i++)
                                {
                                    for (int j = 0; j < Main.maxSectionsX; j++)
                                    {
                                        for (int k = 0; k < Main.maxSectionsY; k++)
                                        {
                                            Netplay.serverSock[i].tileSection[j, k] = false;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    return;
                }
            }
            if (quickSettle || (Liquid.numLiquid > 0x7d0))
            {
                quickFall = true;
            }
            else
            {
                quickFall = false;
            }
            wetCounter++;
            int num5      = maxLiquid / cycles;
            int num6      = num5 * (wetCounter - 1);
            int numLiquid = num5 * wetCounter;

            if (wetCounter == cycles)
            {
                numLiquid = Liquid.numLiquid;
            }
            if (numLiquid > Liquid.numLiquid)
            {
                numLiquid = Liquid.numLiquid;
                int netMode = Main.netMode;
                wetCounter = cycles;
            }
            if (quickFall)
            {
                for (int m = num6; m < numLiquid; m++)
                {
                    Main.liquid[m].delay = 10;
                    Main.liquid[m].Update();
                    Main.tile[Main.liquid[m].x, Main.liquid[m].y].skipLiquid = false;
                }
            }
            else
            {
                for (int n = num6; n < numLiquid; n++)
                {
                    if (!Main.tile[Main.liquid[n].x, Main.liquid[n].y].skipLiquid)
                    {
                        Main.liquid[n].Update();
                    }
                    else
                    {
                        Main.tile[Main.liquid[n].x, Main.liquid[n].y].skipLiquid = false;
                    }
                }
            }
            if (wetCounter >= cycles)
            {
                wetCounter = 0;
                for (int num10 = Liquid.numLiquid - 1; num10 >= 0; num10--)
                {
                    if (Main.liquid[num10].kill > 3)
                    {
                        DelWater(num10);
                    }
                }
                int numLiquidBuffer = maxLiquid - (maxLiquid - Liquid.numLiquid);
                if (numLiquidBuffer > LiquidBuffer.numLiquidBuffer)
                {
                    numLiquidBuffer = LiquidBuffer.numLiquidBuffer;
                }
                for (int num12 = 0; num12 < numLiquidBuffer; num12++)
                {
                    Main.tile[Main.liquidBuffer[0].x, Main.liquidBuffer[0].y].checkingLiquid = false;
                    AddWater(Main.liquidBuffer[0].x, Main.liquidBuffer[0].y);
                    LiquidBuffer.DelBuffer(0);
                }
                if (((Liquid.numLiquid > 0) && (Liquid.numLiquid > (stuckAmount - 50))) && (Liquid.numLiquid < (stuckAmount + 50)))
                {
                    stuckCount++;
                    if (stuckCount >= 0x2710)
                    {
                        stuck = true;
                        for (int num13 = Liquid.numLiquid - 1; num13 >= 0; num13--)
                        {
                            DelWater(num13);
                        }
                        stuck      = false;
                        stuckCount = 0;
                    }
                }
                else
                {
                    stuckCount  = 0;
                    stuckAmount = Liquid.numLiquid;
                }
            }
        }