Files
2022-10-26 12:25:11 +08:00

95 lines
2.2 KiB
C++

#pragma once
//=============================================================================================================================
/// ScriptListLoader class
/**
@author Lee Eun-pa <waverix@webzen.co.kr>
@since 2006. 08. 11
@remark
- SolarAuthServer
@note
- SolarAuthServer 에서 읽어들이는 스크립트 목록을 읽어들이는 클래스
@history
-
*/
//=============================================================================================================================
#include <Information/SolarAcceptableMasterServerListLoader.h>
#include <Information/ScriptLoader.h>
//
//
//
#pragma pack(push, 1)
typedef struct sSCRIPT_RECORD_INFO
{
BYTE m_byScriptIndex; // 0
BYTE m_byIsReLoad; // 2
CHAR m_strFileName[64]; // 1
} SCRIPT_RECORD_INFO;
#pragma pack(pop)
//
//
//
typedef Delegator<SCRIPT_RECORD_INFO> SCRIPT_RECORD_INFO_DELEGATOR;
typedef std::map<DWORD, SCRIPT_RECORD_INFO_DELEGATOR> SCRIPT_RECORD_INFO_HASH;
typedef SCRIPT_RECORD_INFO_HASH::iterator SCRIPT_RECORD_INFO_HASH_IT;
typedef std::pair<DWORD, SCRIPT_RECORD_INFO_DELEGATOR> SCRIPT_RECORD_INFO_PAIR;
//
//
//
class ScriptListLoader
{
public:
ScriptListLoader();
~ScriptListLoader();
public:
VOID Release();
BOOL Load( const CHAR* pszFileName, BOOL bReload = FALSE );
BOOL LoadDataAll( BOOL bReload = FALSE );
SCRIPT_RECORD_INFO_DELEGATOR& GetScriptInfo( DWORD scriptIndex );
private:
VOID _Init();
VOID _ReleaseNode( SCRIPT_RECORD_INFO_PAIR record );
private:
VOID _ReleaseScriptLoader( ACCEPTABLE_MASTER_SERVER_INFO* pINFO );
VOID _LoadData( SCRIPT_RECORD_INFO_DELEGATOR& rINFO, SCRIPT_LOADER loader, const CHAR* pszRelativePath, BOOL bReload );
VOID _LoadDataAll( ACCEPTABLE_MASTER_SERVER_INFO_DELEGATOR rINFO );
private:
// <FIELDs>
BOOL m_bInited;
SCRIPT_RECORD_INFO_HASH m_ScriptListInfo;
SCRIPT_RECORD_INFO_DELEGATOR m_EmptyRecord;
};
//------------------------------------------------------------------
// Singleton by Private
//class ScriptListLoader
//{
//private:
// ScriptListLoader();
// ~ScriptListLoader();
//
//public:
// static ScriptListLoader* s_Instance;
// static ScriptListLoader* GetInstance()
// {
// if( s_Instance )
// return s_Instance;
//
// s_Instance = new ScriptListLoader();
// return s_Instance;
// }
//};