| | |
| | | }
|
| | | }
|
| | |
|
| | | static byte[] vCmdBytes = new byte[2];
|
| | | /// <summary>
|
| | | /// 转换一个协议包
|
| | | /// </summary>
|
| | | /// <param name="vBytes"></param>
|
| | | /// <returns></returns>
|
| | | public static GameNetPackBasic TransPack(byte[] vBytes)
|
| | | public static GameNetPackBasic TransPack( ushort cmd, byte[] vBytes)
|
| | | {
|
| | | vBytes = GameNetEncode.BaseXorSub(vBytes);
|
| | |
|
| | | #if UNITY_EDITOR
|
| | | int length = vBytes.Length;
|
| | | string vStr = "";
|
| | |
| | | }
|
| | | #endif
|
| | |
|
| | | Array.Copy(vBytes, 0, vCmdBytes, 0, 2);
|
| | | ushort vPackCmd = (ushort)((ushort)(vCmdBytes[0] << 8) + vCmdBytes[1]);
|
| | |
|
| | | if (packageTable.ContainsKey(vPackCmd)) // 存在相应的登记
|
| | | if (packageTable.ContainsKey(cmd)) // 存在相应的登记
|
| | | {
|
| | | var packageType = packageTable[vPackCmd];
|
| | | var packageType = packageTable[cmd];
|
| | | // 实例化并强转为协议包基类
|
| | | var packageInstance = packageType.Assembly.CreateInstance(packageType.Name) as GameNetPackBasic;
|
| | | packageInstance.ReadFromBytes(vBytes);// 解析内容
|
| | |
| | | NetPkgCtl.AddNetPkg(vStr, NetPkgType.Server, packageInstance.ToString(), FieldPrint.PrintFields(packageInstance), FieldPrint.PrintFieldsExpand(packageInstance, true));
|
| | | #endif
|
| | | return packageInstance;
|
| | | }
|
| | | else
|
| | | {
|
| | | #if UNITY_EDITOR
|
| | | NetPkgCtl.AddNetPkg(vStr, NetPkgType.Server, string.Empty, string.Empty, null);
|
| | | DebugEx.LogFormat("C#层收到未登记的解包协议:{0},{1}", vCmdBytes[0].ToString("x2"), vCmdBytes[1].ToString("x2"));
|
| | | #endif
|
| | | }
|
| | | return null;
|
| | | }
|