124 lines
2.9 KiB
C++
124 lines
2.9 KiB
C++
#include "stdafx.h"
|
|
#include "SGameAvatarAddOnMgr.h"
|
|
#include "SGameForceSphereFX.h"
|
|
|
|
#include "SDebug_Util.h"
|
|
|
|
SGameAvatarAddOnMgr::SGameAvatarAddOnMgr() : m_pGameObj( NULL ),
|
|
m_pSeqModel( NULL ),
|
|
m_nAddOnType( 0 ),
|
|
m_hCreaturehandle( 0 ),
|
|
m_bRenderFlag( true )
|
|
{
|
|
memset( m_pAddOnList, 0, sizeof( m_pAddOnList ) );
|
|
}
|
|
|
|
SGameAvatarAddOnMgr::~SGameAvatarAddOnMgr()
|
|
{
|
|
std::vector< SGameAvatarAddOnMgr* >::iterator iter = m_vAddOnMgr.begin();
|
|
for( ; iter != m_vAddOnMgr.end() ; )
|
|
{
|
|
SAFE_DELETE( (*iter) );
|
|
iter = m_vAddOnMgr.erase( iter );
|
|
}
|
|
|
|
memset( m_pAddOnList, 0, sizeof( m_pAddOnList ) );
|
|
|
|
m_pGameObj = NULL;
|
|
SAFE_DELETE( m_pSeqModel );
|
|
}
|
|
|
|
void SGameAvatarAddOnMgr::SetGameObject( SGameAvatarEx* pGameObj )
|
|
{
|
|
m_pGameObj = pGameObj;
|
|
}
|
|
|
|
void SGameAvatarAddOnMgr::SetCreatureHandle( ADD_ON_TYPE nAddOnType, AR_HANDLE handle )
|
|
{
|
|
if( SGAME_ADDON_MAX > nAddOnType )
|
|
{
|
|
if( m_pAddOnList[nAddOnType] )
|
|
{
|
|
m_pAddOnList[nAddOnType]->m_hCreaturehandle = handle;
|
|
}
|
|
}
|
|
}
|
|
|
|
void SGameAvatarAddOnMgr::AddAddOn( SGameAvatarAddOnMgr* pAddOn )
|
|
{
|
|
if( pAddOn && pAddOn->GetAddOnType() < SGAME_ADDON_MAX )
|
|
{
|
|
pAddOn->SetGameObject( m_pGameObj );
|
|
pAddOn->Initialize();
|
|
m_vAddOnMgr.push_back( pAddOn );
|
|
|
|
m_pAddOnList[pAddOn->GetAddOnType()] = pAddOn;
|
|
}
|
|
else
|
|
assert( false && "SGameAvatarAddOnMgr::AddAddOn" );
|
|
}
|
|
|
|
void SGameAvatarAddOnMgr::RemoveAddOn( ADD_ON_TYPE nAddOnType )
|
|
{
|
|
std::vector< SGameAvatarAddOnMgr* >::iterator iter = m_vAddOnMgr.begin();
|
|
for( ; iter != m_vAddOnMgr.end() ; )
|
|
{
|
|
if( (*iter)->GetAddOnType() == nAddOnType )
|
|
{
|
|
m_pAddOnList[nAddOnType] = NULL;
|
|
|
|
SAFE_DELETE( (*iter) );
|
|
iter = m_vAddOnMgr.erase( iter );
|
|
|
|
break;
|
|
}
|
|
else
|
|
++iter;
|
|
}
|
|
}
|
|
|
|
void SGameAvatarAddOnMgr::SetAddOnRenderFlag( ADD_ON_TYPE nAddOnType, bool bRenderFlag )
|
|
{
|
|
if( nAddOnType < SGAME_ADDON_MAX )
|
|
{
|
|
if( m_pAddOnList[nAddOnType] )
|
|
m_pAddOnList[nAddOnType]->SetRenderFlag( bRenderFlag );
|
|
}
|
|
else
|
|
assert( false && "SGameAvatarAddOnMgr::AddAddOn" );
|
|
}
|
|
|
|
bool SGameAvatarAddOnMgr::IsActivateAddOn( ADD_ON_TYPE nAddOnType )
|
|
{
|
|
if( nAddOnType < SGAME_ADDON_MAX )
|
|
return m_pAddOnList[nAddOnType] != NULL ? true : false;
|
|
|
|
assert( false && "SGameAvatarAddOnMgr::AddAddOn" );
|
|
return false;
|
|
}
|
|
|
|
SGameAvatarAddOnMgr* SGameAvatarAddOnMgr::GetAddOn( ADD_ON_TYPE nAddOnType )
|
|
{
|
|
if( nAddOnType < SGAME_ADDON_MAX )
|
|
return m_pAddOnList[nAddOnType];
|
|
|
|
return NULL;
|
|
}
|
|
|
|
void SGameAvatarAddOnMgr::Process( DWORD dwTime )
|
|
{
|
|
std::vector< SGameAvatarAddOnMgr* >::iterator iter = m_vAddOnMgr.begin();
|
|
for( ; iter != m_vAddOnMgr.end(); ++iter )
|
|
{
|
|
(*iter)->Process( dwTime );
|
|
}
|
|
}
|
|
|
|
void SGameAvatarAddOnMgr::Render( class KViewportObject** ppViewportList, int nViewportCount )
|
|
{
|
|
std::vector< SGameAvatarAddOnMgr* >::iterator iter = m_vAddOnMgr.begin();
|
|
for( ; iter != m_vAddOnMgr.end(); ++iter )
|
|
{
|
|
(*iter)->Render( ppViewportList, nViewportCount );
|
|
}
|
|
} |