public void OnCheckFrameType_UTS(byte[] datagramBytes) { ProtorlEnum.FrameInfo data_info; data_info.nFrameType = datagramBytes[6]; switch (data_info.nFrameType) { case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_Keep: break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_Login: { Player pPlayer; int nLoginResult = Player.OnUserLogin(datagramBytes, out pPlayer); PlayerLoginResult stLoginResult; stLoginResult.nResult = nLoginResult; if (nLoginResult > 0) { stLoginResult.nPlayerID = pPlayer.NPlayerID; stLoginResult.nResourceID = pPlayer.NResourceID; stLoginResult.nBody = pPlayer.NBody; stLoginResult.nLogStageID = pPlayer.m_nLogStageID; stLoginResult.nLogStepID = pPlayer.m_nLogStepID; } else { stLoginResult.nPlayerID = 0; stLoginResult.nResourceID = 0; stLoginResult.nBody = 0; stLoginResult.nLogStageID = 0; stLoginResult.nLogStepID = 0; } byte[] btLoginResult = Common.Method.StructToBytes(stLoginResult); byte[] allInfo; if (null != pPlayer) { byte[] btname = System.Text.Encoding.UTF8.GetBytes(pPlayer.SzName); allInfo = new byte[btLoginResult.Length + 4 + btname.Length]; byte[] namelen = System.BitConverter.GetBytes(btname.Length); //byte[] tempByte = new byte[4 + 4]; //byte[] nResult = System.BitConverter.GetBytes(nLoginResult); //byte[] nID; //nResult.CopyTo(tempByte, 0); btLoginResult.CopyTo(allInfo, 0); namelen.CopyTo(allInfo, btLoginResult.Length); btname.CopyTo(allInfo, 4 + btLoginResult.Length); SessionPlayer = pPlayer; pPlayer.pSession = this; //nID = System.BitConverter.GetBytes(SessionPlayer.m_nPlayerID); //nID.CopyTo(tempByte, 4); pPlayer.MakeAndSendDatagram((byte)ProtorlEnum.FrameGroup.FrameGroup_ServerResult, (byte)ProtorlEnum.FrameType_ServerResult.FrameType_Result_Login, allInfo); } else { //nID = System.BitConverter.GetBytes(0); //nID.CopyTo(tempByte, 4); TTestSession.MakeAndSendDatagram((byte)ProtorlEnum.FrameGroup.FrameGroup_ServerResult, (byte)ProtorlEnum.FrameType_ServerResult.FrameType_Result_Login, btLoginResult, this); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_SingleEnterStep: { if (null != SessionPlayer) { SessionPlayer.OnCreateStep(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_PlayerMove: { if (null != SessionPlayer) { SessionPlayer.OnMove(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_PlayerKnock: { if (null != SessionPlayer) { SessionPlayer.OnKnock(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_PlayerStopMove: { if (null != SessionPlayer) { SessionPlayer.OnStopMove(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_QueryTeam: { if (null != SessionPlayer) { SessionPlayer.OnQueryTeamList(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_CreateTeam: { if (null != SessionPlayer) { int nTeamIndex = SessionPlayer.OnCreateTeam(datagramBytes); //base.OnDatagramHandled(); base.Logout = "Player " + SessionPlayer.NPlayerID.ToString() + " CreateTeam " + nTeamIndex.ToString(); base.OnDatagramlogOut(); // 输出 } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_JoinTeam: { if (null != SessionPlayer) { SessionPlayer.OnJoinTeam(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_JoinTeamWithPassword: { if (null != SessionPlayer) { SessionPlayer.OnJoinTeamWithPassword(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_JoinTeamRandom: { if (null != SessionPlayer) { SessionPlayer.OnJoinTeamRandom(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_PlayerReady: { if (null != SessionPlayer) { SessionPlayer.OnSingleReady(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_PlayerNotReady: { if (null != SessionPlayer) { SessionPlayer.OnSingleNotReady(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_TeamReady: { if (null != SessionPlayer) { int nResult = SessionPlayer.OnTeamReady(datagramBytes); if (nResult > 0) { base.Logout = "Battle Start " + SessionPlayer.CurTeam.nTeamIndex.ToString() + " vs " + nResult.ToString(); base.OnDatagramlogOut(); // 输出 } } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_TeamNotReady: { if (null != SessionPlayer) { SessionPlayer.OnTeamNotReady(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_OpenSeat: { if (null != SessionPlayer) { SessionPlayer.OnOpenSeat(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_CloseSeat: { if (null != SessionPlayer) { SessionPlayer.OnCloseSeat(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_KickPlayer: { if (null != SessionPlayer) { SessionPlayer.OnKickPlayer(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_KickAndClose: { if (null != SessionPlayer) { SessionPlayer.OnKickAndClose(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_QuitTeam: { if (null != SessionPlayer) { SessionPlayer.OnQuitTeam(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_SingleTimeOut: { if (null != SessionPlayer) { SessionPlayer.OnSingleTimeOut(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_QueryNextSubStep: { if (null != SessionPlayer) { SessionPlayer.OnQueryNextSubStep(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_Find(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_Find: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_Find(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_Speed: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_Speed(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_Invincible: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_Invincible(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_AOE: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_AOE(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_Stun: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_Stun(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_TimeSlow: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_TimeSlow(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_AT: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_AT(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_Trans: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_Trans(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_UseItem_Hammer: { if (null != SessionPlayer) { SessionPlayer.OnUserItem_Hammer(datagramBytes); } } break; case (byte)ProtorlEnum.FrameType_UserToServer.FrameType_QueryStageScore: { if (null != SessionPlayer) { SessionPlayer.OnQueryStageScore(datagramBytes); } } break; default: break; } }
public static void MakeAndSendDatagram(byte nGroup, byte nType, byte[] DataByte, TTestSession tSession) { byte[] tempByte = new byte[1 + 1 + 4 + 1 + 1 + DataByte.Length]; Encoding.ASCII.GetBytes("<", 0, 1, tempByte, 0); Encoding.ASCII.GetBytes(">", 0, 1, tempByte, tempByte.Length - 1); byte[] btGroup = { nGroup }; byte[] btType = { nType }; byte[] btLenth = System.BitConverter.GetBytes(tempByte.Length - 2); btLenth.CopyTo(tempByte, 1); btGroup.CopyTo(tempByte, 5); btType.CopyTo(tempByte, 6); DataByte.CopyTo(tempByte, 7); //发送信息 tSession.SendDatagram(tempByte); }