Files
Client/Server/ManageTool/ManageLibrary/Setup/RylServerGroupSetup.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

157 lines
5.2 KiB
C++

#include "stdafx.h"
#include "RylServerGroupSetup.h"
// forward decl.
void ReadRylServerStringValues(CRylServerGroupSetup::ServerStringMap& serverStringMap,
const char* szReadSection, const char* szKey, const char* szFileName);
void WriteRylServerStringValues(CRylServerGroupSetup::ServerStringMap& serverStringMap,
const char* szReadSection, const char* szKey, const char* szFileName);
CRylServerGroupSetup& CRylServerGroupSetup::GetInstance()
{
static CRylServerGroupSetup rylServerGroupSetup;
return rylServerGroupSetup;
}
CRylServerGroupSetup::CRylServerGroupSetup()
{
SetSetupFileName("./RylSetupServerGroup.ini");
Load();
}
CRylServerGroupSetup::~CRylServerGroupSetup()
{
}
const char* CRylServerGroupSetup::GetSetupString(SetupType eSetupType, unsigned long dwKey)
{
ServerStringMap::iterator pos;
ServerStringMap::iterator end;
switch(eSetupType)
{
case SERVER_GROUP: pos = m_ServerGroup.find(dwKey); end = m_ServerGroup.end(); break;
case SERVER_TYPE: pos = m_ServerType.find(dwKey); end = m_ServerType.end(); break;
case SERVER_ZONE: pos = m_ServerZone.find(dwKey); end = m_ServerZone.end(); break;
case SERVER_CHANNEL: pos = m_ServerChannel.find(dwKey); end = m_ServerChannel.end(); break;
default:
return 0;
}
return (pos != end) ? pos->second.c_str() : 0;
}
void CRylServerGroupSetup::Load(const char* szFileName)
{
m_ServerGroup.clear();
m_ServerType.clear();
m_ServerZone.clear();
m_ServerChannel.clear();
ReadRylServerStringValues(m_ServerGroup, "SERVER_GROUP", "SERVER_GROUP", szFileName);
ReadRylServerStringValues(m_ServerType, "SERVER_TYPE", "SERVER_TYPE", szFileName);
ReadRylServerStringValues(m_ServerZone, "GAMESERVER", "GAME_ZONE", szFileName);
ReadRylServerStringValues(m_ServerChannel, "GENERAL", "GAME_CHANNEL", szFileName);
}
void CRylServerGroupSetup::Save(const char* szFileName)
{
WriteRylServerStringValues(m_ServerGroup, "SERVER_GROUP", "SERVER_GROUP", szFileName);
WriteRylServerStringValues(m_ServerType, "SERVER_TYPE", "SERVER_TYPE", szFileName);
WriteRylServerStringValues(m_ServerZone, "GAMESERVER", "GAME_ZONE", szFileName);
WriteRylServerStringValues(m_ServerChannel, "GENERAL", "GAME_CHANNEL", szFileName);
}
void CRylServerGroupSetup::SetSetupFileName(const char* szFileName)
{
if(0 != szFileName)
{
_snprintf(m_szSetupFileName, MAX_PATH - 1, "%s", szFileName);
m_szSetupFileName[MAX_PATH - 1] = 0;
}
}
unsigned long CRylServerGroupSetup::GetStringNum(SetupType eSetupType)
{
switch(eSetupType)
{
case SERVER_GROUP: return m_ServerGroup.size();
case SERVER_TYPE: return m_ServerType.size();
case SERVER_ZONE: return m_ServerZone.size();
case SERVER_CHANNEL: return m_ServerChannel.size();
}
return 0;
}
void ReadRylServerStringValues(CRylServerGroupSetup::ServerStringMap& serverStringMap,
const char* szReadSection, const char* szKey, const char* szFileName)
{
char szNumKey[MAX_PATH];
char szStringKey[MAX_PATH];
char szStringValue[MAX_PATH];
unsigned long dwKey = 0;
const unsigned long dwInvalidKey = 0xFFFFFFFF;
_snprintf(szStringKey, MAX_PATH - 1, "%s_NUM", szKey);
UINT nNum = GetPrivateProfileInt(szReadSection, szStringKey, 0, szFileName);
for(UINT nIndex = 0; nIndex < nNum; ++nIndex)
{
_snprintf(szNumKey, MAX_PATH - 1, "%s_KEY%d", szKey, nIndex);
_snprintf(szStringKey, MAX_PATH - 1, "%s_STRING%d", szKey, nIndex);
dwKey = static_cast<unsigned long>(GetPrivateProfileInt(szReadSection,
szNumKey, dwInvalidKey, szFileName));
GetPrivateProfileString(szReadSection, szStringKey, "",
szStringValue, MAX_PATH, szFileName);
if(dwKey != dwInvalidKey && 0 != szStringValue[0])
{
serverStringMap.insert(CRylServerGroupSetup::ServerStringMap::value_type(dwKey, szStringValue));
}
}
}
void WriteRylServerStringValues(CRylServerGroupSetup::ServerStringMap& serverStringMap,
const char* szReadSection, const char* szKey, const char* szFileName)
{
char szNumKey[MAX_PATH];
char szNumValue[MAX_PATH];
char szStringKey[MAX_PATH];
char szStringValue[MAX_PATH];
CRylServerGroupSetup::ServerStringMap::iterator pos = serverStringMap.begin();
CRylServerGroupSetup::ServerStringMap::iterator end = serverStringMap.end();
UINT nIndex = 0;
for(;pos != end; ++pos, ++nIndex)
{
CRylServerGroupSetup::ServerStringMap::value_type& value = *pos;
_snprintf(szNumKey, MAX_PATH - 1, "%s_KEY%d", szKey, nIndex);
_snprintf(szStringKey, MAX_PATH - 1, "%s_STRING%d", szKey, nIndex);
_snprintf(szNumValue, MAX_PATH - 1, "%d", value.first);
WritePrivateProfileString(szReadSection, szNumKey, szNumValue, szFileName);
WritePrivateProfileString(szReadSection, szStringKey, value.second.c_str(), szFileName);
}
_snprintf(szStringKey, MAX_PATH - 1, "%s_NUM", szKey);
_snprintf(szStringValue, MAX_PATH - 1, "%d", serverStringMap.size());
WritePrivateProfileString(szReadSection, szStringKey, szStringValue, szFileName);
}