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>
157 lines
5.2 KiB
C++
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);
|
|
}
|