public static unsafe bool Slice() { if (m_Server == null) { Thread.Sleep(1); return(true); } if ((m_LastNetworkActivity.Elapsed && m_Server.Poll(1, SelectMode.SelectRead)) && (m_Server.Available == 0)) { Debug.Trace("Disconnected"); if (!m_SoftDisconnect) { Gumps.MessageBoxOk("Connection lost", true, new OnClick(Engine.DestroyDialogShowAcctLogin_OnClick)); } Disconnect(); Cursor.Hourglass = false; m_SoftDisconnect = false; Engine.amMoving = false; return(true); } if (m_Server.Available > 0) { if (m_Buffer == null) { m_Buffer = new byte[0x10000]; } int num = Read(m_Buffer, m_CurrFilled); if (num == -1) { return(true); } m_CurrFilled += num; int currFilled = m_CurrFilled; int index = 0; while (index < currFilled) { byte num4 = m_Buffer[index]; PacketHandler ph = PacketHandlers.m_Handlers[num4]; if (ph == null) { PacketReader.Initialize(m_Buffer, index, m_CurrFilled - index, true, num4, "Unknown").Trace(); m_CurrFilled = 0; return(true); } int length = ph.Length; if (length == -1) { if ((currFilled - index) < 3) { break; } length = m_Buffer[index + 2] | (m_Buffer[index + 1] << 8); } if ((currFilled - index) < length) { break; } if (OnRecv != null) { OnRecv(length); } PacketReader pvSrc = PacketReader.Initialize(m_Buffer, index, length, ph.Length != -1, num4, ph.Name); ph.Handle(pvSrc); m_LastNetworkActivity.Reset(); if (OnPacketHandle != null) { OnPacketHandle(ph); } index += length; if (m_CurrFilled != currFilled) { return(true); } } m_CurrFilled -= index; if (m_CurrFilled > 0) { fixed(byte *numRef = m_Buffer) { byte *numPtr = numRef; byte *numPtr2 = numRef + index; byte *numPtr3 = numPtr + m_CurrFilled; while (numPtr < numPtr3) { *(numPtr++) = *(numPtr2++); } } } } return(true); }