public PackData(ushort protocol, object pack, EPackType pack_type, Type type) { Protocol = protocol; Pack = pack; PackType = pack_type; this.Type = type; }
public static string ToStringCommon(object value, string space = "") { if (value == null) { var nullArray = new byte[1] { (byte)EPackType.NULL, }; return("null"); } string str = ""; var t = value.GetType(); EPackType code = EPackType.UNDEFINED; if (PackType.typeToJumpCode.TryGetValue(t, out code) || PackType.typeToJumpCode.TryGetValue(t.BaseType, out code)) { switch (code) { case EPackType.BOOL: case EPackType.CHAR: case EPackType.BYTE: case EPackType.INT16: case EPackType.UINT16: case EPackType.INT32: case EPackType.UINT32: case EPackType.INT64: case EPackType.UINT64: case EPackType.SINGLE: case EPackType.DOUBLE: case EPackType.STRING: str += (space + value + "\n"); break; case EPackType.BYTEARRAY: // str += (space + BytesToString((byte[])value)); str += $"{space}[{BytesToString((byte[]) value)}]\n"; break; case EPackType.ARRAY: str += (space + " [\n"); var composeData = (Array)value; for (int i = 0; i < composeData.Length; i++) { var itemValue = composeData.GetValue(i); str += $"{space} [{i.ToString()}] : {ToStringCommon(itemValue, space+" ")}"; } str += (space + " ]\n"); break; default: break; } } return(str); }
public frmRepack( EPackType PackType, string SavePath, ShaiyaData Data ) { InitializeComponent(); mPackType = PackType; if( mPackType == EPackType.SaveUpdates ) this.Text = "Daten speichern..."; else this.Text = "Daten neu packen..."; mSavePath = SavePath; mData = Data; }
public frmRepack(EPackType PackType, string SavePath, ShaiyaData Data) { InitializeComponent(); mPackType = PackType; if (mPackType == EPackType.SaveUpdates) { this.Text = "Daten speichern..."; } else { this.Text = "Daten neu packen..."; } mSavePath = SavePath; mData = Data; }
private static byte[] pack_common(object value) { if (value == null) { var nullArray = new byte[1] { (byte)EPackType.NULL, }; return(nullArray); } var t = value.GetType(); EPackType code = EPackType.UNDEFINED; if (PackType.typeToJumpCode.TryGetValue(t, out code) || PackType.typeToJumpCode.TryGetValue(t.BaseType, out code)) { var codeArray = new byte[1] { (byte)code, }; byte[] tempArray = new byte[] {}; switch (code) { case EPackType.BOOL: tempArray = pack_bool_data((bool)value); break; // case EPackType.CHAR: // tempArray = pack_char_data((char) value); // break; case EPackType.BYTE: tempArray = pack_Byte_data((byte)value); break; case EPackType.INT16: tempArray = pack_int16_data((Int16)value); break; case EPackType.UINT16: tempArray = pack_uint16_data((UInt16)value); break; case EPackType.INT32: tempArray = pack_int32_data((Int32)value); break; case EPackType.UINT32: tempArray = pack_uint32_data((UInt32)value); break; case EPackType.INT64: tempArray = pack_int64_data((Int64)value); break; case EPackType.UINT64: tempArray = pack_uint64_data((UInt64)value); break; case EPackType.SINGLE: tempArray = pack_float_data((Single)value); break; case EPackType.DOUBLE: tempArray = pack_double_data((Double)value); break; case EPackType.STRING: tempArray = pack_string_data((string)value); break; case EPackType.BYTEARRAY: tempArray = pack_bytes_data((byte[])value); break; case EPackType.ARRAY: var composeData = (Array)value; tempArray = copyBytesArray(tempArray, new byte[1] { (byte)composeData.Length, }); for (int i = 0; i < composeData.Length; i++) { var itemValue = composeData.GetValue(i); var item_bytes = pack_common(itemValue); tempArray = copyBytesArray(tempArray, item_bytes); } break; default: throw new InvalidOperationException("Not supported primitive object resolver. type:" + t.Name); } codeArray = copyBytesArray(codeArray, tempArray); if (code == EPackType.UNDEFINED) { return(null); } return(codeArray); } return(null); }