94 lines
2.2 KiB
C++
94 lines
2.2 KiB
C++
#include "stdafx.h"
|
|
#include "BattleArenaBeginArea.h"
|
|
#include "SBattleArenaBeginAreaDB.h"
|
|
#include <kfile/KFileManager.h>
|
|
#include "SkillBaseFile.h"
|
|
#include <toolkit/XStringUtil.h>
|
|
#include <kfile/KStream.h>
|
|
#include "KTypes.h"
|
|
|
|
SBattleArenaBeginAreaDB* SBattleArenaBeginAreaDB::m_pThis = NULL;
|
|
SBattleArenaBeginAreaDB & GetBattleArenaBeginAreaDB()
|
|
{
|
|
if( NULL == SBattleArenaBeginAreaDB::m_pThis )
|
|
SBattleArenaBeginAreaDB::m_pThis = new SBattleArenaBeginAreaDB;
|
|
|
|
return *SBattleArenaBeginAreaDB::m_pThis;
|
|
// static SBattleArenaBeginAreaDB BattleArenaBeginAreaDB;
|
|
// return BattleArenaBeginAreaDB;
|
|
}
|
|
|
|
SBattleArenaBeginAreaDB::SBattleArenaBeginAreaDB()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
SBattleArenaBeginAreaDB::~SBattleArenaBeginAreaDB()
|
|
{
|
|
Destroy();
|
|
}
|
|
|
|
void SBattleArenaBeginAreaDB::Init()
|
|
{
|
|
Load();
|
|
}
|
|
|
|
void SBattleArenaBeginAreaDB::getPointList(int arenaId, int teamNum, std::vector<K3DVector2>& pointList)
|
|
{
|
|
pointList.clear();
|
|
|
|
sBattleArenaBeginArea* pFind = NULL;
|
|
if( m_hashBattleArenaBeginArea.lookup( arenaId, pFind ) == false )
|
|
return ;
|
|
|
|
pFind->getPointList(teamNum, pointList);
|
|
}
|
|
|
|
void SBattleArenaBeginAreaDB::Destroy()
|
|
{
|
|
sBattleArenaBeginArea* battleArenaBeginArea = NULL;
|
|
bool res;
|
|
res = m_hashBattleArenaBeginArea.get_first_value( battleArenaBeginArea );
|
|
while ( res )
|
|
{
|
|
if ( battleArenaBeginArea != NULL )
|
|
{
|
|
delete battleArenaBeginArea;
|
|
}
|
|
res = m_hashBattleArenaBeginArea.get_next_value( battleArenaBeginArea );
|
|
}
|
|
m_hashBattleArenaBeginArea.clear();
|
|
}
|
|
|
|
void SBattleArenaBeginAreaDB::Load()
|
|
{
|
|
KStream * pRes = KFileManager::Instance().CreateStreamFromResource( "db_BattleArenaBeginArea.rdb" );
|
|
if( !pRes ) return;
|
|
GAME_DB db_hdr;
|
|
|
|
std::string idKey;
|
|
|
|
pRes->Read( &db_hdr, sizeof(db_hdr) );
|
|
for( int i(0); db_hdr.nCount>i; i++ )
|
|
{
|
|
BattleArenaBeginArea dbData;
|
|
memset( &dbData, 0, sizeof(dbData) );
|
|
|
|
pRes->Read( &dbData, sizeof(dbData) );
|
|
|
|
sBattleArenaBeginArea* pFind = NULL;
|
|
if( m_hashBattleArenaBeginArea.lookup( dbData.id, pFind ) == false )
|
|
{
|
|
sBattleArenaBeginArea* data = new sBattleArenaBeginArea;
|
|
data->add(dbData.teamNum, dbData.x, dbData.y);
|
|
m_hashBattleArenaBeginArea.add(dbData.id, data);
|
|
}
|
|
else
|
|
{
|
|
pFind->add(dbData.teamNum, dbData.x, dbData.y);
|
|
}
|
|
}
|
|
|
|
KFileManager::Instance().DeleteStream( pRes );
|
|
}
|