Files
Leviathan/Client/Game/game/DB/SDefaultTextureResourceDB.cpp
T
2026-06-01 12:46:52 +02:00

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;
}