101 lines
3.1 KiB
C++
101 lines
3.1 KiB
C++
|
|
#include <toolkit/XConsole.h>
|
|
#include <logging/FileLog.h>
|
|
|
|
#include "ContentLoader.h"
|
|
#include "GameDBUtil.h"
|
|
#include "DBPerformanceTracker.h"
|
|
#include "ADOConnection.h"
|
|
|
|
struct dbDeathmatch : public CADORecordBinding
|
|
{
|
|
int id;
|
|
int deathmatch_type;
|
|
int min_level;
|
|
int max_level;
|
|
int x1;
|
|
int y1;
|
|
int x2;
|
|
int y2;
|
|
int x3;
|
|
int y3;
|
|
int x4;
|
|
int y4;
|
|
int x5;
|
|
int y5;
|
|
|
|
BEGIN_ADO_BINDING(dbDeathmatch)
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 1, adInteger, id, sizeof( id ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 2, adInteger, deathmatch_type, sizeof( deathmatch_type ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 3, adInteger, min_level, sizeof( min_level ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 4, adInteger, max_level, sizeof( max_level ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 5, adInteger, x1, sizeof( x1 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 6, adInteger, y1, sizeof( y1 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 7, adInteger, x2, sizeof( x2 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 8, adInteger, y2, sizeof( y2 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 9, adInteger, x3, sizeof( x3 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 10, adInteger, y3, sizeof( y3 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 11, adInteger, x4, sizeof( x4 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 12, adInteger, y4, sizeof( y4 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 13, adInteger, x5, sizeof( x5 ), FALSE )
|
|
ADO_VARIABLE_LENGTH_ENTRY4( 14, adInteger, y5, sizeof( y5 ), FALSE )
|
|
END_ADO_BINDING()
|
|
};
|
|
|
|
void onDeathmatchData( dbDeathmatch * emprs )
|
|
{
|
|
// 데스매치 정보 등록
|
|
ArPosition position[5] = { ArPosition( emprs->x1, emprs->y1 ),
|
|
ArPosition( emprs->x2, emprs->y2 ),
|
|
ArPosition( emprs->x3, emprs->y3 ),
|
|
ArPosition( emprs->x4, emprs->y4 ),
|
|
ArPosition( emprs->x5, emprs->y5 ) };
|
|
|
|
GameContent::RegisterDeathmatchInfo( emprs->id, emprs->deathmatch_type, emprs->min_level, emprs->max_level, position);
|
|
}
|
|
|
|
static bool LoadDeathmatchResource()
|
|
{
|
|
#ifdef FRAUN_PERFORMANCE_LOG
|
|
DWORD dwTime = GetSafeTickCount();
|
|
#endif
|
|
_ConnectionPtr ConnPtr = NULL;
|
|
|
|
InitContentDbConnection( ConnPtr );
|
|
|
|
size_t nCnt = LoadDbResource< dbDeathmatch >( "DeathmatchResource", ConnPtr, onDeathmatchData );
|
|
|
|
#ifdef FRAUN_PERFORMANCE_LOG
|
|
DWORD loadingTime = GetSafeTickCount() - dwTime;
|
|
_cprint("Total %d Deathmatch info loaded; time taken: %d\n", nCnt, loadingTime);
|
|
FILELOG("Total %d Deathmatch info loaded; time taken: %d", nCnt, loadingTime);
|
|
#else
|
|
_cprint( "Total %d Deathmatch info loading complete...\n", nCnt );
|
|
FILELOG( "Total %d Deathmatch info loading complete...", nCnt );
|
|
#endif
|
|
|
|
return true;
|
|
}
|
|
|
|
bool DeathmatchLoader::onProcess( int nThreadNum )
|
|
{
|
|
DBPerformanceTrackHelper helper;
|
|
try
|
|
{
|
|
helper.start();
|
|
LoadDeathmatchResource();
|
|
helper.end( "DeathmatchLoader" );
|
|
}
|
|
catch( _com_error &e )
|
|
{
|
|
helper.end( e.Error(), "DeathmatchLoader" );
|
|
LogDBError( e, "DeathmatchLoader", "LoadDeathmatchResource()" );
|
|
|
|
std::string strError = "DEATHMATCH RESOUCE DB ERROR : ";
|
|
strError += e.Description();
|
|
throw XException( strError );
|
|
}
|
|
|
|
return true;
|
|
}
|