| | |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | using System; |
| | | using System.Text; |
| | | // B4 30 查看战报结果 #tagSCTurnFightReportRet |
| | | |
| | | |
| | |
| | | HB430_tagSCTurnFightReport vNetData = vNetPack as HB430_tagSCTurnFightReport; |
| | | |
| | | // 战报结果 |
| | | string guid = vNetData.GUID; |
| | | |
| | | string guid = UIHelper.ServerStringTrim(vNetData.GUID); |
| | | //约定 B430 内容(小包1长度WORD + 包1 + 小包2长度WORD + 包2) |
| | | try |
| | | { |
| | | byte[] reportBytes = GameNetPackBasic.StrEncoding.GetBytes(vNetData.Report); |
| | | |
| | | int vReadIndex = 0; |
| | | byte[] vPackBytes; |
| | | int vLeavingLeng = 0; |
| | | int vBodyLeng = 0; |
| | | int vTotalLeng = reportBytes.Length; |
| | | int vTotalLeng = vNetData.Report.Length; |
| | | |
| | | while (vReadIndex < vTotalLeng) |
| | | { |
| | | if (vLeavingLeng < 6) |
| | | vLeavingLeng = vTotalLeng - vReadIndex; |
| | | if (vLeavingLeng < 4) |
| | | { |
| | | Debug.LogError("DTCB430_tagSCTurnFightReport: vLeavingLeng < 6 解包失败"); |
| | | //包头至少需要4字节 |
| | | Debug.LogError("DTCB430_tagSCTurnFightReport: vLeavingLeng < 2 解包失败"); |
| | | break; |
| | | } |
| | | |
| | | vBodyLeng = BitConverter.ToInt32(reportBytes, vReadIndex + 2); |
| | | if (vBodyLeng > vLeavingLeng - 6)// 未完整的包 报错 |
| | | //约定小封包的长度 |
| | | vBodyLeng = BitConverter.ToInt16(vNetData.reportBytes, vReadIndex); |
| | | if (vBodyLeng > vLeavingLeng)// 未完整的包 报错 |
| | | { |
| | | Debug.LogError("DTCB430_tagSCTurnFightReport: vBodyLeng > vLeavingLeng - 6 解包失败"); |
| | | Debug.LogError("DTCB430_tagSCTurnFightReport: vBodyLeng > vLeavingLeng解包失败"); |
| | | break; |
| | | } |
| | | |
| | | vPackBytes = new byte[vBodyLeng]; |
| | | Array.Copy(reportBytes, vReadIndex + 6, vPackBytes, 0, vBodyLeng); |
| | | vPackBytes = encoder.BaseXorSub(vPackBytes); |
| | | Array.Copy(vNetData.reportBytes, vReadIndex + 2, vPackBytes, 0, vBodyLeng); |
| | | |
| | | Array.Copy(vPackBytes, 0, vCmdBytes, 0, 2); |
| | | var cmd = (ushort)((ushort)(vCmdBytes[0] << 8) + vCmdBytes[1]); |
| | | bool isRegist = false; // 未注册封包处理 |
| | | |
| | | Debug.Log("DTCB430_tagSCTurnFightReport: 拆解分包 长度:" + vBodyLeng + " cmd:" + cmd); |
| | | |
| | | if (PackageRegedit.Contain(cmd)) |
| | | { |
| | | GameNetPackBasic vNetpack = PackageRegedit.TransPack(ServerType.Main, cmd, vPackBytes); |
| | | GameNetPackBasic vNetpack = PackageRegedit.TransPack(ServerType.B430, cmd, vPackBytes); |
| | | if (vNetpack != null) |
| | | { |
| | | BattleManager.Instance.PushPackage(guid, vNetpack); |
| | |
| | | } |
| | | } |
| | | |
| | | vReadIndex += 6 + vBodyLeng; |
| | | vReadIndex += 2 + vBodyLeng; |
| | | |
| | | // 未注册封包处理 |
| | | if (!isRegist) |
| | | { |
| | | #if UNITY_EDITOR |
| | | PackageRegedit.TransPack(ServerType.Main, cmd, vPackBytes); |
| | | PackageRegedit.TransPack(ServerType.B430, cmd, vPackBytes); |
| | | #endif |
| | | } |
| | | } |