// ---------------------------------------------------------------------------- void CMissionQueueManager::init() { string sFilename = MissionQueueFile.get(); sFilename = Bsi.getLocalPath() + sFilename; if (CFile::fileExists(sFilename)) { static CPersistentDataRecord pdr; pdr.clear(); pdr.readFromTxtFile(sFilename.c_str()); apply(pdr); } _InitOk = true; }
//----------------------------------------------------------------------------- void CNamedItems::loadNamedItemsFromFile(const std::string & fileName) { CHashMap<std::string, CGameItemPtr>::iterator it; for (it = _NamedItems.begin(); it != _NamedItems.end(); ++it) { GameItemManager.destroyItem((*it).second); } _NamedItems.clear(); string path; try { path = CPath::lookup(fileName); } catch (Exception &) { nlwarning("<NAMED_ITEMS> file '%s' was not found", fileName.c_str()); return; } static CPersistentDataRecord pdr; pdr.clear(); pdr.readFromTxtFile(path.c_str()); CInventoryPtr inv = loadFromPdr(pdr); if (inv == NULL) { nlwarning("<NAMED_ITEMS> error while loading items from the PDR"); return; } const uint size = inv->getSlotCount(); nlinfo("loading '%u' named items", size); for (uint i = 0; inv->getFreeSlotCount() != inv->getSlotCount() && i < size; ++i) { if (inv->getItem(i) == NULL) continue; CGameItemPtr item = inv->removeItem(i); if (item != NULL) { if (item->getSheetId() == CSheetId::Unknown) { nlwarning("<NAMED_ITEMS> item '%u' has invalid sheet id", i); GameItemManager.destroyItem(item); continue; } if (item->getPhraseId().empty()) { nlwarning("<NAMED_ITEMS> item '%u' has no name", i); GameItemManager.destroyItem(item); continue; } if (_NamedItems.find(item->getPhraseId()) != _NamedItems.end()) { nlwarning("<NAMED_ITEMS> item '%u', name '%s' exists more than once", i, item->getPhraseId().c_str()); GameItemManager.destroyItem(item); continue; } // Yoyo: force this item to work with the new form requirement system. // BUT: do it only if _UseNewSystemRequirement==false (if LDs put true, we suppose that the named item has special req value) if(item->getUseNewSystemRequirement()==false) item->computeRequirementFromForm(); nldebug("<NAMED_ITEMS> creating named item '%s'",item->getPhraseId().c_str()); _NamedItems.insert(make_pair(item->getPhraseId(), item)); } } }