/**
* Custom Model
* @version: 8-26-05
* @author Joseph 'Pcjoe' Florencio
*/

#ifndef CUSTOMMODEL_H
#define CUSTOMMODEL_H

class CReplaceMDL
{
public:
	CReplaceMDL( );

	/*
	* Accessors
	*/
	std::string getOriginalModel( void ) { return m_strOriginal; }
	void setOriginalModel( std::string strModel ) { m_strOriginal = strModel; }

	std::string getReplaceModel( void ) { return m_strReplace; }
	void setReplaceModel( std::string strReplace ) { m_strReplace = strReplace; }

	model_s *getModel( void ) { return m_pReplaceModel; }
	void setModel( model_s *pModel ) { m_pReplaceModel = pModel; }
private:
	std::string m_strOriginal;
	std::string m_strReplace;
	model_s	*m_pReplaceModel;
};

class TiXmlElement;
class CCustomModel
{
public:
	// Parse XML
	void parseXML( TiXmlElement *pData, std::string strClass );

	// Get Replacement
	model_s *getReplacement( std::string strModel );

	/*
	* Accessors
	*/
	// Custom Model Name (used in vgui)
	std::string getName( void ) { return m_strName; }
	void setName( std::string strName ) { m_strName = strName; }

	// Directory name (used in everything else)
	std::string getDirectoryName( void ) { return m_strDirName; }
	void setDirectoryName( std::string strName ) { m_strDirName = strName; }

private:
	std::string	m_strName;
	std::string	m_strDirName;
	std::list<CReplaceMDL>	m_Models;
};
#endif