public static PacketDistributed CreatePacket(MessageID packetID)
    {
        PacketDistributed packet = null;

        switch (packetID)
        {
        case MessageID.PACKET_CG_CHAT: { packet = new CG_CHAT(); } break;

        case MessageID.PACKET_CG_CONNECTED_HEARTBEAT: { packet = new CG_CONNECTED_HEARTBEAT(); } break;

        case MessageID.PACKET_CG_FIGHT: { packet = new CG_FIGHT(); } break;

        case MessageID.PACKET_CG_LEAVE_COPYSCENE: { packet = new CG_LEAVE_COPYSCENE(); } break;

        case MessageID.PACKET_CG_LOGIN: { packet = new CG_LOGIN(); } break;

        case MessageID.PACKET_CG_MOVE: { packet = new CG_MOVE(); } break;

        case MessageID.PACKET_CG_REQ_NEAR_LIST: { packet = new CG_REQ_NEAR_LIST(); } break;

        case MessageID.PACKET_GC_ATTACKFLY: { packet = new GC_ATTACKFLY(); } break;

        case MessageID.PACKET_GC_CHAT: { packet = new GC_CHAT(); } break;

        case MessageID.PACKET_GC_CONNECTED_HEARTBEAT: { packet = new GC_CONNECTED_HEARTBEAT(); } break;

        case MessageID.PACKET_GC_DELETE_OBJ: { packet = new GC_DELETE_OBJ(); } break;

        case MessageID.PACKET_GC_FORCE_SETPOS: { packet = new GC_FORCE_SETPOS(); } break;

        case MessageID.PACKET_GC_LOGIN_RET: { packet = new GC_LOGIN_RET(); } break;

        case MessageID.PACKET_GC_MOVE: { packet = new GC_MOVE(); } break;

        case MessageID.PACKET_GC_NEAR_MARCHLIST: { packet = new GC_NEAR_MARCHLIST(); } break;

        case MessageID.PACKET_GC_NOTICE: { packet = new GC_NOTICE(); } break;

        case MessageID.PACKET_GC_PLAY_EFFECT: { packet = new GC_PLAY_EFFECT(); } break;

        case MessageID.PACKET_GC_REMOVEEFFECT: { packet = new GC_REMOVEEFFECT(); } break;

        case MessageID.PACKET_GC_RET_USE_SKILL: { packet = new GC_RET_USE_SKILL(); } break;

        case MessageID.PACKET_GC_STOP: { packet = new GC_STOP(); } break;

        case MessageID.PACKET_GC_TELEMOVE: { packet = new GC_TELEMOVE(); } break;

        case MessageID.PACKET_GC_UPDATE_ANIMATION_STATE: { packet = new GC_UPDATE_ANIMATION_STATE(); } break;

        case MessageID.PACKET_GC_UPDATE_NEEDIMPACTINFO: { packet = new GC_UPDATE_NEEDIMPACTINFO(); } break;

        case MessageID.PACKET_GC_UPDATE_SCENE_INSTACTIVATION: { packet = new GC_UPDATE_SCENE_INSTACTIVATION(); } break;
        }
        if (null != packet)
        {
            packet.packetID = packetID;
        }
        return(packet);
    }
Beispiel #2
0
        public uint Execute(PacketDistributed ipacket)
        {
            GC_CHAT packet = (GC_CHAT )ipacket;

            if (null == packet)
            {
                return((uint)PACKET_EXE.PACKET_EXE_ERROR);
            }
            //enter your logic
            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Beispiel #3
0
 public void OnReceiveChat(GC_CHAT pak)
 {
     if (pak.Chattype == (int)GC_CHAT.CHATTYPE.CHAT_TYPE_LOUDSPEAKER)
     {
         if (null != LoudSpeakerFrameLogic.Instance())
         {
             LoudSpeakerFrameLogic.Instance().OnReceiveLoudSpeaker();
         }
     }
     else
     {
         InitCurChat();
     }
 }
Beispiel #4
0
        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);
                }
            }

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

            return((uint)PACKET_EXE.PACKET_EXE_CONTINUE);
        }
