void CPythonMiniMap::__LoadAtlasMarkInfo() { ClearAtlasMarkInfo(); ClearGuildArea(); CPythonBackground& rkBG=CPythonBackground::Instance(); if (!rkBG.IsMapOutdoor()) return; CMapOutdoor& rkMap=rkBG.GetMapOutdoorRef(); // LOCALE char szAtlasMarkInfoFileName[64+1]; _snprintf(szAtlasMarkInfoFileName, sizeof(szAtlasMarkInfoFileName), "%s/map/%s_point.txt", LocaleService_GetLocalePath(), rkMap.GetName().c_str()); // END_OF_LOCALE CTokenVectorMap stTokenVectorMap; if (!LoadMultipleTextData(szAtlasMarkInfoFileName, stTokenVectorMap)) { Tracef(" CPythonMiniMap::__LoadAtlasMarkInfo File Load %s ERROR\n", szAtlasMarkInfoFileName); return; } const std::string strType[TYPE_COUNT] = { "OPC", "OPCPVP", "OPCPVPSELF", "NPC", "MONSTER", "WARP", "WAYPOINT" }; for (DWORD i = 0; i < stTokenVectorMap.size(); ++i) { char szMarkInfoName[32+1]; _snprintf(szMarkInfoName, sizeof(szMarkInfoName), "%d", i); if (stTokenVectorMap.end() == stTokenVectorMap.find(szMarkInfoName)) continue; const CTokenVector & rVector = stTokenVectorMap[szMarkInfoName]; const std::string & c_rstrType = rVector[0].c_str(); const std::string & c_rstrPositionX = rVector[1].c_str(); const std::string & c_rstrPositionY = rVector[2].c_str(); const std::string & c_rstrText = rVector[3].c_str(); TAtlasMarkInfo aAtlasMarkInfo; for ( int i = 0; i < TYPE_COUNT; ++i) { if (0 == c_rstrType.compare(strType[i])) aAtlasMarkInfo.m_byType = (BYTE)i; } aAtlasMarkInfo.m_fX = atof(c_rstrPositionX.c_str()); aAtlasMarkInfo.m_fY = atof(c_rstrPositionY.c_str()); aAtlasMarkInfo.m_strText = c_rstrText; aAtlasMarkInfo.m_fScreenX = aAtlasMarkInfo.m_fX / m_fAtlasMaxX * m_fAtlasImageSizeX - (float)m_WhiteMark.GetWidth() / 2.0f; aAtlasMarkInfo.m_fScreenY = aAtlasMarkInfo.m_fY / m_fAtlasMaxY * m_fAtlasImageSizeY - (float)m_WhiteMark.GetHeight() / 2.0f; switch(aAtlasMarkInfo.m_byType) { case TYPE_NPC: m_AtlasNPCInfoVector.push_back(aAtlasMarkInfo); break; case TYPE_WARP: m_AtlasWarpInfoVector.push_back(aAtlasMarkInfo); break; } } }