public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            RqEnterRoom rqEnterRoom = Deserialization(operationRequest.Parameters);

            if (null == rqEnterRoom)
            {
                LBLogger.Info(LogTag, "解析请求进入房间消息失败");
            }
            else
            {
                LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);
                LBLogger.Info(LogTag, "临时日志   " + curPlayer.PlayerId + "  " + curPlayer.ConnectionId);
                if (null == curPlayer)
                {
                    LBLogger.Info(LogTag, "不存在的账号请求进入房间,连接id:" + peer.ConnectionId);
                }
                else
                {
                    if (LBRoomManager.Instance.IsPlayerInRoom(curPlayer.PlayerId))
                    {
                        LBLogger.Info(LogTag, "请求进入房间,但是已经在房间中");
                    }
                    else
                    {
                        if (!LBRoomManager.Instance.PlayerEnterRoom(rqEnterRoom.RoomId, curPlayer.PlayerId))
                        {
                            LBLogger.Info(LogTag, "请求进入房间失败");
                        }
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// 账号在房间内发起准备
        /// </summary>
        /// <param name="accountId"></param>
        /// <returns></returns>
        public bool ReadyInRoom(int accountId)
        {
            bool isSuccess = false;

            for (int i = 0; i < MemberInfoArray.Length; ++i)
            {
                if (MemberInfoArray[i].playerId == accountId)
                {
                    MemberInfoArray[i].isReady = true;
                    isSuccess = true;
                }
            }
            if (!isSuccess)
            {
                return(false);
            }

            if (IsAllMemberReady())
            {
                bool isNotFind = false;
                LBPlayerEnterSceneInfo[] playerInfos = new LBPlayerEnterSceneInfo[MemberInfoArray.Length];
                for (int i = 0; i < MemberInfoArray.Length; ++i)
                {
                    LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByPlayerId(MemberInfoArray[i].playerId);
                    if (null == curPlayer)
                    {
                        //异常情况,应该是bug
                        LBLogger.Error(LogTag, "准备进入场景时找不到对应的玩家 " + MemberInfoArray[i].playerId);
                        isNotFind = true;
                        break;
                    }
                    playerInfos[i]              = new LBPlayerEnterSceneInfo();
                    playerInfos[i].playerId     = curPlayer.PlayerId;
                    playerInfos[i].playerName   = curPlayer.PlayerName;
                    playerInfos[i].connectionId = curPlayer.ConnectionId;
                }
                if (isNotFind)
                {
                    //异常处理情况
                }
                else
                {
                    if (LBSceneManager.Instance.PlayersEnterScene(RoomId, playerInfos))
                    {
                        IsPlaying = true;
                    }
                    else
                    {
                        LBLogger.Error(LogTag, "进入场景失败,房间ID:" + RoomId);
                    }
                }
            }
            else
            {
                BroadcastEvent(RpId.RoomAccountInfo, RpRoomMemberInfo.Serialization(RqCommonFunc.CreateRoomPlayerList(RoomId)));
            }
            return(true);
        }
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);

            if (null == curPlayer)
            {
                LBLogger.Info("RqLoadFinish", "账号不存在 " + peer.ConnectionId);
                return;
            }
            LBSceneManager.Instance.PlayerLoadFinish(curPlayer.PlayerId);
        }
示例#4
0
 public void BroadcastEvent(RpId rpId, Dictionary <byte, object> dicParameters)
 {
     for (int i = 0; i < mPlayerInfoArray.Length; ++i)
     {
         if (mPlayerInfoArray[i].IsValidInfo)
         {
             LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByPlayerId(mPlayerInfoArray[i].playerId);
             if (null != curPlayer)
             {
                 LBPeerManager.Instance.SendMessage(curPlayer.ConnectionId, rpId, dicParameters);
             }
         }
     }
 }
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);

            if (curPlayer == null)
            {
                return;
            }
            if (LBRoomManager.Instance.PlayerRoomReady(curPlayer.PlayerId))
            {
            }
            else
            {
                LBLogger.Info("RqRoomReadyPlayHandler", "发起准备,失败 " + peer.ConnectionId);
            }
        }
示例#6
0
        public static List <RpPlayerData> CreateRoomPlayerList(int roomId)
        {
            List <RpPlayerData> accountList = new List <RpPlayerData>();
            LBRoom curRoom = LBRoomManager.Instance.GetRoomById(roomId);

            for (int i = 0; i < curRoom.MemberInfoArray.Length; ++i)
            {
                LBRoom.MemberInfo roomMemberInfo = curRoom.MemberInfoArray[i];
                LBPlayer          roomPlayer     = LBPlayerManager.Instance.GetPlayerByPlayerId(roomMemberInfo.playerId);
                if (null == roomPlayer)
                {
                    continue;
                }
                RpPlayerData rpAccount = new RpPlayerData(roomMemberInfo.playerId, roomPlayer.PlayerName, roomMemberInfo.isReady);
                accountList.Add(rpAccount);
            }
            return(accountList);
        }
