Esempio n. 1
0
 public PackData(ushort protocol, object pack, EPackType pack_type, Type type)
 {
     Protocol  = protocol;
     Pack      = pack;
     PackType  = pack_type;
     this.Type = type;
 }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
		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;
		}
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
    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);
    }