bool MWWorld::Cells::readRecord (ESM::ESMReader& reader, uint32_t type, const std::map<int, int>& contentFileMap) { if (type==ESM::REC_CSTA) { ESM::CellState state; state.mId.load (reader); CellStore *cellStore = 0; try { cellStore = getCell (state.mId); } catch (...) { // silently drop cells that don't exist anymore std::cerr << "Dropping state for cell " << state.mId.mWorldspace << " (cell no longer exists)" << std::endl; reader.skipRecord(); return true; } state.load (reader); cellStore->loadState (state); if (state.mHasFogOfWar) cellStore->readFog(reader); if (cellStore->getState()!=CellStore::State_Loaded) cellStore->load (); GetCellStoreCallback callback(*this); cellStore->readReferences (reader, contentFileMap, &callback); return true; } return false; }
bool MWWorld::Cells::readRecord (ESM::ESMReader& reader, uint32_t type, const std::map<int, int>& contentFileMap) { if (type==ESM::REC_CSTA) { ESM::CellState state; state.mId.load (reader); CellStore *cellStore = 0; try { cellStore = getCell (state.mId); } catch (...) { // silently drop cells that don't exist anymore reader.skipRecord(); return true; /// \todo log } state.load (reader); cellStore->loadState (state); if (state.mHasFogOfWar) cellStore->readFog(reader); if (cellStore->getState()!=CellStore::State_Loaded) cellStore->load (mStore, mReader); cellStore->readReferences (reader, contentFileMap); return true; } return false; }