Пример #1
0
 public void Broadcast(int teamID, int messageID, IMessage s2cMSG)
 {
     if (teamID == 0)
     {
         //A队伍
         for (int i = 0; i < roomInfo.TeamA.Count; i++)
         {
             UClient client;
             if (clientList.TryGetValue(roomInfo.TeamA[i].RolesID, out client))
             {
                 BufferFactory.CreqateAndSendPackage(client, messageID, s2cMSG);
             }
         }
     }
     else
     {
         //B队伍
         for (int i = 0; i < roomInfo.TeamB.Count; i++)
         {
             UClient client;
             if (clientList.TryGetValue(roomInfo.TeamB[i].RolesID, out client))
             {
                 BufferFactory.CreqateAndSendPackage(client, messageID, s2cMSG);
             }
         }
     }
 }
Пример #2
0
        /// <summary>
        /// 注册功能
        /// </summary>
        /// <param name="request"></param>
        private void HandleUserRegisterC2S(BufferEntity request)
        {
            UserRegisterC2S c2sMSG = ProtobufHelper.FromBytes <UserRegisterC2S>(request.proto);

            UserRegisterS2C s2cMSG = new UserRegisterS2C();

            if (DBUserInfo.Instance.Select(MySqlCMD.Where("Account", c2sMSG.UserInfo.Account)) != null)
            {
                Debug.Log("帐号已被注册");
                s2cMSG.Result = 3;
            }
            else
            {
                bool result = DBUserInfo.Instance.Insert(c2sMSG.UserInfo);
                if (result == true)
                {
                    s2cMSG.Result = 0;//注册成功
                }
                else
                {
                    s2cMSG.Result = 4;//未知原因导致的失败
                }
            }

            //返回结果
            BufferFactory.CreqateAndSendPackage(request, s2cMSG);
        }
Пример #3
0
 public void Broadcast(int messageID, IMessage s2cMSG)
 {
     foreach (var client in clientList.Values)
     {
         BufferFactory.CreqateAndSendPackage(client, messageID, s2cMSG);
     }
 }
Пример #4
0
        /// <summary>
        /// 登录功能
        /// </summary>
        /// <param name="request"></param>
        private void HandleUserLoginC2S(BufferEntity request)
        {
            //反序列化 得到客户端 发送的数据

            UserLoginC2S c2sMSG = ProtobufHelper.FromBytes <UserLoginC2S>(request.proto);
            //主要是看反序列化的功能 是否正常
            //Debug.Log("登录:"+ JsonHelper.SerializeObject(c2sMSG));

            //匹配记录:相同的账号 相同的密码
            string sqlCMD = MySqlCMD.Where("Account", c2sMSG.UserInfo.Account) +
                            MySqlCMD.And("Password", c2sMSG.UserInfo.Password);

            UserLoginS2C s2cMSG   = new UserLoginS2C();
            UserInfo     userInfo = DBUserInfo.Instance.Select(sqlCMD);

            if (userInfo != null)
            {
                s2cMSG.UserInfo = userInfo;
                s2cMSG.Result   = 0;//登录成功

                //保存角色信息到服务器本地
                PlayerManager.Add(request.session, s2cMSG.UserInfo.ID, new PlayerEntity()
                {
                    userInfo = s2cMSG.UserInfo,
                    session  = request.session,
                });

                RolesInfo rolesInfo = DBRolesInfo.Instance.Select(MySqlCMD.Where("ID", s2cMSG.UserInfo.ID));

                if (rolesInfo != null)
                {
                    s2cMSG.RolesInfo = rolesInfo;
                    //获取到了角色信息 缓存起来
                    PlayerEntity playerEntity = PlayerManager.GetPlayerEntityFromSession(request.session);
                    playerEntity.rolesInfo = rolesInfo;
                }
            }
            else
            {
                s2cMSG.Result = 2;//帐号和密码不匹配
            }

            //返回结果
            BufferFactory.CreqateAndSendPackage(request, s2cMSG);
        }
