96 lines
2.3 KiB
C++
96 lines
2.3 KiB
C++
#include "StdAfx.h"
|
|
#include ".\scriptparser.h"
|
|
|
|
ScriptParser::ScriptParser( WorldInfo* pWorldInfo )
|
|
{
|
|
if( pWorldInfo )
|
|
m_pWorldInfo = pWorldInfo;
|
|
else
|
|
m_pWorldInfo = NULL;
|
|
}
|
|
|
|
ScriptParser::~ScriptParser(void)
|
|
{
|
|
}
|
|
|
|
|
|
BOOL ScriptParser::LoadBaseInfo( const TCHAR* pszFileName )
|
|
{
|
|
if( !pszFileName || !m_pWorldInfo )
|
|
return FALSE;
|
|
|
|
util::SolarFileReader sr;
|
|
if ( !OpenFile( sr, const_cast<TCHAR*>(pszFileName), SEPERATOR_WHITESPACE ) )
|
|
{
|
|
ASSERT(0);
|
|
return (FALSE);
|
|
}
|
|
|
|
while( TRUE )
|
|
{
|
|
eTOKEN_TYPE ettType = sr.GetNextTokenType();
|
|
if ( TOKEN_END == ettType ) break;
|
|
|
|
WORD wWorld = 0;
|
|
_BaseInfo* pBaseInfo = new _BaseInfo;
|
|
|
|
pBaseInfo->m_wWorld = sr.GetTokenNumber();
|
|
sr.GetNextTokenType(TOKEN_NUMBER); pBaseInfo->m_wChannel = (WORD)sr.GetTokenNumber();
|
|
sr.GetNextTokenType(TOKEN_NUMBER); pBaseInfo->m_wServerType = (WORD)sr.GetTokenNumber();
|
|
sr.GetNextTokenType(TOKEN_NUMBER); pBaseInfo->m_wServerNum = (WORD)sr.GetTokenNumber();
|
|
sr.GetNextTokenType(TOKEN_STRING);
|
|
_tcsncpy( pBaseInfo->m_szPublicIP, sr.GetTokenString(), MAX_ADDRESS_SIZE );
|
|
sr.GetNextTokenType(TOKEN_STRING);
|
|
_tcsncpy( pBaseInfo->m_szPrivateIP, sr.GetTokenString(), MAX_ADDRESS_SIZE );
|
|
//Æ÷Æ®Á¤º¸
|
|
_PortInfo* pPort = m_pWorldInfo->GetPortInfo( pBaseInfo->m_wServerType );
|
|
if( pPort )
|
|
{
|
|
pBaseInfo->m_wPrivatePort = pPort->m_wPrivatePort;
|
|
pBaseInfo->m_wPublicPort = pPort->m_wPublicPort;
|
|
}
|
|
else
|
|
{
|
|
pBaseInfo->m_wPrivatePort = 0;
|
|
pBaseInfo->m_wPublicPort = 0;
|
|
}
|
|
|
|
m_pWorldInfo->AddBaseInfo( pBaseInfo->m_wWorld, pBaseInfo );
|
|
|
|
}
|
|
|
|
sr.CloseFile();
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL ScriptParser::LoadPortInfo( const TCHAR* pszFileName )
|
|
{
|
|
if( !pszFileName || !m_pWorldInfo )
|
|
return FALSE;
|
|
|
|
util::SolarFileReader sr;
|
|
if ( !OpenFile( sr, const_cast<TCHAR*>(pszFileName), SEPERATOR_WHITESPACE ) )
|
|
{
|
|
ASSERT(0);
|
|
return (FALSE);
|
|
}
|
|
|
|
while( TRUE )
|
|
{
|
|
eTOKEN_TYPE ettType = sr.GetNextTokenType();
|
|
if ( TOKEN_END == ettType ) break;
|
|
|
|
WORD wWorld = 0;
|
|
_PortInfo* pPortInfo = new _PortInfo;
|
|
|
|
pPortInfo->m_wServerType = sr.GetTokenNumber();
|
|
sr.GetNextTokenType(TOKEN_NUMBER); pPortInfo->m_wPublicPort = (WORD)sr.GetTokenNumber();
|
|
sr.GetNextTokenType(TOKEN_NUMBER); pPortInfo->m_wPrivatePort = (WORD)sr.GetTokenNumber();
|
|
m_pWorldInfo->AddPortInfo( pPortInfo->m_wServerType, pPortInfo );
|
|
}
|
|
|
|
sr.CloseFile();
|
|
|
|
return TRUE;
|
|
} |