231 lines
5.9 KiB
C++
231 lines
5.9 KiB
C++
#include "stdafx.h"
|
|
#include "SDefaultTextureResourceDB.h"
|
|
|
|
#include <Windows.h>
|
|
#include "KTypes.h"
|
|
#include <kfile/KStream.h>
|
|
#include <kfile/KFileManager.h>
|
|
#include <toolkit/XStringUtil.h>
|
|
#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;
|
|
}
|