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

178 lines
4.6 KiB
C++

#include "StdAfx.h"
#include ".\infomanager.h"
#include "SunServerInfo.h"
#include "WorldServerInfo.h"
#include "GuildServerInfo.h"
#include "MasterServerInfo.h"
#include "DBProxyInfo.h"
ServerInfoManager* ServerInfoManager::m_pInstance = NULL;
ServerInfoManager::ServerInfoManager(void)
{
}
ServerInfoManager::~ServerInfoManager(void)
{
ReleaseInfo();
}
void ServerInfoManager::ReleaseInfo()
{
SERVERINFO_ITER iter;
for( iter = m_mapServerInfo.begin(); iter != m_mapServerInfo.end(); iter++ )
{
ServerInfo* pInfo = iter->second;
if( pInfo )
delete pInfo;
}
m_mapServerInfo.clear();
}
void ServerInfoManager::Init()
{
ServerInfo* pInfo = NULL;
//1. SunServer정보 생성.
pInfo = new SunServerInfo();
m_mapServerInfo.insert( make_pair( AGENT_SERVER, pInfo ) );
pInfo = new SunServerInfo();
m_mapServerInfo.insert( make_pair( BATTLE_SERVER, pInfo ) );
pInfo = new SunServerInfo();
m_mapServerInfo.insert( make_pair( FIELD_SERVER, pInfo ) );
pInfo = new SunServerInfo();
m_mapServerInfo.insert( make_pair( GAME_DBPROXY, pInfo ) );
//2. WorldServer정보 생성.
pInfo = new WorldServerInfo;
m_mapServerInfo.insert( make_pair( WORLD_SERVER, pInfo ) );
//3. GuildServer정보 생성.
pInfo = new GuildServerInfo;
m_mapServerInfo.insert( make_pair( GUILD_SERVER, pInfo ) );
//3. MasterServer정보 생성.
pInfo = new MasterServerInfo;
m_mapServerInfo.insert( make_pair( MASTER_SERVER, pInfo ) );
//4. DBProxyServer
pInfo = new DBProxyInfo;
/// m_mapServerInfo.insert( make_pair( GAME_DBPROXY_EX, pInfo ) );
}
void ServerInfoManager::LoadScript()
{
//전 스크립트를 로딩한다.
SERVERINFO_ITER iter;
TCHAR szPath[MAX_PATH], szTemp[MAX_PATH];
GetCurrentDirectory( MAX_PATH, szPath );
//1. SunServer
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\AgentServer.ini" );
iter = m_mapServerInfo.find( AGENT_SERVER );
if( iter != m_mapServerInfo.end() )
iter->second->LoadScript( szTemp );
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\BattleServer.ini" );
iter = m_mapServerInfo.find( BATTLE_SERVER );
if( iter != m_mapServerInfo.end() )
iter->second->LoadScript( szTemp );
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\FieldServer.ini" );
iter = m_mapServerInfo.find( FIELD_SERVER );
if( iter != m_mapServerInfo.end() )
iter->second->LoadScript( szTemp );
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\DBProxyServer.ini" );
iter = m_mapServerInfo.find( GAME_DBPROXY );
if( iter != m_mapServerInfo.end() )
iter->second->LoadScript( szTemp );
//2. WorldServer
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\WorldServer.ini" );
iter = m_mapServerInfo.find( WORLD_SERVER );
if( iter != m_mapServerInfo.end() )
iter->second->LoadScript( szTemp );
//3. GuildServer
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\GuildServer.ini" );
iter = m_mapServerInfo.find( GUILD_SERVER );
if( iter != m_mapServerInfo.end() )
iter->second->LoadScript( szTemp );
//4. MasterServer
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\MasterServer.ini" );
iter = m_mapServerInfo.find( MASTER_SERVER );
if( iter != m_mapServerInfo.end() )
iter->second->LoadScript( szTemp );
//5. DBProxy
strncpy( szTemp, szPath, MAX_PATH );
strcat( szTemp, "\\DBPServer.ini" );
//iter = m_mapServerInfo.find( GAME_DBPROXY_EX );
//if( iter != m_mapServerInfo.end() )
// iter->second->LoadScript( szTemp );
}
void ServerInfoManager::SaveScript( BYTE byServerType )
{
//전 스크립트를 저장한다.
TCHAR szPath[MAX_PATH];
GetCurrentDirectory( MAX_PATH, szPath );
TCHAR szTemp[MAX_PATH];
SERVERINFO_ITER iter;
strncpy( szTemp, szPath, MAX_PATH );
//1. SunServer
if( byServerType == AGENT_SERVER )
strcat( szTemp, "\\AgentServer.ini" );
else if( byServerType == BATTLE_SERVER )
strcat( szTemp, "\\BattleServer.ini" );
else if( byServerType == BATTLE_SERVER )
strcat( szTemp, "\\FieldServer.ini" );
else if( byServerType == GAME_DBPROXY )
strcat( szTemp, "\\DBProxyServer.ini" );
else if( byServerType == WORLD_SERVER )
strcat( szTemp, "\\WorldServer.ini" );
else if( byServerType == GUILD_SERVER )
strcat( szTemp, "\\GuildServer.ini" );
else if( byServerType == MASTER_SERVER )
strcat( szTemp, "\\MasterServer.ini" );
//else if( byServerType == GAME_DBPROXY_EX )
// strcat( szTemp, "\\DBPServer.ini" );
iter = m_mapServerInfo.find( byServerType );
if( iter != m_mapServerInfo.end() )
iter->second->SaveScript( szTemp );
}
ServerInfo* ServerInfoManager::GetServerInfo( BYTE byServerType )
{
SERVERINFO_ITER iter;
iter = m_mapServerInfo.find( byServerType );
if( iter == m_mapServerInfo.end() )
return NULL;
return iter->second;
}