using System.IO; namespace FSO.Files.Formats.IFF { /// <summary> /// An IFF is made up of chunks. /// </summary> public abstract class IffChunk { public ushort ChunkID; public ushort ChunkFlags; public string ChunkType; //just making it easier to access public string ChunkLabel; public bool ChunkProcessed; public byte[] OriginalData; //IDE ONLY: always contains base data for any chunk. public ushort OriginalID; public bool AddedByPatch; public string OriginalLabel; public byte[] ChunkData; public IffFile ChunkParent; public ChunkRuntimeState RuntimeInfo = ChunkRuntimeState.Normal; /// <summary> /// Reads this chunk from an IFF. /// </summary> /// <param name="iff">The IFF to read from.</param> /// <param name="stream">The stream to read from.</param> public abstract void Read(IffFile iff, Stream stream); /// <summary> /// The name of this chunk. /// </summary> /// <returns>The name of this chunk as a string.</returns> public override string ToString() { return "#" + ChunkID.ToString() + " " + ChunkLabel; } /// <summary> /// Attempts to write this chunk to a stream (presumably an IFF or PIFF) /// </summary> /// <param name="iff"></param> /// <param name="stream"></param> /// <returns>True if data has been written, false if not. </returns> public virtual bool Write(IffFile iff, Stream stream) { return false; } public virtual void Dispose() { } } }