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

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