/// <exception cref="TextFormatNotSupportedException">Text-formatted GBX files are not supported.</exception> internal bool Read(GameBoxReader reader) { if (!reader.HasMagic(GameBox.Magic)) { Log.Write("GBX magic missing! Corrupted file or not a GBX file.", ConsoleColor.Red); return(false); } Log.Write("GBX recognized!", ConsoleColor.Green); Version = reader.ReadInt16(); Log.Write("- Version: " + Version.ToString()); if (Version >= 3) { ByteFormat = (GameBoxByteFormat)reader.ReadByte(); Log.Write("- Byte format: " + ByteFormat.ToString()); if (ByteFormat == GameBoxByteFormat.Text) { throw new TextFormatNotSupportedException(); } CompressionOfRefTable = (GameBoxCompression)reader.ReadByte(); Log.Write("- Ref. table compression: " + CompressionOfRefTable.ToString()); CompressionOfBody = (GameBoxCompression)reader.ReadByte(); Log.Write("- Body compression: " + CompressionOfBody.ToString()); if (Version >= 4) { UnknownByte = (char)reader.ReadByte(); Log.Write("- Unknown byte: " + UnknownByte.ToString()); } ID = CMwNod.Remap(reader.ReadUInt32()); Log.Write("- Class ID: 0x" + ID.Value.ToString("X8")); if (Version >= 6) { var userDataSize = reader.ReadInt32(); Log.Write($"- User data size: {(userDataSize / 1024f).ToString()} kB"); if (userDataSize > 0) { UserData = reader.ReadBytes(userDataSize); } } NumNodes = reader.ReadInt32(); Log.Write("- Number of nodes: " + NumNodes.ToString()); } Log.Write("Header completed!", ConsoleColor.Green); return(true); }
/// <summary> /// Converts number to readable size string in SI format, i.e. 1024 converts to "1.02 KB" /// </summary> public static string ToFileSizeUiString(this long number) { return(ByteFormat.ToString(number, ByteFormat.Standard.Si, null)); }
/// <summary> /// Converts number to readable size string in IEC format, i.e. 1024 converts to "1.02 KiB" /// </summary> public static string ToFileSizeString(this int number) { return(ByteFormat.ToString(number, ByteFormat.Standard.Iec, null)); }