172 lines
5.5 KiB
C++
172 lines
5.5 KiB
C++
#include "StdAfx.h"
|
|
#include ".\updatestatus.h"
|
|
#include <UpdateScriptInfo.h>
|
|
|
|
|
|
CStartManager::CStartManager(void)
|
|
{
|
|
m_byWorld = 0;
|
|
m_byChannel = 0;
|
|
m_byServerType = 0;
|
|
m_dwKey = 0;
|
|
|
|
}
|
|
|
|
CStartManager::~CStartManager(void)
|
|
{
|
|
}
|
|
|
|
|
|
BOOL CStartManager::Init( TCHAR* pszCmdLine )
|
|
{
|
|
if( !pszCmdLine ) return FALSE;
|
|
if( !m_Parser.ParseCommandLine( pszCmdLine ) ) return FALSE;
|
|
|
|
ZeroMemory( m_szMainParameter, MAX_PATH );
|
|
ZeroMemory( m_szSubParameter, MAX_PATH );
|
|
|
|
//파라미터는 1개가 있으면, 그 번호는 0이다.. 현재는 1개의 파라미터만 체크한다.
|
|
//RTTA와 연동되면, 파라미터가 여러개 이다...
|
|
m_Parser.GetParameterInfo( m_szMainParameter, MAX_PATH, 0);
|
|
|
|
if( m_Parser.GetParameterCount() > 1 ) //SubParam 이 있다는 뜻이다.
|
|
{
|
|
TCHAR szParam[MAX_PATH];
|
|
m_Parser.GetParameterInfo( szParam, MAX_PATH, 1);
|
|
m_byWorld = atoi( szParam );
|
|
m_Parser.GetParameterInfo( szParam, MAX_PATH, 2);
|
|
m_byChannel = atoi( szParam );
|
|
m_Parser.GetParameterInfo( szParam, MAX_PATH, 3);
|
|
m_byServerType = atoi( szParam );
|
|
m_Parser.GetParameterInfo( szParam, MAX_PATH, 4);
|
|
m_dwKey = atoi( szParam );
|
|
|
|
_snprintf( m_szSubParameter, MAX_PATH, "<%d> <%d> <%d> <%d>", m_byWorld, m_byChannel, m_byServerType, m_dwKey );
|
|
}
|
|
|
|
if( strcmp( m_szMainParameter, "LAUNCHER" ) == 0 )
|
|
SetLauncherStartType( START_TYPE_LAUNCHER );
|
|
else if( strcmp( m_szMainParameter, "APPLICATION" ) == 0 )
|
|
SetLauncherStartType( START_TYPE_LAUNCHER );
|
|
else if( strcmp( m_szMainParameter, "RTTA" ) == 0 )
|
|
SetLauncherStartType( START_TYPE_NORMAL );
|
|
else //이 경우는 사용자가 런처를 실행시킨 경우이다.
|
|
SetLauncherStartType( START_TYPE_NORMAL );
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
BYTE CStartManager::GetSubParameterCount()
|
|
{
|
|
int nTotCnt = m_Parser.GetParameterCount();
|
|
if( nTotCnt <= 0 ) return 0;
|
|
|
|
if( nTotCnt > 0 )
|
|
{
|
|
BYTE bySubParamCnt = 0;
|
|
bySubParamCnt = nTotCnt - 1;
|
|
return bySubParamCnt;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
TCHAR* CStartManager::GetSubParameter()
|
|
{
|
|
return m_szSubParameter;
|
|
}
|
|
|
|
BOOL CStartManager::GetServerNameFromServerType( BYTE byServerType, TCHAR* pszServerName, int nSize )
|
|
{
|
|
|
|
if( byServerType == AUTH_SERVER )
|
|
_tcsncpy( pszServerName, "AuthServer", nSize );
|
|
else if( byServerType == AUTH_AGENT_SERVER )
|
|
_tcsncpy( pszServerName, "AuthAgentServer", nSize );
|
|
else if( byServerType == LOGIN_FRONT_SERVER )
|
|
_tcsncpy( pszServerName, "LoginFrontServer", nSize );
|
|
else if( byServerType == ACCOUNT_DBPROXY )
|
|
_tcsncpy( pszServerName, "AccountDBProxy", nSize );
|
|
else if( byServerType == MASTER_SERVER )
|
|
_tcsncpy( pszServerName, "MasterServer", nSize );
|
|
else if( byServerType == GAME_DBPROXY )
|
|
_tcsncpy( pszServerName, "DBProxyServer", nSize );
|
|
else if( byServerType == WORLD_SERVER )
|
|
_tcsncpy( pszServerName, "WorldServer", nSize );
|
|
else if( byServerType == FIELD_SERVER )
|
|
_tcsncpy( pszServerName, "FieldServer", nSize );
|
|
else if( byServerType == BATTLE_SERVER )
|
|
_tcsncpy( pszServerName, "BattleServer", nSize );
|
|
else if( byServerType == AGENT_SERVER )
|
|
_tcsncpy( pszServerName, "AgentServer", nSize );
|
|
else if( byServerType == OP_SERVER )
|
|
_tcsncpy( pszServerName, "OpServer", nSize );
|
|
else if( byServerType == SOLARAUTH_SERVER )
|
|
_tcsncpy( pszServerName, "SolarAuthServer", nSize );
|
|
else if( byServerType == SUN_SERVER )
|
|
_tcsncpy( pszServerName, "SunServer", nSize );
|
|
else
|
|
return FALSE;
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BYTE CStartManager::GetServerTypeFromServerName( IN TCHAR* pszServerName )
|
|
{
|
|
if( strcmp( pszServerName, "AuthServer") == 0 )
|
|
return AUTH_SERVER;
|
|
else if( strcmp( pszServerName, "AuthAgentServer") == 0 )
|
|
return AUTH_AGENT_SERVER;
|
|
else if( strcmp( pszServerName, "LoginFrontServer") == 0 )
|
|
return LOGIN_FRONT_SERVER;
|
|
else if( strcmp( pszServerName, "AccountDBP") == 0 )
|
|
return ACCOUNT_DBPROXY;
|
|
else if( strcmp( pszServerName, "MasterServer") == 0 )
|
|
return MASTER_SERVER;
|
|
else if( strcmp( pszServerName, "DBProxyServer") == 0 )
|
|
return GAME_DBPROXY;
|
|
else if( strcmp( pszServerName, "WorldServer") == 0 )
|
|
return WORLD_SERVER;
|
|
else if( strcmp( pszServerName, "FieldServer") == 0 )
|
|
return FIELD_SERVER;
|
|
else if( strcmp( pszServerName, "BattleServer") == 0 )
|
|
return BATTLE_SERVER;
|
|
else if( strcmp( pszServerName, "AgentServer") == 0 )
|
|
return AGENT_SERVER;
|
|
else if( strcmp( pszServerName, "OpServer") == 0 )
|
|
return OP_SERVER;
|
|
else if( strcmp( pszServerName, "SolarAuthServer") == 0 )
|
|
return SOLARAUTH_SERVER;
|
|
#ifdef __20080402_ADD_SOLARSCUPDATE_
|
|
else if( strcmp( pszServerName, "SOLARAUTH\\data.encrypted.China") == 0 )
|
|
return SOLARAUTH_SERVER;
|
|
else if( strcmp( pszServerName, "SOLARAUTH\\data.encrypted.Taiwan") == 0 )
|
|
return SOLARAUTH_SERVER;
|
|
else if( strcmp( pszServerName, "SOLARAUTH\\data.encrypted.Japan") == 0 )
|
|
return SOLARAUTH_SERVER;
|
|
else if( strcmp( pszServerName, "SOLARAUTH\\data.encrypted.Russia") == 0 )
|
|
return SOLARAUTH_SERVER;
|
|
else if( strcmp( pszServerName, "SOLARAUTH\\data.encrypted.Global") == 0 )
|
|
return SOLARAUTH_SERVER;
|
|
#endif
|
|
else if( strcmp( pszServerName, "SunServer") == 0 )
|
|
return SUN_SERVER;
|
|
else
|
|
return MAX_SERVER;
|
|
}
|
|
|
|
|
|
//현재 이 모듈이 위치하고 있는 곳의 절대경로를 리턴한다.
|
|
void CStartManager::GetModuleDirectory( TCHAR* pszDirPath, int nSize )
|
|
{
|
|
ZeroMemory( pszDirPath, nSize );
|
|
TCHAR szPath[MAX_PATH];
|
|
TCHAR szDrive[MAX_PATH], szDir[MAX_PATH];
|
|
GetModuleFileName( NULL, szPath, MAX_PATH);
|
|
_splitpath( szPath, szDrive, szDir, NULL, NULL );
|
|
_snprintf( pszDirPath, nSize, "%s%s", szDrive, szDir);
|
|
}
|
|
|