Exemple #1
0
        public void Add(List <MatchEntity> teamA, List <MatchEntity> teamB)
        {
            roomID += 1;

            RoomInfo roomInfo = new RoomInfo();

            roomInfo.ID = roomID;
            for (int i = 0; i < teamA.Count; i++)
            {
                MatchManager.Instance.Remove(teamA[i]);

                //teamA[i].player.rolesInfo.
                roomInfo.TeamA.Add(teamA[i].player.rolesInfo);
            }

            for (int i = 0; i < teamB.Count; i++)
            {
                MatchManager.Instance.Remove(teamB[i]);

                //teamA[i].player.rolesInfo.
                roomInfo.TeamB.Add(teamB[i].player.rolesInfo);
            }

            roomInfo.StartTime = TimeHelper.Now();
            RoomEntity roomEntity = new RoomEntity(roomInfo);

            if (roomDIC.TryAdd(roomInfo.ID, roomEntity))
            {
                //告诉每一个客户端 匹配成功了 然后进入到房间 选择英雄
                LobbyUpdateMatchStateS2C s2cMSG = new LobbyUpdateMatchStateS2C();
                s2cMSG.Result   = 0;
                s2cMSG.RoomInfo = roomInfo;

                roomEntity.Broadcast(1301, s2cMSG);
            }

            //用户的队伍ID  房间实体 缓存
            for (int i = 0; i < teamA.Count; i++)
            {
                teamA[i].player.matchEntity = null;
                teamA[i].player.roomEntity  = roomEntity;
                teamA[i].player.TeamID      = 0;
            }
            for (int i = 0; i < teamB.Count; i++)
            {
                teamB[i].player.matchEntity = null;
                teamB[i].player.roomEntity  = roomEntity;
                teamB[i].player.TeamID      = 1;
            }
        }
        /// <summary>
        /// 更新匹配的状态
        /// </summary>
        /// <param name="obj"></param>
        private void HandleLobbyUpdateMatchStateS2C(BufferEntity response)
        {
            LobbyUpdateMatchStateS2C s2cMSG = ProtobufHelper.FromBytes <LobbyUpdateMatchStateS2C>(response.proto);

            if (s2cMSG.Result == 0)
            {
                MatchModeBtn.gameObject.SetActive(true);
                QualifyingBtn.gameObject.SetActive(true);
                StopMatchBtn.gameObject.SetActive(false);
                MatchTips.gameObject.SetActive(false);

                //房间信息
                RolesCtrl.Instance.SaveRoomInfo(s2cMSG.RoomInfo);

                Close();
                WindowManager.Instance.OpenWindow(WindowType.RoomWindow);
            }
        }