Example #1
0
        /// <summary>
        /// 客户端聊天的请求处理
        /// </summary>
        /// <param name="client"></param>
        /// <param name="msg"></param>
        private void Chat(ClientPeer client, string msg)
        {
            SingleExecute.Instance.Exeecute(() => {
                foreach (var matchCache in matchCaches)
                {
                    if (matchCache.IsMatching(client.Id))   // 客户端在匹配房间里
                    {
                        MatchRoom room = matchCache.GetRoom(client.Id);
                        chatDto.Change(client.Id, client.UserName, msg);
                        room.Broadcast(OpCode.Chat, ChatCode.BRO, chatDto);
                    }
                }
                if (fightCache.IsFighting(client.Id) == false)
                {
                    return;
                }

                FightRoom fightRoom = fightCache.GetFightRoomByUserId(client.Id);
                chatDto.Change(client.Id, client.UserName, msg);
                fightRoom.Broadcast(OpCode.Chat, ChatCode.BRO, chatDto);
            });
        }
Example #2
0
        private void processCREQ(ClientPeer clientPeer, int chattype)
        {
            if (!UserCache.Instance.IsOnline(clientPeer))
            {
                return;
            }

            int uid = UserCache.Instance.GetId(clientPeer);

            if (MatchCache.Instance.IsMatching(uid))
            {
                //如果用户正在匹配房间可以发送聊天信息
                MatchRoom matchRoom = MatchCache.Instance.GetRoom(uid);
                chatDto.Change(uid, chattype);
                //向自己以外的玩家发送聊天消息
                matchRoom.Broadcast(OpCode.CHAT, ChatCode.SBOD, chatDto);
            }
            //TODO在游戏房间也可以发送
        }