//-----------------------------------------------------------------------------
// Purpose: 
// Input  : pszFilename - 
// Output : int
//-----------------------------------------------------------------------------
int CPrefabLibraryRMF::Load(LPCTSTR pszFilename)
{
	m_eType = LibType_HalfLife;

	// open file
	m_file.open(pszFilename, ios::in | ios::binary | ios::nocreate);
	m_strOpenFileName = pszFilename;
	
	if(!m_file.is_open())
		return -1;

	char szBuf[128];

	// read string header
	m_file.read(szBuf, strlen(pLibHeader));
	if(strncmp(szBuf, pLibHeader, strlen(pLibHeader)))
	{
		// return
		return -1;
	}

	// read binary header
	PrefabLibraryHeader plh;
	m_file.read((char*)&plh, sizeof(plh));
	strcpy(szNotes, plh.szNotes);

	// set name from filename
	SetNameFromFilename(pszFilename);

	// read directory
	PrefabHeader *ph = new PrefabHeader[plh.dwNumEntries];
	m_dwDirOffset = plh.dwDirOffset;
	m_file.seekg(plh.dwDirOffset);
	m_file.read((char*)ph, plh.dwNumEntries * sizeof(PrefabHeader));

	//
	// Read each prefab.
	//
	for(DWORD i = 0; i < plh.dwNumEntries; i++)
	{
		ASSERT(ph[i].iType == pt3D);
		CPrefabRMF *pPrefab = new CPrefabRMF;

		// seek to prefab
		m_file.seekg(ph[i].dwOffset);
		pPrefab->Init(m_file);

		// set its other info frm the dir entry
		pPrefab->SetName(ph[i].szName);
		pPrefab->SetNotes(ph[i].szNotes);
		pPrefab->dwFileSize = ph[i].dwSize;
		pPrefab->dwFileOffset = ph[i].dwOffset;
		
		Add(pPrefab);
	}

	// delete directory
	delete[] ph;

	return 1;
}