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, "请求进入房间失败"); } } } } }
/// <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); }
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); } }
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); }
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); }
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)); } } } } }
/// <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); }