Files
FC1/Editor/BaseLibrary.cpp
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

144 lines
3.6 KiB
C++

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2002.
// -------------------------------------------------------------------------
// File name: baselibrary.cpp
// Version: v1.00
// Created: 22/1/2003 by Timur.
// Compilers: Visual Studio.NET
// Description:
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#include "StdAfx.h"
#include "BaseLibrary.h"
#include "BaseLibraryItem.h"
#include "BaseLibraryManager.h"
//////////////////////////////////////////////////////////////////////////
// CBaseLibrary implementation.
//////////////////////////////////////////////////////////////////////////
CBaseLibrary::CBaseLibrary( CBaseLibraryManager *pManager )
{
m_pManager = pManager;
m_bModified = false;
m_bLevelLib = false;
}
//////////////////////////////////////////////////////////////////////////
CBaseLibrary::~CBaseLibrary()
{
m_items.clear();
}
//////////////////////////////////////////////////////////////////////////
IDataBaseManager* CBaseLibrary::GetManager()
{
return m_pManager;
}
//////////////////////////////////////////////////////////////////////////
void CBaseLibrary::RemoveAllItems()
{
AddRef();
for (int i = 0; i < m_items.size(); i++)
{
// Clear library item.
m_items[i]->m_library = NULL;
}
m_items.clear();
Release();
}
//////////////////////////////////////////////////////////////////////////
void CBaseLibrary::SetName( const CString &name )
{
m_name = name;
/*
// Make a file name from name of library.
CString path = Path::GetPath( m_filename );
m_filename = m_name;
m_filename.Replace( ' ','_' );
m_filename = path + m_filename + ".xml";
*/
SetModified();
}
//////////////////////////////////////////////////////////////////////////
const CString& CBaseLibrary::GetName() const
{
return m_name;
}
//////////////////////////////////////////////////////////////////////////
bool CBaseLibrary::Save()
{
return true;
}
//////////////////////////////////////////////////////////////////////////
bool CBaseLibrary::Load( const CString &filename )
{
m_filename = filename;
SetModified(false);
return true;
}
//////////////////////////////////////////////////////////////////////////
void CBaseLibrary::SetModified( bool bModified )
{
m_bModified = bModified;
}
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
void CBaseLibrary::AddItem( IDataBaseItem* item )
{
CBaseLibraryItem *pLibItem = (CBaseLibraryItem*)item;
// Check if item is already assigned to this library.
if (pLibItem->m_library != this)
{
pLibItem->m_library = this;
m_items.push_back( pLibItem );
SetModified();
m_pManager->RegisterItem( pLibItem );
}
}
//////////////////////////////////////////////////////////////////////////
IDataBaseItem* CBaseLibrary::GetItem( int index )
{
assert( index >= 0 && index < m_items.size() );
return m_items[index];
}
//////////////////////////////////////////////////////////////////////////
void CBaseLibrary::RemoveItem( IDataBaseItem* item )
{
for (int i = 0; i < m_items.size(); i++)
{
if (m_items[i] == item)
{
m_items.erase( m_items.begin()+i );
SetModified();
break;
}
}
}
//////////////////////////////////////////////////////////////////////////
IDataBaseItem* CBaseLibrary::FindItem( const CString &name )
{
for (int i = 0; i < m_items.size(); i++)
{
if (stricmp(m_items[i]->GetName(),name) == 0)
{
return m_items[i];
}
}
return NULL;
}