Files
Sun1602/Tools/SUNAutoScriptMaker/ScriptParser.cpp
T
2022-10-26 12:25:11 +08:00

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;
}