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

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