108 lines
2.1 KiB
C++
108 lines
2.1 KiB
C++
#include "stdafx.h"
|
|
|
|
|
|
#include "STitleDB.h"
|
|
|
|
#include <Windows.h>
|
|
#include <kfile/KStream.h>
|
|
#include "KTypes.h"
|
|
#include <kfile/KFileManager.h>
|
|
#include <toolkit/XStringUtil.h>
|
|
#include "SDebug_Util.h"
|
|
#include "SSkillDB.h"
|
|
#include "STitleMgr.h"
|
|
|
|
STitleDB::STitleDB()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
STitleDB::~STitleDB()
|
|
{
|
|
Destroy();
|
|
}
|
|
|
|
void STitleDB::Init()
|
|
{
|
|
Load();
|
|
}
|
|
|
|
void STitleDB::Destroy()
|
|
{
|
|
m_TitleRes.clear();
|
|
m_TitleConditionRes.clear();
|
|
m_titleTypeConditionRes.clear();
|
|
}
|
|
|
|
void STitleDB::Load()
|
|
{
|
|
LoadTitleRes();
|
|
LoadTitleConRes();
|
|
LoadTitleConTypeRes();
|
|
}
|
|
|
|
void STitleDB::LoadTitleRes()
|
|
{
|
|
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( "db_TitleResource.rdb" );
|
|
if( !pRes ) return;
|
|
GAME_DB db_hdr;
|
|
TitleResource title;
|
|
|
|
pRes->Read( &db_hdr, sizeof(db_hdr) );
|
|
|
|
for( int i(0); db_hdr.nCount>i; i++ )
|
|
{
|
|
pRes->Read( &title, sizeof(title) );
|
|
m_TitleRes.insert( std::make_pair( title.id, title ) );
|
|
}
|
|
|
|
KFileManager::Instance().DeleteStream( pRes );
|
|
}
|
|
|
|
void STitleDB::LoadTitleConRes()
|
|
{
|
|
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( "db_TitleConditionResource.rdb" );
|
|
if( !pRes ) return;
|
|
GAME_DB db_hdr;
|
|
TitleConditionResource title;
|
|
|
|
pRes->Read( &db_hdr, sizeof(db_hdr) );
|
|
|
|
for( int i(0); db_hdr.nCount>i; i++ )
|
|
{
|
|
pRes->Read( &title, sizeof(title) );
|
|
m_TitleConditionRes.insert( make_pair(title.id,title ) );
|
|
}
|
|
|
|
KFileManager::Instance().DeleteStream( pRes );
|
|
}
|
|
|
|
void STitleDB::LoadTitleConTypeRes()
|
|
{
|
|
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( "db_TitleConditionTypeResource.rdb" );
|
|
if( !pRes ) return;
|
|
GAME_DB db_hdr;
|
|
TitleConditionTypeResource title;
|
|
|
|
pRes->Read( &db_hdr, sizeof(db_hdr) );
|
|
|
|
for( int i(0); db_hdr.nCount>i; i++ )
|
|
{
|
|
pRes->Read( &title, sizeof(title) );
|
|
m_titleTypeConditionRes.insert( make_pair( title.id, title) );
|
|
}
|
|
|
|
KFileManager::Instance().DeleteStream( pRes );
|
|
}
|
|
|
|
STitleDB* STitleDB::m_pThis = NULL;
|
|
STitleDB & GetTitleDB()
|
|
{
|
|
if( NULL == STitleDB::m_pThis )
|
|
STitleDB::m_pThis = new STitleDB;
|
|
|
|
return *STitleDB::m_pThis;
|
|
// static STitleDB TitleDB;
|
|
// return TitleDB;
|
|
}
|