void AbacusGlobal::insertParameter(const char *name, const char *value) { if(!name||!value) { Logger::ifout() << "AbacusGlobal:insertParameter(): both arguments must\nbe non-zero pointers\n"; OGDF_THROW_PARAM(AlgorithmFailureException, ogdf::afcGlobal); } string stName(name); string stValue(value); paramTable_.overWrite(stName, stValue); }
CBaseLayer* CLayerManager::GetLayer(char *pName) { for ( int i = 0 ; i < m_nLayerCount ; i++ ) //레이어 수 까지 반복 { CString stName( pName ) ; if ( !stName.Compare( mp_aLayers[i]->GetLayerName( ) ) ) // 이름이 같으면 return mp_aLayers[i] ; // 현재 레이어 반환 } return NULL ; // 없을 경우 널 포인터 반환 }
CBaseLayer* CLayerManager::GetLayer(char *pName) { for ( int i = 0 ; i < m_nLayerCount ; i++ ) { CString stName( pName ) ; if ( !stName.Compare( mp_aLayers[i]->GetLayerName( ) ) ) return mp_aLayers[i] ; } return NULL ; }
bool ITEM_MANAGER::ReadMonsterDropItemGroup(const char * c_pszFileName) { CTextFileLoader loader; if (!loader.Load(c_pszFileName)) return false; for (DWORD i = 0; i < loader.GetChildNodeCount(); ++i) { std::string stName(""); loader.GetCurrentNodeName(&stName); if (strncmp (stName.c_str(), "kr_", 3) == 0) { if (LC_IsYMIR()) { stName.assign(stName, 3, stName.size() - 3); } else { continue; } } loader.SetChildNode(i); int iMobVnum = 0; int iKillDrop = 0; int iLevelLimit = 0; std::string strType(""); if (!loader.GetTokenString("type", &strType)) { sys_err("ReadMonsterDropItemGroup : Syntax error %s : no type (kill|drop), node %s", c_pszFileName, stName.c_str()); loader.SetParentNode(); return false; } if (!loader.GetTokenInteger("mob", &iMobVnum)) { sys_err("ReadMonsterDropItemGroup : Syntax error %s : no mob vnum, node %s", c_pszFileName, stName.c_str()); loader.SetParentNode(); return false; } if (strType == "kill") { if (!loader.GetTokenInteger("kill_drop", &iKillDrop)) { sys_err("ReadMonsterDropItemGroup : Syntax error %s : no kill drop count, node %s", c_pszFileName, stName.c_str()); loader.SetParentNode(); return false; } } else { iKillDrop = 1; } if ( strType == "limit" ) { if ( !loader.GetTokenInteger("level_limit", &iLevelLimit) ) { sys_err("ReadmonsterDropItemGroup : Syntax error %s : no level_limit, node %s", c_pszFileName, stName.c_str()); loader.SetParentNode(); return false; } } else { iLevelLimit = 0; } sys_log(0,"MOB_ITEM_GROUP %s [%s] %d %d", stName.c_str(), strType.c_str(), iMobVnum, iKillDrop); if (iKillDrop == 0) { loader.SetParentNode(); continue; } TTokenVector* pTok = NULL; if (strType == "kill") { CMobItemGroup * pkGroup = M2_NEW CMobItemGroup(iMobVnum, iKillDrop, stName); for (int k = 1; k < 256; ++k) { char buf[4]; snprintf(buf, sizeof(buf), "%d", k); if (loader.GetTokenVector(buf, &pTok)) { //sys_log(1, " %s %s", pTok->at(0).c_str(), pTok->at(1).c_str()); std::string& name = pTok->at(0); DWORD dwVnum = 0; if (!GetVnumByOriginalName(name.c_str(), dwVnum)) { str_to_number(dwVnum, name.c_str()); if (!ITEM_MANAGER::instance().GetTable(dwVnum)) { sys_err("ReadMonsterDropItemGroup : there is no item %s : node %s : vnum %d", name.c_str(), stName.c_str(), dwVnum); return false; } } int iCount = 0; str_to_number(iCount, pTok->at(1).c_str()); if (iCount<1) { sys_err("ReadMonsterDropItemGroup : there is no count for item %s : node %s : vnum %d, count %d", name.c_str(), stName.c_str(), dwVnum, iCount); return false; } int iPartPct = 0; str_to_number(iPartPct, pTok->at(2).c_str()); if (iPartPct == 0) { sys_err("ReadMonsterDropItemGroup : there is no drop percent for item %s : node %s : vnum %d, count %d, pct %d", name.c_str(), stName.c_str(), iPartPct); return false; } int iRarePct = 0; str_to_number(iRarePct, pTok->at(3).c_str()); iRarePct = MINMAX(0, iRarePct, 100); sys_log(0," %s count %d rare %d", name.c_str(), iCount, iRarePct); pkGroup->AddItem(dwVnum, iCount, iPartPct, iRarePct); continue; } break; } m_map_pkMobItemGroup.insert(std::map<DWORD, CMobItemGroup*>::value_type(iMobVnum, pkGroup)); } else if (strType == "drop") { CDropItemGroup* pkGroup; bool bNew = true; itertype(m_map_pkDropItemGroup) it = m_map_pkDropItemGroup.find (iMobVnum); if (it == m_map_pkDropItemGroup.end()) { pkGroup = M2_NEW CDropItemGroup(0, iMobVnum, stName); } else { bNew = false; CDropItemGroup* pkGroup = it->second; } for (int k = 1; k < 256; ++k) { char buf[4]; snprintf(buf, sizeof(buf), "%d", k); if (loader.GetTokenVector(buf, &pTok)) { std::string& name = pTok->at(0); DWORD dwVnum = 0; if (!GetVnumByOriginalName(name.c_str(), dwVnum)) { str_to_number(dwVnum, name.c_str()); if (!ITEM_MANAGER::instance().GetTable(dwVnum)) { sys_err("ReadDropItemGroup : there is no item %s : node %s", name.c_str(), stName.c_str()); M2_DELETE(pkGroup); return false; } } int iCount = 0; str_to_number(iCount, pTok->at(1).c_str()); if (iCount < 1) { sys_err("ReadMonsterDropItemGroup : there is no count for item %s : node %s", name.c_str(), stName.c_str()); M2_DELETE(pkGroup); return false; } float fPercent = atof(pTok->at(2).c_str()); DWORD dwPct = (DWORD)(10000.0f * fPercent); sys_log(0," name %s pct %d count %d", name.c_str(), dwPct, iCount); pkGroup->AddItem(dwVnum, dwPct, iCount); continue; } break; } if (bNew) m_map_pkDropItemGroup.insert(std::map<DWORD, CDropItemGroup*>::value_type(iMobVnum, pkGroup)); } else if ( strType == "limit" ) { CLevelItemGroup* pkLevelItemGroup = M2_NEW CLevelItemGroup(iLevelLimit); for ( int k=1; k < 256; k++ ) { char buf[4]; snprintf(buf, sizeof(buf), "%d", k); if ( loader.GetTokenVector(buf, &pTok) ) { std::string& name = pTok->at(0); DWORD dwItemVnum = 0; if (false == GetVnumByOriginalName(name.c_str(), dwItemVnum)) { str_to_number(dwItemVnum, name.c_str()); if ( !ITEM_MANAGER::instance().GetTable(dwItemVnum) ) { M2_DELETE(pkLevelItemGroup); return false; } } int iCount = 0; str_to_number(iCount, pTok->at(1).c_str()); if (iCount < 1) { M2_DELETE(pkLevelItemGroup); return false; } float fPct = atof(pTok->at(2).c_str()); DWORD dwPct = (DWORD)(10000.0f * fPct); pkLevelItemGroup->AddItem(dwItemVnum, dwPct, iCount); continue; } break; } m_map_pkLevelItemGroup.insert(std::map<DWORD, CLevelItemGroup*>::value_type(iMobVnum, pkLevelItemGroup)); } else if (strType == "thiefgloves") { CBuyerThiefGlovesItemGroup* pkGroup = M2_NEW CBuyerThiefGlovesItemGroup(0, iMobVnum, stName); for (int k = 1; k < 256; ++k) { char buf[4]; snprintf(buf, sizeof(buf), "%d", k); if (loader.GetTokenVector(buf, &pTok)) { std::string& name = pTok->at(0); DWORD dwVnum = 0; if (!GetVnumByOriginalName(name.c_str(), dwVnum)) { str_to_number(dwVnum, name.c_str()); if (!ITEM_MANAGER::instance().GetTable(dwVnum)) { sys_err("ReadDropItemGroup : there is no item %s : node %s", name.c_str(), stName.c_str()); M2_DELETE(pkGroup); return false; } } int iCount = 0; str_to_number(iCount, pTok->at(1).c_str()); if (iCount < 1) { sys_err("ReadMonsterDropItemGroup : there is no count for item %s : node %s", name.c_str(), stName.c_str()); M2_DELETE(pkGroup); return false; } float fPercent = atof(pTok->at(2).c_str()); DWORD dwPct = (DWORD)(10000.0f * fPercent); sys_log(0," name %s pct %d count %d", name.c_str(), dwPct, iCount); pkGroup->AddItem(dwVnum, dwPct, iCount); continue; } break; } m_map_pkGloveItemGroup.insert(std::map<DWORD, CBuyerThiefGlovesItemGroup*>::value_type(iMobVnum, pkGroup)); } else { sys_err("ReadMonsterDropItemGroup : Syntax error %s : invalid type %s (kill|drop), node %s", c_pszFileName, strType.c_str(), stName.c_str()); loader.SetParentNode(); return false; } loader.SetParentNode(); } return true; }