#include "stdafx.h" /* #include "SEnhanceEffectDB.h" #include #include SEnhanceEffectDB* SEnhanceEffectDB::m_pThis = NULL; SEnhanceEffectDB & GetEnhanceEffectDB() { if( NULL == SEnhanceEffectDB::m_pThis ) SEnhanceEffectDB::m_pThis = new SEnhanceEffectDB; return *SEnhanceEffectDB::m_pThis; } SEnhanceEffectDB::SEnhanceEffectDB() { Init(); } SEnhanceEffectDB::~SEnhanceEffectDB() { } void SEnhanceEffectDB::Init() { Load(); } const std::vector< ItemEnhanceEffectBase >& SEnhanceEffectDB::Find( int nEnhanceID ) { auto pos = m_mapEnhanceEffect.find( nEnhanceID ); if( pos != m_mapEnhanceEffect.end() ) { return pos->second; } static std::vector< ItemEnhanceEffectBase > empty_list; return empty_list; } void SEnhanceEffectDB::Load() { KStream * pRes = KFileManager::Instance().CreateStreamFromResource( "db_EnhanceEffect.rdb" ); if( !pRes ) return; RDUReader reader; if( reader.Open( pRes ) == false ) { return; } RDURow row; while( reader.Fetch( &row ) == true ) { ItemEnhanceEffectBase ee; ::memset( &ee, 0, sizeof( ee ) ); typedef ColumnDataGetter< DECIMALToDouble< false > > ColGetter; ee.sid = ColGetter( row.At( "sid" ) ).ToInterger(); ee.sub_id = ColGetter( row.At( "sub_id" ) ).ToInterger(); ee.effect_id = ColGetter( row.At( "effect_id" ) ).ToInterger(); for( int i = 0; i < _countof( ee.value ); ++i ) { char szColumnName[64] = ""; s_sprintf( szColumnName, _countof( szColumnName ), "value_%02d", i+1 ); ee.value[i] = ColGetter( row.At( szColumnName ) ).ToDouble(); } auto pos = m_mapEnhanceEffect.find( ee.sid ); if( pos != m_mapEnhanceEffect.end() ) { pos->second.push_back( ee ); } else { std::vector< ItemEnhanceEffectBase > v; v.push_back( ee ); m_mapEnhanceEffect.insert( std::make_pair( ee.sid, v ) ); } } KFileManager::Instance().DeleteStream( pRes ); } */