public Read ( uint version, |
||
version | uint | Version of the SPR2 that this frame belongs to. |
io | ||
guessedSize | uint | |
return | void |
/// <summary> /// Reads a SPR2 chunk from a stream. /// </summary> /// <param name="iff">An Iff instance.</param> /// <param name="stream">A Stream object holding a SPR2 chunk.</param> public override void Read(IffFile iff, Stream stream) { using (var io = IoBuffer.FromStream(stream, ByteOrder.LITTLE_ENDIAN)) { var version = io.ReadUInt32(); uint spriteCount = 0; if (version == 1000) { spriteCount = io.ReadUInt32(); DefaultPaletteID = io.ReadUInt32(); var offsetTable = new uint[spriteCount]; for (var i = 0; i < spriteCount; i++) { offsetTable[i] = io.ReadUInt32(); } Frames = new SPR2Frame[spriteCount]; for (var i = 0; i < spriteCount; i++) { var frame = new SPR2Frame(this); io.Seek(SeekOrigin.Begin, offsetTable[i]); var guessedSize = ((i + 1 < offsetTable.Length) ? offsetTable[i + 1] : (uint)stream.Length) - offsetTable[i]; frame.Read(version, io, guessedSize); Frames[i] = frame; } } else if (version == 1001) { DefaultPaletteID = io.ReadUInt32(); spriteCount = io.ReadUInt32(); Frames = new SPR2Frame[spriteCount]; for (var i = 0; i < spriteCount; i++) { var frame = new SPR2Frame(this); frame.Read(version, io, 0); Frames[i] = frame; } } } }
/// <summary> /// Reads a SPR2 chunk from a stream. /// </summary> /// <param name="iff">An Iff instance.</param> /// <param name="stream">A Stream object holding a SPR2 chunk.</param> public override void Read(IffFile iff, Stream stream) { using (var io = IoBuffer.FromStream(stream, ByteOrder.LITTLE_ENDIAN)) { var version = io.ReadUInt32(); uint spriteCount = 0; if (version == 1000) { spriteCount = io.ReadUInt32(); DefaultPaletteID = io.ReadUInt32(); var offsetTable = new uint[spriteCount]; for (var i = 0; i < spriteCount; i++) { offsetTable[i] = io.ReadUInt32(); } Frames = new SPR2Frame[spriteCount]; for (var i = 0; i < spriteCount; i++) { var frame = new SPR2Frame(this); io.Seek(SeekOrigin.Begin, offsetTable[i]); var guessedSize = ((i + 1 < offsetTable.Length) ? offsetTable[i + 1] : (uint)stream.Length) - offsetTable[i]; frame.Read(version, io, guessedSize); Frames[i] = frame; } } else if (version == 1001) { DefaultPaletteID = io.ReadUInt32(); spriteCount = io.ReadUInt32(); Frames = new SPR2Frame[spriteCount]; for (var i = 0; i < spriteCount; i++) { var frame = new SPR2Frame(this); frame.Read(version, io, 0); Frames[i] = frame; } } } }