forked from metin2/server
54 lines
1.2 KiB
C++
54 lines
1.2 KiB
C++
|
|
#include "stdafx.h"
|
|
|
|
#include "map_location.h"
|
|
|
|
#include "sectree_manager.h"
|
|
|
|
CMapLocation g_mapLocations;
|
|
|
|
bool CMapLocation::Get(int x, int y, int & lIndex, LONG & lAddr, WORD & wPort)
|
|
{
|
|
lIndex = SECTREE_MANAGER::instance().GetMapIndex(x, y);
|
|
|
|
return Get(lIndex, lAddr, wPort);
|
|
}
|
|
|
|
bool CMapLocation::Get(int iIndex, LONG & lAddr, WORD & wPort)
|
|
{
|
|
if (iIndex == 0)
|
|
{
|
|
sys_log(0, "CMapLocation::Get - Error MapIndex[%d]", iIndex);
|
|
return false;
|
|
}
|
|
|
|
std::map<int, TLocation>::iterator it = m_map_address.find(iIndex);
|
|
|
|
if (m_map_address.end() == it)
|
|
{
|
|
sys_log(0, "CMapLocation::Get - Error MapIndex[%d]", iIndex);
|
|
std::map<int, TLocation>::iterator i;
|
|
for ( i = m_map_address.begin(); i != m_map_address.end(); ++i)
|
|
{
|
|
sys_log(0, "Map(%d): Server(%x:%d)", i->first, i->second.addr, i->second.port);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
lAddr = it->second.addr;
|
|
wPort = it->second.port;
|
|
return true;
|
|
}
|
|
|
|
void CMapLocation::Insert(int lIndex, const char * c_pszHost, WORD wPort)
|
|
{
|
|
TLocation loc;
|
|
|
|
loc.addr = inet_addr(c_pszHost);
|
|
loc.port = wPort;
|
|
|
|
m_map_address.insert(std::make_pair(lIndex, loc));
|
|
sys_log(0, "MapLocation::Insert : %d %s %d", lIndex, c_pszHost, wPort);
|
|
}
|
|
|