Ejemplo n.º 1
0
        //private GamePBSerializer  m_kPBSerializer;
        #endregion

        static MessageHelper()
        {
            m_kCSMsgHead    = new MSG_HEAD();
            m_cSendBuffer   = new byte[65536];
            m_kSendStream   = new MemoryStream(m_cSendBuffer);
            m_kStreamWriter = new BinaryWriter(m_kSendStream, System.Text.Encoding.BigEndianUnicode);
        }
Ejemplo n.º 2
0
        protected virtual void ProcessRecvedMessage()
        {
            byte[]       headData        = new byte[(int)MsgHeadSize.CS_MG_HEAD_SIZE];
            MemoryStream kHeadReadStream = new MemoryStream(headData);
            BinaryReader m_kStreamReader = new BinaryReader(kHeadReadStream, System.Text.Encoding.BigEndianUnicode);

            MSG_HEAD msgHead = new MSG_HEAD();

            while (m_kRecvBuffer.GetBuffValidSize() >= (int)MsgHeadSize.CS_MG_HEAD_SIZE)
            {
                m_kRecvBuffer.GetData(ref headData, (int)MsgHeadSize.CS_MG_HEAD_SIZE);
                kHeadReadStream.Position = 0;
                msgHead.Decode(m_kStreamReader);

                if (msgHead.m_usSize > m_kRecvBuffer.GetBuffValidSize())
                {
                    break;
                }

                if (!m_kRecvBuffer.PopData((int)MsgHeadSize.CS_MG_HEAD_SIZE))
                {
                    break;
                }

                int iMsgBodySize = msgHead.m_usSize - (int)MsgHeadSize.CS_MG_HEAD_SIZE;

                MemoryStream kMsgBodyStream = null;

                if (iMsgBodySize > 0)
                {
                    byte[] bodyBuff = new byte[iMsgBodySize];
                    bool   bResult  = m_kRecvBuffer.PopData(ref bodyBuff, iMsgBodySize);
                    if (bResult == false)
                    {
                        break;
                    }
                    kMsgBodyStream = new MemoryStream(bodyBuff);
                }

                //Debug.Log("Receive Message with type " + msgHead.m_usMsgType);

                if (m_kHandler != null)
                {
                    m_kHandler(msgHead, kMsgBodyStream, iMsgBodySize);
                }
            }

            m_kRecvBuffer.Regroup();
        }
Ejemplo n.º 3
0
        static void HandleReceiveMessage(MSG_HEAD msgHead, MemoryStream kMsgBodyStream, int iMsgBodySize)
        {
            switch (msgHead.m_usMsgType)
            {
            case (ushort)MessageType.MT_E2D_START:
                SyncManager.SyncFrameRate = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0);
                SendSceneID();
                break;

            case (ushort)MessageType.MT_E2D_SYNC_REQUEST:
                SyncManager.FindD2ESyncObjects(FBHelper.DeserializeSyncIDList(kMsgBodyStream.ToArray()));
                MessageHelper.SendShortMessage(m_kConnector, MessageType.MT_D2E_SYNC_RESPOND, (ushort)SyncManager.D2ESyncObjectsCount);
                break;

            case (ushort)MessageType.MT_E2D_START_SYNC:
                SyncManager.IsD2ESyncStart = true;
                break;

            case (ushort)MessageType.MT_E2D_STOP_SYNC:
                SyncManager.IsD2ESyncStart = false;
                break;

            case (ushort)MessageType.MT_E2D_CONTROL_REQUEST:
                SyncManager.FindE2DControlObjects(FBHelper.DeserializeSyncIDList(kMsgBodyStream.ToArray()));
                MessageHelper.SendShortMessage(m_kConnector, MessageType.MT_D2E_CONTROL_RESPOND, (ushort)SyncManager.E2DControlObjectsCount);
                break;

            case (ushort)MessageType.MT_E2D_CONTROL_UPDATE:
                SyncManager.E2DControlUpdate(kMsgBodyStream.ToArray());
                break;

            case (ushort)MessageType.MT_E2D_STOP_CONTROL:
                break;

            case (ushort)MessageType.MT_E2D_UPDATE_SYNC_RATE:
                SyncManager.SyncFrameRate = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0);
                break;

            default:
                Debug.LogError("Wrong Message Type : " + msgHead.m_usMsgType);
                break;
            }
        }
Ejemplo n.º 4
0
        static void HandleReceiveMessage(MSG_HEAD msgHead, MemoryStream kMsgBodyStream, int iMsgBodySize)
        {
            switch (msgHead.m_usMsgType)
            {
            case (ushort)MessageType.MT_D2E_SCENE_ID:
            case (ushort)MessageType.MT_D2E_SCENE_CHANGED:
                int sceneid = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0);
                Debug.Log("Scene ID : " + sceneid);
                SyncManager.SyncSceneID = sceneid;
                break;

            case (ushort)MessageType.MT_D2E_SYNC_RESPOND:
                int syncCount = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0);
                Debug.Log("Sync Object count : " + syncCount);
                if (syncCount > 0)
                {
                    MessageHelper.SendEmptyMessage(m_kConnector, MessageType.MT_E2D_START_SYNC);
                    SyncManager.IsD2ESyncStart = true;
                }
                break;

            case (ushort)MessageType.MT_D2E_SYNC_UPDATE:
                SyncManager.D2ESyncUpdate(kMsgBodyStream.ToArray());
                break;

            case (ushort)MessageType.MT_D2E_CONTROL_RESPOND:
                int controlCount = System.BitConverter.ToInt16(kMsgBodyStream.ToArray(), 0);
                Debug.Log("Contorl Object count : " + controlCount);
                SyncManager.IsE2DSyncStart = controlCount > 0;
                break;

            default:
                Debug.LogError("Wrong Message Type : " + msgHead.m_usMsgType);
                break;
            }
        }