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

92 lines
2.7 KiB
C++

#pragma once
class ScriptLogic;
struct WISECLIENT_SCRIPTLOGIC_API ScriptLogicInterface
{
ScriptLogic* SCRIPTLOGIC;
};
class ScriptLogic;
class WISECLIENT_SCRIPTLOGIC_API ScriptLogicFrame
{
// <TYPE DEFINTION>
public:
// <CONSTRUCTOR><DESTRUCTOR>
private: ScriptLogicFrame();
~ScriptLogicFrame();
public: static VOID CreateInstance();
static VOID DestroyInstance();
static ScriptLogicFrame* GetScriptLogicFrame();
// <METHODs>
public: VOID Init( ScriptLogicInterface* IN OUT pInterface );
public: VOID Update();
public: static ScriptLogicInterface* GetInterfaceRef();
private: ScriptLogicInterface* m_pExportedInterface;
};
#include <ScriptDataLoader.h>
#include <hash_map>
#include <string>
//////////////////////////////////////////////////////////////////////////
//
struct ControlData
{
typedef STLX_MAP<string, string> ATTR_DATA_VALUE_TABLE;
typedef ATTR_DATA_VALUE_TABLE::iterator ATTR_DATA_VALUE_TABLE_IT;
typedef STLX_HASH_MAP<string, ATTR_DATA_VALUE_TABLE> SECTION_DATA_TABLE;
typedef SECTION_DATA_TABLE::iterator SECTION_DATA_TABLE_IT;
//////////////////////////////////////////////////////////////////////////
//
ControlData() : m_ReservedSection(FALSE) {}
~ControlData() {}
VOID SetSectionCursor( string& nameOfSection );
VOID AlignAttribute( string& nameOfAttr, string& nameOfAttrValue );
VOID SetSectionCursor( const CHAR* nameOfSection );
VOID AlignAttribute( const CHAR* nameOfAttr, const CHAR* nameOfAttrValue );
SECTION_DATA_TABLE m_Table;
BOOL m_ReservedSection;
string m_Cursor;
// Reserved Section Fields
DWORD m_Version;
};
//////////////////////////////////////////////////////////////////////////
//
class WISECLIENT_SCRIPTLOGIC_API ScriptLogic
{
public: static const CHAR* SCRIPTLOGIC_DATAFILE;
public: ScriptLogic();
~ScriptLogic();
public: BOOL Load( BOOL bReload = FALSE );
//////////////////////////////////////////////////////////////////////////
//
// [GENERAL] VERSION
DWORD GetVersion();
// [ENTER_MAPCODE] MAPCODE
MAPCODE GetPlayMapCode();
BOOL IsAcceptPlay( CHAR* pszAttribute );
//////////////////////////////////////////////////////////////////////////
//
public: BOOL Find( const CHAR* nameOfSection );
BOOL Find( string& nameOfSection );
BOOL GetData( const CHAR* nameOfSection, const CHAR* nameOfAttr, CHAR*& OUT rValueOfAttr );
BOOL GetData( string& nameOfSection, string& nameOfAttr, string& OUT rValueOfAttr );
private: static INT __ParseInfoSection( PVOID pPassingPtr, SDAttrTag tagName );
static BOOL __ParseInfoSectionData( PVOID pPassingPtr, SDAttrValueName tagValueName, SDAttrValue tagValue );
private: ControlData* m_pControlData;
};