Пример #5
0
        /// <summary>
        /// 发送了加载进度过来
        /// </summary>
        /// <param name="request"></param>
        private void HandleRoomLoadProgressC2S(BufferEntity request)
        {
            RoomLoadProgressC2S c2sMSG = ProtobufHelper.FromBytes <RoomLoadProgressC2S>(request.proto);
            RoomLoadProgressS2C s2cMSG = new RoomLoadProgressS2C();

            s2cMSG.IsBattleStart = false;

            PlayerEntity p      = PlayerManager.GetPlayerEntityFromSession(request.session);
            bool         result = p.roomEntity.UpdateLoadProgress(p.rolesInfo.RolesID, c2sMSG.LoadProgress);

            if (result == true)
            {
                //所有玩家都已经加载完成了
            }
            else
            {
                p.roomEntity.GetLoadProgress(ref s2cMSG);
                BufferFactory.CreqateAndSendPackage(request, s2cMSG);
            }
        }
Пример #6
0
        //进入匹配
        private void HandleLobbyToMatchC2S(BufferEntity request)
        {
            LobbyToMatchC2S c2sMSG = ProtobufHelper.FromBytes <LobbyToMatchC2S>(request.proto);
            LobbyToMatchS2C s2cMSG = new LobbyToMatchS2C();

            s2cMSG.Result = 0;

            MatchEntity  matchEntity = new MatchEntity();
            PlayerEntity player      = PlayerManager.GetPlayerEntityFromSession(request.session);

            //缓存匹配信息
            player.matchEntity = matchEntity;

            matchEntity.TeamID = player.rolesInfo.RolesID;
            matchEntity.player = player;

            BufferFactory.CreqateAndSendPackage(request, s2cMSG);

            //让角色进入匹配状态
            MatchManager.Instance.Add(matchEntity);
        }
Пример #7
0
        //退出匹配
        private void HandleLobbyQuitMatchC2S(BufferEntity request)
        {
            LobbyQuitMatchC2S c2sMSG = ProtobufHelper.FromBytes <LobbyQuitMatchC2S>(request.proto);
            LobbyQuitMatchS2C s2cMSG = new LobbyQuitMatchS2C();

            PlayerEntity player = PlayerManager.GetPlayerEntityFromSession(request.session);

            if (player != null)
            {
                bool result = MatchManager.Instance.Remove(player.matchEntity);
                if (result == true)
                {
                    player.matchEntity = null;
                    s2cMSG.Result      = 0;//移除成功
                }
                else
                {
                    s2cMSG.Result = 1;//不在匹配状态
                }
            }
            BufferFactory.CreqateAndSendPackage(request, s2cMSG);
        }
Пример #8
0
        private void HandleRolesCreateC2S(BufferEntity request)
        {
            //去数据库查询下角色表有没有存在相同名称的

            RolesCreateC2S c2sMSG = ProtobufHelper.FromBytes <RolesCreateC2S>(request.proto);

            RolesCreateS2C s2cMSG = new RolesCreateS2C();

            //数据库查询 结果为空 说明没有存在该角色名称
            if (DBRolesInfo.Instance.Select(MySqlCMD.Where("NickName", c2sMSG.NickName)) == null)
            {
                //用户ID
                PlayerEntity player = PlayerManager.GetPlayerEntityFromSession(request.session);

                RolesInfo rolesInfo = new RolesInfo();
                rolesInfo.NickName = c2sMSG.NickName;
                rolesInfo.ID       = player.userInfo.ID;
                rolesInfo.RolesID  = player.userInfo.ID;

                bool result = DBRolesInfo.Instance.Insert(rolesInfo);
                if (result == true)
                {
                    s2cMSG.Result    = 0;
                    s2cMSG.RolesInfo = rolesInfo;
                    //缓存角色的信息到服务器本地
                    player.rolesInfo = rolesInfo;
                }
                else
                {
                    s2cMSG.Result = 2;//未知的异常 等待排查
                    Debug.Log($"插入角色数据存在异常,昵称:{c2sMSG.NickName}!");
                }
            }
            else
            {
                s2cMSG.Result = 1;//创建结果是1
            }
            BufferFactory.CreqateAndSendPackage(request, s2cMSG);
        }