예제 #1
0
 public void RegistHandle(UInt32 mID, WalkHandleMgr.Handle hHandle)
 {
     if (m_Parent != null)
     {
         m_Parent.RegistHandle(mID, hHandle);
     }
 }
예제 #2
0
    public void ReceiveByte(byte [] bData, int nLength)
    {
        if (bData != null && nLength > 0)
        {
            //GameLibrary.isSendPackage = false;
            //Debug.Log( "收到服务器回复消息更改状态     " + GameLibrary.isSendPackage );
            //if ( Application.loadedLevelName == "UI_MajorCity" )
            //{
            //    Control.HideGUI( GameLibrary.UIWaitForSever );
            //}
            if ((m_nbyteDataLength + nLength) > DataDefine.MAX_PACKET_SIZE)
            {
                Debug.Log("error! the packet is too large,more than " + DataDefine.MAX_PACKET_SIZE);
                Debug.Log("m_nbyteDataLength:" + m_nbyteDataLength);
                Debug.Log("nReceiveLen:" + nLength);
                //Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE);
                //m_nbyteDataLength = 0;
                Debug.Log("ReadPacket's length too large! ");

                return;
            }

            Array.Copy(bData, 0, m_byteDataList, m_nbyteDataLength, nLength);
            m_nbyteDataLength += nLength;

            while (true)
            {
                if (m_nbyteDataLength < m_sPacketMinLength)
                {
                    Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE);
                    m_nbyteDataLength = 0;
                    Debug.Log("ReadPacket's length ");
                    return;
                }

                //				Debug.Log("m_nbyteDataLength:"+m_nbyteDataLength);
                //				Debug.Log("nReceiveLen:"+nLength);
                //handle
                CReadPacket readPacket = new CReadPacket(m_byteDataList);
                if (m_nbyteDataLength >= readPacket.GetPacketLen())
                {
                    Debug.Log("Receive Handle msgid:" + readPacket.GetMessageID() + "lens:" + readPacket.GetPacketLen());
                    WalkHandleMgr.Handle hHandle = GetHandle(readPacket.GetMessageID());
                    Debug.Log(hHandle);
                    if (hHandle != null)
                    {
                        hHandle(readPacket);
                    }
                    else
                    {
                        Debug.Log("No handle attach:" + readPacket.GetMessageID());
                    }
                    //clear
                    int len     = readPacket.GetPacketLen();
                    int nNewLen = m_nbyteDataLength - readPacket.GetPacketLen();
                    if (nNewLen > 0)
                    {
                        byte [] bTempData = new byte [nNewLen];
                        Array.Copy(m_byteDataList, readPacket.GetPacketLen(), bTempData, 0, nNewLen);
                        Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE);
                        Array.Copy(bTempData, 0, m_byteDataList, 0, nNewLen);
                    }
                    else
                    {
                        Array.Clear(m_byteDataList, 0, DataDefine.MAX_PACKET_SIZE);
                    }
                    m_nbyteDataLength = nNewLen;
                }
                else
                {
                    break;
                }
            }
        }
    }