107 lines
2.2 KiB
C++
107 lines
2.2 KiB
C++
#include "stdafx.h"
|
|
#include <windows.h>
|
|
#include "KTypes.h"
|
|
#include <kfile/KStream.h>
|
|
#include <kfile/KFileManager.h>
|
|
#include "SkillBaseFile.h"
|
|
#include "SHuntaHolicResourceDB.h"
|
|
|
|
#include "SDebug_Util.h"
|
|
|
|
SHuntaHolicResourceDB::SHuntaHolicResourceDB()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
SHuntaHolicResourceDB::~SHuntaHolicResourceDB()
|
|
{
|
|
Destroy();
|
|
}
|
|
|
|
const HuntaHolicResource& SHuntaHolicResourceDB::Find( int nID ) const
|
|
{
|
|
HuntaHolicResource* found = 0;
|
|
|
|
if( mDB.lookup( nID, found ) )
|
|
return *found;
|
|
|
|
return mNullResource;
|
|
}
|
|
|
|
void SHuntaHolicResourceDB::Init()
|
|
{
|
|
Load();
|
|
}
|
|
|
|
void SHuntaHolicResourceDB::Destroy()
|
|
{
|
|
HuntaHolicResource* found = 0;
|
|
bool res;
|
|
|
|
res = mDB.get_first_value( found );
|
|
|
|
while( res )
|
|
{
|
|
if( found != 0 )
|
|
delete found;
|
|
res = mDB.get_next_value( found );
|
|
}
|
|
|
|
mDB.clear();
|
|
}
|
|
|
|
void SHuntaHolicResourceDB::Load()
|
|
{
|
|
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( "db_HuntaHolicResource.rdb" );
|
|
if( !pRes ) return;
|
|
|
|
_oprint( "* HuntaHolicResource DB Loading...\n" );
|
|
|
|
GAME_DB db_hdr;
|
|
|
|
pRes->Read( &db_hdr, sizeof(db_hdr) );
|
|
|
|
for( int i(0); db_hdr.nCount>i; i++ )
|
|
{
|
|
HuntaHolicResource* pItem = new HuntaHolicResource;
|
|
|
|
memset( pItem, 0, sizeof(HuntaHolicResource) );
|
|
|
|
pRes->Read( pItem, sizeof(HuntaHolicResource) );
|
|
|
|
if( !( pItem->local_flag & GameRule::GetCurrentLocalBitSet() ) )
|
|
{
|
|
HuntaHolicResource* pFindItem = NULL;
|
|
|
|
if( mDB.lookup( pItem->id, pFindItem ) == false )
|
|
{
|
|
mDB.add( pItem->id, pItem );
|
|
}
|
|
else
|
|
{
|
|
_oprint( "* Error: id( %d )가 중복되었습니다.\n", pItem->id );
|
|
delete pItem;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
_oprint( "* Log: id( %d )가 국가별 비트셋 검사에 의해 생략됨.\n", pItem->id );
|
|
delete pItem;
|
|
}
|
|
}
|
|
|
|
KFileManager::Instance().DeleteStream( pRes );
|
|
|
|
_oprint( "* HuntaHolicResource DB Loading Complete...( Total: %d )\n", (int)mDB.size() );
|
|
}
|
|
|
|
SHuntaHolicResourceDB* SHuntaHolicResourceDB::m_pThis = NULL;
|
|
SHuntaHolicResourceDB& GetHuntaHolicResourceDB()
|
|
{
|
|
if( NULL == SHuntaHolicResourceDB::m_pThis )
|
|
SHuntaHolicResourceDB::m_pThis = new SHuntaHolicResourceDB;
|
|
|
|
return *SHuntaHolicResourceDB::m_pThis;
|
|
// static SHuntaHolicResourceDB huntaHolicResourceDB;
|
|
// return huntaHolicResourceDB;
|
|
} |