public static EffectListEntry BuildEffectListEntry(BinaryReader bnr, EffectListEntry eflentry) { //Specific file type work goes here! int ID = 0; //Header Stuff. eflentry.Magic = ByteUtilitarian.BytesToString(bnr.ReadBytes(4), eflentry.Magic); eflentry.Version = bnr.ReadInt32(); eflentry.FileSize = bnr.ReadInt32(); eflentry.FPS = Convert.ToInt32(bnr.ReadSingle()); eflentry.EntryCountA = bnr.ReadInt16(); eflentry.EntryCountB = bnr.ReadInt16(); eflentry.CountXor = bnr.ReadInt32(); eflentry.Unknown18 = bnr.ReadInt32(); eflentry.Unknown1C = bnr.ReadInt32(); eflentry.Buffer10 = bnr.ReadInt32(); eflentry.Buffer11 = bnr.ReadInt32(); eflentry.Buffer12 = bnr.ReadInt32(); eflentry.Buffer13 = bnr.ReadInt32(); eflentry.Effects = new List <EffectNode>(); int PrevOffset = Convert.ToInt32(bnr.BaseStream.Position); int Iterator = 0; try { for (int i = 0; i < eflentry.EntryCountA; i++) { EffectNode fx = new EffectNode(); fx = EffectNode.BuildEffect(fx, i, bnr, eflentry, PrevOffset); eflentry.Effects.Add(fx); ID++; PrevOffset = PrevOffset + 4; bnr.BaseStream.Position = PrevOffset; } } catch (Exception ex) { MessageBox.Show("The efl at index: " + ID + " inside the file\n" + eflentry.TrueName + " threw out an error.\nAs long as you do not modify the named file you should be able to save changes made to other files inside this arc and the file will not be modified.", "Uh-Oh"); } return(eflentry); }