public bool ReadReplay(ReadMode mode) { ReplayStream = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.Read); // byte flag = (byte)ReplayStream.ReadByte(); Reader = new ReplayReader(ReplayStream); try { // Read File if (mode == ReadMode.HeaderOnly) { Header = Reader.ReadHeader(); ReplayStream.Flush(); Reader.Close(); } else if (mode == ReadMode.All) { // Header Header = Reader.ReadHeader(); // Sections List <ReplaySection> secs = new List <ReplaySection>(); while (!Reader.EOF()) { ReplaySection se = Reader.ReadSection(); secs.Add(se); } // ReplayStream.Flush(); Reader.Close(); ParseSections(secs); } else if (mode == ReadMode.AllExceptData) { // Header Header = Reader.ReadHeader(); // Sections List <ReplaySection> secs = new List <ReplaySection>(); while (!Reader.EOF()) { ReplaySection se = Reader.ReadSection(); if (se.Type != SectionType.Keys && se.Type != SectionType.Chunks) { secs.Add(se); } } // ReplayStream.Flush(); Reader.Close(); ParseSections(secs); } else if (mode == ReadMode.DataOnly) { // Header Header = Reader.ReadHeader(); // Sections List <ReplaySection> secs = new List <ReplaySection>(); while (!Reader.EOF()) { ReplaySection se = Reader.ReadSection(); if (se.Type == SectionType.Keys || se.Type == SectionType.Chunks) { secs.Add(se); } } // ReplayStream.Flush(); Reader.Close(); ParseSections(secs); } return(true); } catch { } finally { } return(false); }