internal PsbNumber(PsbObjType objType, BinaryReader br) { Data = new byte[8]; NumberType = PsbNumberType.Int; switch (objType) { case PsbObjType.NumberN0: IntValue = 0; return; case PsbObjType.NumberN1: Data = br.ReadBytes(1).UnzipNumberBytes(); return; case PsbObjType.NumberN2: Data = br.ReadBytes(2).UnzipNumberBytes(); return; case PsbObjType.NumberN3: Data = br.ReadBytes(3).UnzipNumberBytes(); return; case PsbObjType.NumberN4: Data = br.ReadBytes(4).UnzipNumberBytes(); return; case PsbObjType.NumberN5: Data = br.ReadBytes(5).UnzipNumberBytes(); return; case PsbObjType.NumberN6: Data = br.ReadBytes(6).UnzipNumberBytes(); return; case PsbObjType.NumberN7: Data = br.ReadBytes(7).UnzipNumberBytes(); return; case PsbObjType.NumberN8: Data = br.ReadBytes(8).UnzipNumberBytes(); return; case PsbObjType.Float0: NumberType = PsbNumberType.Float; //Data = br.ReadBytes(1); Data = BitConverter.GetBytes(0.0f); return; case PsbObjType.Float: NumberType = PsbNumberType.Float; Data = br.ReadBytes(4); return; case PsbObjType.Double: NumberType = PsbNumberType.Double; Data = br.ReadBytes(8); return; } }
public static PsbNumber Zero => new PsbNumber(0); //always create a new PsbNumber to prevent value modified! internal PsbNumber(PsbObjType objType, BinaryReader br) { switch (objType) { case PsbObjType.NumberN0: case PsbObjType.NumberN1: case PsbObjType.NumberN2: case PsbObjType.NumberN3: case PsbObjType.NumberN4: NumberType = PsbNumberType.Int; Data = new byte[4]; break; case PsbObjType.NumberN5: case PsbObjType.NumberN6: case PsbObjType.NumberN7: case PsbObjType.NumberN8: NumberType = PsbNumberType.Long; Data = new byte[8]; break; case PsbObjType.Float0: case PsbObjType.Float: NumberType = PsbNumberType.Float; break; case PsbObjType.Double: NumberType = PsbNumberType.Double; break; default: break; //throw new ArgumentOutOfRangeException(nameof(objType), objType, null); } switch (objType) { case PsbObjType.NumberN0: IntValue = 0; return; case PsbObjType.NumberN1: br.ReadAndUnzip(1, Data); return; case PsbObjType.NumberN2: br.ReadAndUnzip(2, Data); return; case PsbObjType.NumberN3: br.ReadAndUnzip(3, Data); return; case PsbObjType.NumberN4: br.ReadAndUnzip(4, Data); return; case PsbObjType.NumberN5: br.ReadAndUnzip(5, Data); return; case PsbObjType.NumberN6: br.ReadAndUnzip(6, Data); return; case PsbObjType.NumberN7: br.ReadAndUnzip(7, Data); return; case PsbObjType.NumberN8: br.ReadAndUnzip(8, Data); return; case PsbObjType.Float0: Data = BitConverter.GetBytes(0.0f); return; case PsbObjType.Float: Data = br.ReadBytes(4); return; case PsbObjType.Double: Data = br.ReadBytes(8); return; } }