#include "StdAfx.h" #include "EventSignalItem.h" #include "GlobalValue.h" #include "UnionValueProperty.h" #include "SundriesFuncEx.h" CEventSignalItem::CEventSignalItem( int nUniqueIndex ) { m_nUniqueIndex = nUniqueIndex; m_nParamUniqueIndex = 0; } CEventSignalItem::~CEventSignalItem() { SAFE_DELETE_PVEC( m_pVecList ); } bool CEventSignalItem::AddParameter( CUnionValueProperty *pVariable, bool bAllowUnique ) { m_pVecList.push_back( pVariable ); if( bAllowUnique ) { if( m_nParamUniqueIndex >= 256 ) { m_pVecList.erase( m_pVecList.end() - 1 ); return false; } m_nVecUniqueList.push_back( m_nParamUniqueIndex ); m_nParamUniqueIndex++; } return true; } void CEventSignalItem::RemoveParameter( CString &szStr ) { for( DWORD i=0; iGetDescription() == szStr ) { SAFE_DELETE( m_pVecList[i] ); m_pVecList.erase( m_pVecList.begin() + i ); m_nVecUniqueList.erase( m_nVecUniqueList.begin() + i ); } } } bool CEventSignalItem::IsExistParameter( CString &szStr, CString &szOriginalName ) { for( DWORD i=0; iGetDescription(), szStr ) == NULL ) { if( !szOriginalName.IsEmpty() && strcmp( m_pVecList[i]->GetDescription(), szOriginalName ) == NULL ) continue; return true; } } return false; } CUnionValueProperty *CEventSignalItem::GetParameterFromName( CString &szName ) { for( DWORD i=0; iGetDescription(), szName ) == NULL ) return m_pVecList[i]; } return NULL; } bool CEventSignalItem::Save( FILE *fp ) { WriteCString( &m_szName, fp ); fwrite( &m_nUniqueIndex, sizeof(int), 1, fp ); fwrite( &m_nParamUniqueIndex, sizeof(int), 1, fp ); fwrite( &m_nBackgroundColor, sizeof(int), 1, fp ); fwrite( &m_nBackgroundSideColor, sizeof(int), 1, fp ); fwrite( &m_nSelectColor, sizeof(int), 1, fp ); fwrite( &m_nSelectSideColor, sizeof(int), 1, fp ); DWORD dwCount = (int)m_pVecList.size(); fwrite( &dwCount, sizeof(DWORD), 1, fp ); for( DWORD i=0; iGetType(); CString szDesc = m_pVecList[i]->GetDescription(); CString szSubDesc = m_pVecList[i]->GetSubDescription(); fwrite( &m_nVecUniqueList[i], sizeof(int), 1, fp ); fwrite( &nType, sizeof(int), 1, fp ); WriteCString( &szDesc, fp ); WriteCString( &szSubDesc, fp ); } return true; } bool CEventSignalItem::Load( FILE *fp ) { ReadCString( &m_szName, fp ); fread( &m_nUniqueIndex, sizeof(int), 1, fp ); fread( &m_nParamUniqueIndex, sizeof(int), 1, fp ); fread( &m_nBackgroundColor, sizeof(int), 1, fp ); fread( &m_nBackgroundSideColor, sizeof(int), 1, fp ); fread( &m_nSelectColor, sizeof(int), 1, fp ); fread( &m_nSelectSideColor, sizeof(int), 1, fp ); DWORD dwCount; fread( &dwCount, sizeof(DWORD), 1, fp ); for( DWORD i=0; iSetDescription( szDesc ); pVariable->SetSubDescription( szSubDesc.GetBuffer(), true ); AddParameter( pVariable, false ); m_nVecUniqueList.push_back( nUniqueIndex ); } return true; } bool CEventSignalItem::ExportHeader( FILE *fp, int& nUsingBuffCount, int &nUsing64BuffCount ) { CString szStructName; szStructName.Format( "struct %sStruct : public TBoostMemoryPool< %sStruct > {\n", m_szName, m_szName ); fprintf( fp, szStructName ); DWORD dwCurCount = 0; int nReserveSize = 1024; int nReserveSize64 = 2048; // À߸ø »ý°¢Çß¾úÀ½..ÀüºÎ Æ÷ÀÎÅÍÀÏ °æ¿ì 2¹è°¡ µÇ±â¶«½Ã.. À̰Š»çÀÌÁî ¸®ÅÏ ¾ÈÇÏ´Â °æ¿ì¿¡µµ ¹®Á¦°¡ »ý°å¾ùÀ»²¨ÀÓ. int nInitReserveSize = nReserveSize; int nInitReserveSize64 = nReserveSize64; int nCurReserveCount = 0; CString szVarStr; CString szString; int nReserveStrCount = 1; for( DWORD i=0; iGetType() ) { case CUnionValueProperty::Integer: case CUnionValueProperty::Integer_Combo: case CUnionValueProperty::Color: szVarStr = "int "; nReserveSize64 -= 4; break; case CUnionValueProperty::Float: szVarStr = "float "; nReserveSize64 -= 4; break; case CUnionValueProperty::Vector2: szVarStr = "EtVector2 *"; nReserveSize64 -= 8; break; case CUnionValueProperty::Vector3: szVarStr = "EtVector3 *"; nReserveSize64 -= 8; break; case CUnionValueProperty::Vector4: case CUnionValueProperty::Vector4Color: szVarStr = "EtVector4 *"; nReserveSize64 -= 8; break; case CUnionValueProperty::String: case CUnionValueProperty::String_FileOpen: szVarStr = "char *"; nReserveSize64 -= 8; break; case CUnionValueProperty::Boolean: szVarStr = "BOOL "; nReserveSize64 -= 4; break; } nReserveSize -= 4; szString.Format( " %s%s;\n", szVarStr, m_pVecList[i]->GetDescription() ); fprintf( fp, szString ); dwCurCount++; } nUsingBuffCount = (nInitReserveSize - nReserveSize) / 4; nUsing64BuffCount = (nInitReserveSize64 - nReserveSize64) / 4; szString.Format( " char cReserved%d[%d];\n", nReserveStrCount, nReserveSize ); fprintf( fp, szString ); szStructName.Format( "};\n\n", m_szName ); fprintf( fp, szStructName ); return true; }