//This code create by CodeEngine

using System;
using Module.Log;
using Google.ProtocolBuffers;
using System.Collections;

namespace SPacket.SocketInstance
{
    public class GC_CHATHandler : Ipacket
    {
        public uint Execute(PacketDistributed ipacket)
        {
            GC_CHAT packet = (GC_CHAT )ipacket;
            if (null == packet) return (uint)PACKET_EXE.PACKET_EXE_ERROR;
            //enter your logic   

            if (null == GameManager.gameManager.PlayerDataPool.BlackList)
            {
                return (uint)PACKET_EXE.PACKET_EXE_CONTINUE;
            }

            if (packet.HasSenderguid)
            {
                if (GameManager.gameManager.PlayerDataPool.BlackList.IsExist(packet.Senderguid))
                {
                    return (uint)PACKET_EXE.PACKET_EXE_CONTINUE;
                }               
            }

            GameManager.gameManager.PlayerDataPool.ChatHistory.OnReceiveChat(packet);
            if (FriendAndMailRoot.Instance() != null)
            {
                FriendAndMailRoot.Instance().OnReceiveChat();
            }
            if (ChatFrameLogic.Instance() != null)
            {
                ChatFrameLogic.Instance().OnReceiveChat(packet);
            }
            if (ChatInfoLogic.Instance() != null)
            {
                ChatInfoLogic.Instance().OnReceiveChat();
            }

            int HistoryCount = GameManager.gameManager.PlayerDataPool.ChatHistory.ChatHistoryList.Count;
            var LastHistory = GameManager.gameManager.PlayerDataPool.ChatHistory.ChatHistoryList[HistoryCount - 1];
            if (LastHistory.ChatInfo.StartsWith(ChatVoiceInputLogic._VoiceChatStart))
            {
                ChatVoice.Instance().AutoVoice(LastHistory);
            }


            return (uint)PACKET_EXE.PACKET_EXE_CONTINUE;
        }
    }
}