private void loadWorkbenchFile(StreamReader reader)
{
if (reader == null)
return;
// using (StreamReader reader = new StreamReader(File.OpenRead(filename)))
using (reader)
{
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
try
{
if (IsSectionStart(line))
{
string name = line.Substring(3, 4);
CompanionFileType fileType = CompanionFileType.Unknown;
if (Enum.TryParse<CompanionFileType>(name.ToUpper(), out fileType) && fileType != CompanionFileType.Unknown)
{
int recordCount = CompanionFile.RecordCount(fileType);
int recordSize = CompanionFile.RecordSize(fileType);
List<CompanionFile> cfList = new List<CompanionFile>();
byte[] data = LoadSectionFromReader(reader, recordCount * recordSize, fileType);
if (data.Length == (recordCount * recordSize))
{
for (int i = 0; i < recordCount; i++)
{
CompanionFile cf = CompanionFile.CreateCompanionFile(fileType, i * recordSize, data);
cf.Index = i;
cfList.Add(cf);
}
}
Files.Add(fileType, cfList);
}
}
else
break;
}
catch (Exception ex)
{
Console.WriteLine("Error parsing Workbench file: " + ex.Message);
}
}
reader.Close();
reader.Dispose();
}
}