示例#7
0
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);

            if (curPlayer == null)
            {
                //LBLogger.Error("RqBattleInstructionHandler", "玩家没有登录");
                return;
            }
            byte[] byteArray = RqBattleInstruction.Deserialization(operationRequest.Parameters);
            int    index     = 0;
            BattleInstructionBase battleInstruction = BattleInstructionBase.Deserializetion(byteArray, ref index);

            if (null == battleInstruction)
            {
                LBLogger.Error("RqBattleInstructionHandler", "消息解析失败");
                return;
            }
            LBSceneManager.Instance.PlayerBattleInstruction(curPlayer.PlayerId, battleInstruction);
        }
示例#8
0
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            RqLeaveRoom rqEnterRoom = Deserialization(operationRequest.Parameters);

            if (null == rqEnterRoom)
            {
                LBLogger.Info(LogTag, "请求离开Room,解析失败");
                peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
            }
            else
            {
                LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);
                if (null == curPlayer)
                {
                    LBLogger.Info(LogTag, "请求离开Room,当前玩家不存在");
                    peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
                }
                else
                {
                    if (!LBRoomManager.Instance.IsPlayerInRoom(curPlayer.PlayerId))
                    {
                        LBLogger.Info(LogTag, "请求离开房间,但是当前不在房间中 ");
                        peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
                    }
                    else
                    {
                        bool leaveResult = LBRoomManager.Instance.PlayerLeaveRoom(curPlayer.PlayerId);
                        if (leaveResult)
                        {
                            LBLogger.Info(LogTag, "请求离开房间成功");
                            peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(true));
                        }
                        else
                        {
                            LBLogger.Info(LogTag, "请求离开失败");
                            peer.SendCustomEvent(RpId.LeaveRoom, RpLeaveRoom.Serialization(false));
                        }
                    }
                }
            }
        }
        public static void OnOperateRequest(MyPeer peer, OperationRequest operationRequest)
        {
            RqCreateRoom rqCreateRoom = Deserialization(operationRequest.Parameters);

            if (null == rqCreateRoom)
            {
                LBLogger.Info(LogTag, "请求创建房间,消息解析失败");
                peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
            }
            else
            {
                LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByConnectionId(peer.ConnectionId);
                if (null == curPlayer)
                {
                    LBLogger.Info(LogTag, "请求创建房间,账号未登陆,连接ID:" + peer.ConnectionId);
                    peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
                }
                else
                {
                    if (LBRoomManager.Instance.IsPlayerInRoom(curPlayer.PlayerId))
                    {
                        LBLogger.Info(LogTag, "无法创建,因为当前已经处于房间");
                        peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
                    }
                    else
                    {
                        int roomId = LBRoomManager.Instance.CreateRoom(rqCreateRoom.RoomName);
                        if (CommonDefine.InvalidRoomId == roomId)
                        {
                            LBLogger.Info(LogTag, "创建房间失败");
                            peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(false, CommonDefine.InvalidRoomId, string.Empty));
                        }
                        else
                        {
                            LBLogger.Info(LogTag, "创建房间成功 " + roomId);
                            peer.SendCustomEvent(RpId.CreateRoom, RpCreateRoom.Serialization(true, roomId, rqCreateRoom.RoomName));
                        }
                    }
                }
            }
        }
示例#10
0
        /// <summary>
        /// 账号进入房间
        /// </summary>
        /// <param name="playerId"></param>
        /// <returns></returns>
        public bool EnterRoom(int playerId)
        {
            LBLogger.Error(LogTag, "请求进入房间 " + playerId);
            int emptyIndex = FindEmptyMemberIndex();

            if (emptyIndex < 0)
            {
                return(false);
            }
            MemberInfoArray[emptyIndex].playerId = playerId;

            LBPlayer curPlayer = LBPlayerManager.Instance.GetPlayerByPlayerId(playerId);

            if (null != curPlayer)
            {
                LBLogger.Error(LogTag, "发起进入房间消息 " + playerId + " " + curPlayer.ConnectionId);
                LBPeerManager.Instance.SendMessage(curPlayer.ConnectionId, RpId.EnterRoom, RpEnterRoom.Serialization(true, RoomId, RoomName));
            }
            BroadcastEvent(RpId.RoomAccountInfo, RpRoomMemberInfo.Serialization(RqCommonFunc.CreateRoomPlayerList(RoomId)));
            return(true);
        }