private void OnQueryIndividualResp(Packet packet) { ByteBuffer buffer = ByteBufferPool.PopPacket(packet.Data); //不需要只包含用户信息的数据包 buffer.Position = Marshal.SizeOf(typeof(CMD_GP_UserIndividual)); var info = new CMD_GH_UserInformation(); info.dwLogoID = GameApp.GameData.UserInfo.HeadId; while (true) { string str = ""; ushort type = ProtoHelper.ReadDescDataString(ref buffer, ref str); if (type == 0) { break; } switch (type) { case CommonDefine.DTP_GP_UI_COMPELLATION: { info.dwName = str; break; } case CommonDefine.DTP_GP_UI_QQ: { info.dwIM = str; break; } case CommonDefine.DTP_GP_UI_USER_NOTE: { info.dwIdentification = str; break; } case CommonDefine.DTP_GP_UI_MOBILE_PHONE: { info.dwCellPhone = str; break; } } } ByteBufferPool.DropPacket(buffer); GameApp.Account.CallUserInformationEvent( info.dwName, info.dwIdentification, info.dwCellPhone, info.dwIM, info.dwLogoID); }
private void AnalysisVersionInfo(Packet packet) { ByteBuffer buffer = ByteBufferPool.PopPacket(packet.Data); //不需要只包含用户信息的数据包 byte[] descData = buffer.PopByteArray(Marshal.SizeOf(typeof(CMD_GP_ClientUpdate))); CMD_GP_ClientUpdate version = GameConvert.ByteToStruct <CMD_GP_ClientUpdate>(descData); while (true) { string str = ""; ushort type = ProtoHelper.ReadDescDataString(ref buffer, ref str); if (type == 0) { break; } switch (type) { case CommonDefine.DTP_GP_CDN: { GameApp.GameData.CDN = str; break; } case CommonDefine.DTP_GP_OFFICESITE_URL: { GameApp.GameData.OfficeSiteUrl = str; break; } case CommonDefine.DTP_GP_BACK_STORGE_URL: { GameApp.GameData.BackStorgeUrl = str; break; } case CommonDefine.DTP_GP_MODULE_INFO: { GameApp.ModuleMgr.ApplyDataFromStr(str); break; } } } ByteBufferPool.DropPacket(buffer); GameApp.Account.CallVersionInfoEvent(version.dwVersion); }
private void OnUserEnterResp(Packet packet) { int dataStruct = Marshal.SizeOf(typeof(tagUserInfoHead)); if (packet.DataSize < dataStruct) { Debug.LogWarning("data error!"); return; } tagUserInfoHead userInfo = GameConvert.ByteToStruct <tagUserInfoHead>(packet.Data); PlayerInfo player = ProtoHelper.InitPlayerInfo(userInfo); if (player.ID == GameApp.GameData.UserInfo.UserID) { GameApp.GameData.UserInfo.SetSitInfo(player.DeskNO, player.DeskStation); } ByteBuffer buffer = ByteBufferPool.PopPacket(packet.Data); buffer.Position = dataStruct; while (true) { string str = ""; ushort type = ProtoHelper.ReadDescDataString(ref buffer, ref str); if (type == 0) { break; } switch (type) { case CommonDefine.DTP_GR_NICK_NAME: { player.NickName = str; break; } } } ByteBufferPool.DropPacket(buffer); GameApp.GameSrv.AddPlayer(player); GameApp.GameSrv.CallUserEnterEvent(player); }
void OnLogonSuccess(Packet packet) { int dataStruct = Marshal.SizeOf(typeof(CMD_GP_LogonSuccess)); com.QH.QPGame.GameUtils.Logger.Net.Log("logon success. size:" + packet.DataSize + "/" + dataStruct); if (packet.DataSize < dataStruct) { com.QH.QPGame.GameUtils.Logger.Net.LogError(" CMD_GP_LogonSuccess data error!"); return; } ByteBuffer buffer = ByteBufferPool.PopPacket(packet.Data); byte[] descData = buffer.PopByteArray(Marshal.SizeOf(typeof(CMD_GP_LogonSuccess))); CMD_GP_LogonSuccess loginData = GameConvert.ByteToStruct <CMD_GP_LogonSuccess>(descData); GameApp.GameData.UserInfo = ProtoHelper.InitUserInfo(loginData); com.QH.QPGame.GameUtils.Logger.Net.Log("User:"******" Loged|Money:" + loginData.lUserScore + "|Bank:" + loginData.lUserInsure); while (true) { string str = ""; ushort type = ProtoHelper.ReadDescDataString(ref buffer, ref str); if (type == 0) { break; } switch (type) { case CommonDefine.DTP_GP_UI_UNDER_WRITE: { GameApp.GameData.UserInfo.UnderWrite = str; break; } } } ByteBufferPool.DropPacket(buffer); GameApp.Account.CallLogonSuccessEvent(); }