Beispiel #5
0
    public static PacketDistributed CreatePacket(MessageID packetID)
    {
        PacketDistributed packet = null;

        switch (packetID)
        {
        case MessageID.PACKET_CG_ASSIGN_HERO: { packet = new CG_ASSIGN_HERO(); } break;

        case MessageID.PACKET_CG_BATTLEINFOR: { packet = new CG_BATTLEINFOR(); } break;

        case MessageID.PACKET_CG_BATTLEPREPARE: { packet = new CG_BATTLEPREPARE(); } break;

        case MessageID.PACKET_CG_BUILDING_LEVELUP: { packet = new CG_Building_LevelUp(); } break;

        case MessageID.PACKET_CG_CHAT: { packet = new CG_CHAT(); } break;

        case MessageID.PACKET_CG_CONNECTED_HEARTBEAT: { packet = new CG_CONNECTED_HEARTBEAT(); } break;

        case MessageID.PACKET_CG_CREATEROLE: { packet = new CG_CREATEROLE(); } break;

        case MessageID.PACKET_CG_FIGHT: { packet = new CG_FIGHT(); } break;

        case MessageID.PACKET_CG_LEAVE_COPYSCENE: { packet = new CG_LEAVE_COPYSCENE(); } break;

        case MessageID.PACKET_CG_LOGIN: { packet = new CG_LOGIN(); } break;

        case MessageID.PACKET_CG_MARCH_MOVE: { packet = new CG_MARCH_MOVE(); } break;

        case MessageID.PACKET_CG_MOVE: { packet = new CG_MOVE(); } break;

        case MessageID.PACKET_CG_OBJPOSLIST: { packet = new CG_OBJPOSLIST(); } break;

        case MessageID.PACKET_CG_REQ_NEAR_LIST: { packet = new CG_REQ_NEAR_LIST(); } break;

        case MessageID.PACKET_CG_ROBOT_OPEN: { packet = new CG_ROBOT_OPEN(); } break;

        case MessageID.PACKET_CG_SEND_MARCH: { packet = new CG_SEND_MARCH(); } break;

        case MessageID.PACKET_CG_SKILL_USE: { packet = new CG_SKILL_USE(); } break;

        case MessageID.PACKET_CG_TROOP_TRAIN: { packet = new CG_Troop_Train(); } break;

        case MessageID.PACKET_GC_ASSIGN_HERO: { packet = new GC_ASSIGN_HERO(); } break;

        case MessageID.PACKET_GC_ATTACKFLY: { packet = new GC_ATTACKFLY(); } break;

        case MessageID.PACKET_GC_BATTLEEND: { packet = new GC_BATTLEEND(); } break;

        case MessageID.PACKET_GC_BATTLEINFOR: { packet = new GC_BATTLEINFOR(); } break;

        case MessageID.PACKET_GC_BATTLEPREPARE: { packet = new GC_BATTLEPREPARE(); } break;

        case MessageID.PACKET_GC_BATTLESTART: { packet = new GC_BattleStart(); } break;

        case MessageID.PACKET_GC_BUILDING_LEVELUP: { packet = new GC_Building_LevelUp(); } break;

        case MessageID.PACKET_GC_CHAT: { packet = new GC_CHAT(); } break;

        case MessageID.PACKET_GC_CONNECTED_HEARTBEAT: { packet = new GC_CONNECTED_HEARTBEAT(); } break;

        case MessageID.PACKET_GC_CREATEROLE_RET: { packet = new GC_CREATEROLE_RET(); } break;

        case MessageID.PACKET_GC_DELETE_OBJ: { packet = new GC_DELETE_OBJ(); } break;

        case MessageID.PACKET_GC_FIGHT: { packet = new GC_FIGHT(); } break;

        case MessageID.PACKET_GC_FORCE_SETPOS: { packet = new GC_FORCE_SETPOS(); } break;

        case MessageID.PACKET_GC_LOGIN_QUEUE_STATUS: { packet = new GC_LOGIN_QUEUE_STATUS(); } break;

        case MessageID.PACKET_GC_LOGIN_RET: { packet = new GC_LOGIN_RET(); } break;

        case MessageID.PACKET_GC_MARCH_MOVE: { packet = new GC_MARCH_MOVE(); } break;

        case MessageID.PACKET_GC_MOVE: { packet = new GC_MOVE(); } break;

        case MessageID.PACKET_GC_NEAR_MARCHLIST: { packet = new GC_NEAR_MARCHLIST(); } break;

        case MessageID.PACKET_GC_NOTICE: { packet = new GC_NOTICE(); } break;

        case MessageID.PACKET_GC_OBJCOMMANDPURSUE: { packet = new GC_OBJCOMMANDPURSUE(); } break;

        case MessageID.PACKET_GC_OBJGETHURT: { packet = new GC_OBJGETHURT(); } break;

        case MessageID.PACKET_GC_OBJPOSLIST: { packet = new GC_OBJPOSLIST(); } break;

        case MessageID.PACKET_GC_OBJPREPAREFORATTACK: { packet = new GC_OBJPREPAREFORATTACK(); } break;

        case MessageID.PACKET_GC_PLAY_EFFECT: { packet = new GC_PLAY_EFFECT(); } break;

        case MessageID.PACKET_GC_REMOVEEFFECT: { packet = new GC_REMOVEEFFECT(); } break;

        case MessageID.PACKET_GC_RET_USE_SKILL: { packet = new GC_RET_USE_SKILL(); } break;

        case MessageID.PACKET_GC_ROBOT_OPEN: { packet = new GC_ROBOT_OPEN(); } break;

        case MessageID.PACKET_GC_SEND_MARCH: { packet = new GC_SEND_MARCH(); } break;

        case MessageID.PACKET_GC_STOP: { packet = new GC_STOP(); } break;

        case MessageID.PACKET_GC_TELEMOVE: { packet = new GC_TELEMOVE(); } break;

        case MessageID.PACKET_GC_TROOPTRAIN_OVER: { packet = new GC_TroopTrain_Over(); } break;

        case MessageID.PACKET_GC_TROOP_TRAIN: { packet = new GC_Troop_Train(); } break;

        case MessageID.PACKET_GC_UPDATE_ANIMATION_STATE: { packet = new GC_UPDATE_ANIMATION_STATE(); } break;

        case MessageID.PACKET_GC_UPDATE_MARCH: { packet = new GC_Update_March(); } break;

        case MessageID.PACKET_GC_UPDATE_NEEDIMPACTINFO: { packet = new GC_UPDATE_NEEDIMPACTINFO(); } break;

        case MessageID.PACKET_GC_UPDATE_SCENE_INSTACTIVATION: { packet = new GC_UPDATE_SCENE_INSTACTIVATION(); } break;
        }
        if (null != packet)
        {
            packet.packetID = packetID;
        }
        return(packet);
    }
