#include "stdafx.h" #include "SDefaultTextureResourceDB.h" #include #include "KTypes.h" #include #include #include #include "SkillBaseFile.h" #include "ContentStruct.h" #include "SStringDB.h" #include "SDebug_Util.h" SDefaultTextureResourceDB* SDefaultTextureResourceDB::m_pThis = NULL; SDefaultTextureResourceDB & GetDefaultTextureResourceDB() { if( NULL == SDefaultTextureResourceDB::m_pThis ) SDefaultTextureResourceDB::m_pThis = new SDefaultTextureResourceDB; return *SDefaultTextureResourceDB::m_pThis; // static SDefaultTextureResourceDB DefaultTextureResourceDB; // return DefaultTextureResourceDB; } SDefaultTextureResourceDB::SDefaultTextureResourceDB() { Init(); } SDefaultTextureResourceDB::~SDefaultTextureResourceDB() { Destroy(); } void SDefaultTextureResourceDB::Init() { // 2010.04.22 - prodongi //m_nDecoIndex = 0; Load(); } void SDefaultTextureResourceDB::Destroy() { /*DefaultTextureResourceforGame* pDefaultTextureResource = NULL; bool res; res = m_hashDefaultTextureResource.get_first_value( pDefaultTextureResource ); while ( res ) { if ( pDefaultTextureResource != NULL ) { delete pDefaultTextureResource; } res = m_hashDefaultTextureResource.get_next_value( pDefaultTextureResource ); } m_hashDefaultTextureResource.clear();*/ SAFE_DELETE_VECTOR( m_vDefaultTextureList ); } void SDefaultTextureResourceDB::Load() { KStream * pRes = KFileManager::Instance().CreateStreamFromResource( "db_DefaultTextureResource.rdb" ); if( !pRes ) return; GAME_DB db_hdr; pRes->Read( &db_hdr, sizeof(db_hdr) ); for( int i(0); db_hdr.nCount>i; i++ ) { DefaultTextureResourceforGame* pItem = new DefaultTextureResourceforGame; DefaultTextureResource defItem; memset( &defItem, 0, sizeof(defItem) ); pRes->Read( &defItem, sizeof(defItem) ); pItem->SetData( &defItem ); if( pItem ) m_vDefaultTextureList.push_back(pItem); } KFileManager::Instance().DeleteStream( pRes ); } const char* SDefaultTextureResourceDB::GetTextureName( int nGroup, int nIndex, int nRace, int nSex ) { // 2010.04.22 warning 수정 - prodongi for( int i=0; i < (int)m_vDefaultTextureList.size(); ++i ) { if( m_vDefaultTextureList[i]->texture_group_id == nGroup && m_vDefaultTextureList[i]->texture_id == nIndex ) { if( nRace == GCLAN_GAIA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->gaia_female; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->gaia_male; } else if( nRace == GCLAN_DEVA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->deva_female; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->deva_male; } else if( nRace == GCLAN_ASURA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->asura_female; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->asura_male; } } } return "NotFoundFile"; } int SDefaultTextureResourceDB::GetIconID( int nGroup, int nIndex, int nRace, int nSex ) { // 2010.04.22 Warning fixed - prodongi for( int i = 0; i < (int)m_vDefaultTextureList.size(); ++i ) { if( m_vDefaultTextureList[i]->texture_group_id == nGroup && m_vDefaultTextureList[i]->texture_id == nIndex ) { if( nRace == GCLAN_GAIA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->gaf_icon_id; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->gam_icon_id; } else if( nRace == GCLAN_DEVA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->def_icon_id; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->dem_icon_id; } else if( nRace == GCLAN_ASURA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->asf_icon_id; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->asm_icon_id; } } } return -1; } const char* SDefaultTextureResourceDB::GetTextureName( int nGroup, int nRace, int nSex ) { // 2010.04.22 warning 수정 - prodongi for( int i=0; i < (int)m_vDefaultTextureList.size(); ++i ) { if( m_vDefaultTextureList[i]->texture_group_id == nGroup ) { if( nRace == GCLAN_GAIA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->gaia_female; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->gaia_male; } else if( nRace == GCLAN_DEVA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->deva_female; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->deva_male; } else if( nRace == GCLAN_ASURA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->asura_female; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->asura_male; } } } return "NotFoundFile"; } int SDefaultTextureResourceDB::GetIconID( int nGroup, int nRace, int nSex ) { // 2010.04.22 warning 수정 - prodongi for( int i=0; i < (int)m_vDefaultTextureList.size(); ++i ) { if( m_vDefaultTextureList[i]->texture_group_id == nGroup ) { if( nRace == GCLAN_GAIA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->gaf_icon_id; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->gam_icon_id; } else if( nRace == GCLAN_DEVA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->def_icon_id; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->dem_icon_id; } else if( nRace == GCLAN_ASURA ) { if( nSex == SEX_FEMALE ) return m_vDefaultTextureList[i]->asf_icon_id; else if( nSex == SEX_MALE ) return m_vDefaultTextureList[i]->asm_icon_id; } } } return -1; } int SDefaultTextureResourceDB::GetTextureIndex( int nGroup ) { // 2010.04.22 warning 수정 - prodongi for( int i=0; i < (int)m_vDefaultTextureList.size(); ++i ) { if( m_vDefaultTextureList[i]->texture_group_id == nGroup ) return m_vDefaultTextureList[i]->texture_id; } return -1; }