#include "StdAfx.h" #include ".\itemcompositeparser.h" #include "itemInfoParser.h" ItemCompositeParser::ItemCompositeParser(void) : m_pCompositeInfoHashTable(0) { } ItemCompositeParser::~ItemCompositeParser(void) { FASSERT( m_pCompositeInfoHashTable == NULL ); Release(); } VOID ItemCompositeParser::Init( DWORD dwCompositeInfoSize ) { FASSERT( m_pCompositeInfoHashTable == NULL ); m_pCompositeInfoHashTable = new util::SolarHashTable; m_pCompositeInfoHashTable->Initialize( dwCompositeInfoSize ); } VOID ItemCompositeParser::Init( DWORD dwCompositeInfoSize, char * pszPackFileName ) { Init( dwCompositeInfoSize ); SetPackFileName( pszPackFileName ); } VOID ItemCompositeParser::Release() { Unload(); delete m_pCompositeInfoHashTable; m_pCompositeInfoHashTable = NULL; } BOOL ItemCompositeParser::_Load( BOOL bReload ) { const INT nRowSize = GetRowSize(); for( INT nRow=0; nRowGetData( code ); if( !pInfo ) { // ¾øÀ¸¸é! pInfo = new sITEMCOMPOSITE; m_pCompositeInfoHashTable->Add( pInfo, code ); } else { if( FALSE == bReload ) { SUNLOG( eCRITICAL_LOG, "script file data error, Code = %d", code ); FASSERT( !"data error." ); } } pInfo->m_Code = code; // kind pInfo->m_byResult = GetDataBYTE( "Result", nRow ); if( 0 != pInfo->m_byResult ) { //FASSERT( GetCompositeResultInfo(pInfo->m_byResult) && "¾ÆÀÌÅÛ Á¶ÇÕ Á¶°ÇÁß¿¡ Result ³Ñ¹ö°¡ À߸øµé¾î°¬´Ù. È®Àιٶ÷!!"); } pInfo->m_byMatCount = GetDataWORD( "MaterialCount", nRow ); BYTE debug_check_material_count = 0; { // Materials Àç·á¹°... TCHAR materialCodeString[32] = { 0, }; TCHAR materialCountString[32] = { 0, }; const INT material_code_tail_idx = _sntprintf( materialCodeString, _countof(materialCodeString), "MaterialCode" ); const INT material_count_tail_idx = _sntprintf( materialCountString, _countof(materialCountString), "MaterialCount" ); for( char i=0 ; im_sCompositeMaterials[i].m_dwCompositeMaterialCode = GetDataWORD( materialCodeString, nRow ); pInfo->m_sCompositeMaterials[i].m_bySpendMaterialNum = GetDataWORD( materialCountString, nRow ); if( 0 != pInfo->m_sCompositeMaterials[i].m_dwCompositeMaterialCode ) { FASSERT( 0 != pInfo->m_sCompositeMaterials[i].m_bySpendMaterialNum ); ++debug_check_material_count; } } }; // FASSERT( debug_check_material_count == pInfo->m_byMatCount ); pInfo->m_Money = (MONEY)GetDataNumber( "Money", nRow ); // <--- À½... ÀÌ Å¸ÀÔÀº ¾îij Àд Áö È®ÀÎÇØ º¼ °Í. } return TRUE; } VOID ItemCompositeParser::Reload() { // Load(this->m_pszFileName, TRUE); } VOID ItemCompositeParser::Unload() { // Á¶ÇÕÁ¤º¸ ³»¸² if( m_pCompositeInfoHashTable ) { m_pCompositeInfoHashTable->SetFirst(); while(sITEMCOMPOSITE * pCompositeInfo = m_pCompositeInfoHashTable->GetNext()) { SAFE_DELETE( pCompositeInfo ); } m_pCompositeInfoHashTable->RemoveAll(); } } BOOL ItemCompositeParser::LoadScript( eSCRIPT_CODE scriptCode, BOOL bReload ) { switch( scriptCode ) { case SCRIPT_ITEMCOMPOSITEINFO: return _Load( bReload ); } return FALSE; }