static MultiData()
{
string idxPath = Core.FindDataFile( "multi.idx" );
string mulPath = Core.FindDataFile( "multi.mul" );
if ( File.Exists( idxPath ) && File.Exists( mulPath ) )
{
m_Index = new FileStream( idxPath, FileMode.Open, FileAccess.Read, FileShare.Read );
m_IndexReader = new BinaryReader( m_Index );
m_Stream = new FileStream( mulPath, FileMode.Open, FileAccess.Read, FileShare.Read );
m_StreamReader = new BinaryReader( m_Stream );
m_Components = new MultiComponentList[(int)(m_Index.Length / 12)];
string vdPath = Core.FindDataFile( "verdata.mul" );
if ( File.Exists( vdPath ) )
{
using ( FileStream fs = new FileStream( vdPath, FileMode.Open, FileAccess.Read, FileShare.Read ) )
{
BinaryReader bin = new BinaryReader( fs );
int count = bin.ReadInt32();
for ( int i = 0; i < count; ++i )
{
int file = bin.ReadInt32();
int index = bin.ReadInt32();
int lookup = bin.ReadInt32();
int length = bin.ReadInt32();
int extra = bin.ReadInt32();
if ( file == 14 && index >= 0 && index < m_Components.Length && lookup >= 0 && length > 0 )
{
bin.BaseStream.Seek( lookup, SeekOrigin.Begin );
m_Components[index] = new MultiComponentList( bin, length / 12 );
bin.BaseStream.Seek( 24 + (i * 20), SeekOrigin.Begin );
}
}
bin.Close();
}
}
}
else
{
Console.WriteLine( "Warning: Multi data files not found" );
m_Components = new MultiComponentList[0];
}
}
}