Beispiel #6
0
        public bool OnReceiveChat(GC_CHAT pak)
        {
            if (pak == null)
            {
                return(false);
            }

            if (pak.Chattype - 1 >= m_ChannelHistory.Length || pak.Chattype - 1 >= Channel_HistoryCount.Length || pak.Chattype - 1 < 0)
            {
                return(false);
            }
            if (pak.HasSenderguid)
            {
                if (pak.Chattype != (int)GC_CHAT.CHATTYPE.CHAT_TYPE_SYSTEM)
                {
                    if (pak.Senderguid != Singleton <ObjManager> .Instance.MainPlayer.GUID)
                    {
                        if (Utils.IsStrFilter_Abuse(pak.Chatinfo))
                        {
                            return(false);
                        }
                    }
                }
            }
            else
            {
                if (Utils.IsStrFilter_Abuse(pak.Chatinfo))
                {
                    return(false);
                }
            }
            if (m_ChannelHistory[pak.Chattype - 1].Count >= Channel_HistoryCount[pak.Chattype - 1])
            {
                ChatHistoryItem item = m_ChannelHistory[pak.Chattype - 1][0];
                m_ChannelHistory[pak.Chattype - 1].RemoveAt(0);
                m_ChatHistoryList.Remove(item);
                if (item.VoiceChatIndex != GlobeVar.INVALID_ID)
                {
                    GameManager.gameManager.PlayerDataPool.VoiceChatDownloadRecord.DelVoice(item.VoiceChatIndex);
                }
            }

            // 记录聊天历史
            ChatHistoryItem history = new ChatHistoryItem();

            history.CleanUp();
            //string ChatInfo = "";
            if (pak.HasSenderguid)
            {
                history.SenderGuid = pak.Senderguid;
            }
            if (pak.HasSendername)
            {
                history.SenderName = pak.Sendername;
                if (pak.HasAnoymousState)
                {
                    if (pak.AnoymousState == (int)GC_CHAT.ANOYMOUS_STATE.ANOYMOUS_SUCCESS)
                    {
                        history.SenderName = StrDictionary.GetClientDictionaryString("#{10566}");
                    }
                }
            }
            if (pak.HasReceiverguid)
            {
                history.ReceiverGuid = pak.Receiverguid;
            }
            if (pak.HasReceivername)
            {
                history.ReceiverName = pak.Receivername;
            }

            if (pak.HasSenderLevel)
            {
                history.SenderLevel = pak.SenderLevel;
            }

            if (pak.HasSenderProfession)
            {
                history.SenderPro = pak.SenderProfession;
            }
            if (pak.Chattype == (int)GC_CHAT.CHATTYPE.CHAT_TYPE_SYSTEM)
            {
                history.ChatInfo = pak.Chatinfo;
            }
            else
            {
                //history.ChatInfo = Utils.StrFilter_Chat(pak.Chatinfo);
            }

            history.ChatInfo = pak.Chatinfo;
            history.ChatInfo = history.ChatInfo.Replace(" ", " ");
            history.EChannel = (GC_CHAT.CHATTYPE)pak.Chattype;
            for (int i = 0; i < pak.linktypeCount; i++)
            {
                history.ELinkType.Add((GC_CHAT.LINKTYPE)pak.linktypeList[i]);
            }
            for (int i = 0; i < pak.intdataList.Count; ++i)
            {
                history.IntData.Add(pak.intdataList[i]);
            }
            for (int i = 0; i < pak.strdataList.Count; ++i)
            {
                history.StrData.Add(pak.strdataList[i]);
            }
            if (pak.HasSenderVIPLevel)
            {
                history.SenderVIPLevel = pak.SenderVIPLevel;
            }

            Obj_MainPlayer mainPlayer = Singleton <ObjManager> .Instance.MainPlayer;

            if (null == mainPlayer)
            {
                return(false);
            }
            if (pak.HasVoiceChatIndex && pak.HasSenderguid)
            {
                // LogModule.DebugLog("ReeiveGCCHATVoice");
                history.VoiceChatIndex = pak.VoiceChatIndex;
                if (mainPlayer.GUID != pak.Senderguid && IsCanAutoDownloadVoiceChat(history))
                {
                    if (ChatInfoSetupLogic.IsChannelReceiveChat(GameManager.gameManager.PlayerDataPool.ChooseChannel, history.EChannel))
                    {
                        // 不是自己发送的 又通过语音设置的 又通过聊天频道接收设置的 才去自动下载
                        LogModule.DebugLog("AddGCCHATVoice");
                        GameManager.gameManager.PlayerDataPool.VoiceChatDownloadRecord.ReqDownload(history.VoiceChatIndex, history.SenderGuid);
                    }
                }
            }
            m_ChannelHistory[pak.Chattype - 1].Add(history);
            //LogModule.DebugLog ("add ----------- " + history.ChatInfo + " " + history.StrData[0] +"  " + history.IntData.Count);
            m_ChatHistoryList.Add(history);

            if (pak.HasSenderguid && (pak.Chattype == (int)GC_CHAT.CHATTYPE.CHAT_TYPE_NORMAL || pak.Chattype == (int)GC_CHAT.CHATTYPE.CHAT_TYPE_TEAM))
            {
                if (pak.Senderguid == mainPlayer.GUID)
                {
                    mainPlayer.ShowChatBubble(history);
                }
                else
                {
                    Obj_OtherPlayer player = Singleton <ObjManager> .GetInstance().FindOtherPlayerInScene(pak.Senderguid);

                    if (player != null)
                    {
                        player.ShowChatBubble(history);
                    }
                }
            }

            // 好友频道消息
            if (pak.Chattype == (int)GC_CHAT.CHATTYPE.CHAT_TYPE_FRIEND)
            {
                // 发送者不是玩家自己
                if (pak.HasSenderguid && pak.Senderguid != mainPlayer.GUID)
                {
                    // 如果当前是好友频道 且选中的不是该好友 才向list添加
                    if (ChatInfoLogic.Instance() != null &&
                        ChatInfoLogic.Instance().CurChannelType == ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_FRIEND &&
                        ChatInfoLogic.Instance().FriendChatReceiverGuid == pak.Senderguid)
                    {
                    }
                    else
                    {
                        if (!m_FriendSendList.Contains(pak.Senderguid))
                        {
                            m_FriendSendList.Add(pak.Senderguid);
                        }
                    }

                    // 聊天界面关闭或者打开但不是好友频道时
                    if (ChatInfoLogic.Instance() == null ||
                        (ChatInfoLogic.Instance() != null && ChatInfoLogic.Instance().CurChannelType != ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_FRIEND))
                    {
                        // 通知ChatFrame显示提示红点
                        if (ChatFrameLogic.Instance() != null)
                        {
                            ChatFrameLogic.Instance().m_InformSprite.SetActive(true);
                        }
                        m_HasNewFriendChat = true;
                    }
                }
            }

            if (pak.Chattype == (int)GC_CHAT.CHATTYPE.CHAT_TYPE_TELL)
            {
                if (pak.HasSenderguid && pak.Senderguid != mainPlayer.GUID)
                {
                    // 聊天界面关闭或者打开但不是密聊频道时
                    if (ChatInfoLogic.Instance() == null ||
                        (ChatInfoLogic.Instance() != null && ChatInfoLogic.Instance().CurChannelType != ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_TELL))
                    {
                        // 通知ChatFrame显示提示红点
                        if (ChatFrameLogic.Instance() != null)
                        {
                            ChatFrameLogic.Instance().m_InformSprite.SetActive(true);
                            m_HasNewTellChat = true;
                        }

                        // 如果打开但不是密聊频道 通知聊天界面显示密聊频道标签上的红点
                        if (ChatInfoLogic.Instance() != null && ChatInfoLogic.Instance().CurChannelType != ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_TELL)
                        {
                            ChatInfoLogic.Instance().m_TellInformSprite.SetActive(true);
                        }
                    }
                }
            }

            if (pak.Chattype == (int)GC_CHAT.CHATTYPE.CHAT_TYPE_TEAM)
            {
                if (pak.HasSenderguid && pak.Senderguid != mainPlayer.GUID)
                {
                    // 聊天界面关闭或者打开但不是密聊频道时
                    if (ChatInfoLogic.Instance() == null ||
                        (ChatInfoLogic.Instance() != null && ChatInfoLogic.Instance().CurChannelType != ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_TEAM))
                    {
                        // 通知ChatFrame显示提示红点
                        if (ChatFrameLogic.Instance() != null)
                        {
                            ChatFrameLogic.Instance().m_InformSprite.SetActive(true);
                            m_HasTeamInfoChat = true;
                        }

                        // 如果打开但不是密聊频道 通知聊天界面显示密聊频道标签上的红点
                        if (ChatInfoLogic.Instance() != null && ChatInfoLogic.Instance().CurChannelType != ChatInfoLogic.CHANNEL_TYPE.CHAT_TYPE_TEAM)
                        {
                            ChatInfoLogic.Instance().m_TeamInfoSprite.SetActive(true);
                        }
                    }
                }
            }
            return(true);
        }