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