#include "stdafx.h" #include "BattleArenaBeginArea.h" #include "SBattleArenaBeginAreaDB.h" #include #include "SkillBaseFile.h" #include #include #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& 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 ); }