| 1128 | } |
| 1129 | |
| 1130 | bool CSMWorld::Data::continueLoading(CSMDoc::Messages& messages) |
| 1131 | { |
| 1132 | if (mReaderIndex == 0) |
| 1133 | throw std::logic_error("can't continue loading, because no load has been started"); |
| 1134 | ESM::ReadersCache::BusyItem reader = mReaders.get(mReaderIndex - 1); |
| 1135 | if (!reader->isOpen()) |
| 1136 | throw std::logic_error("can't continue loading, because no load has been started"); |
| 1137 | reader->setEncoder(&mEncoder); |
| 1138 | reader->setIndex(static_cast<int>(mReaderIndex - 1)); |
| 1139 | reader->resolveParentFileIndices(mReaders); |
| 1140 | |
| 1141 | if (!reader->hasMoreRecs()) |
| 1142 | { |
| 1143 | mDialogue = nullptr; |
| 1144 | |
| 1145 | loadFallbackEntries(); |
| 1146 | |
| 1147 | return true; |
| 1148 | } |
| 1149 | |
| 1150 | ESM::NAME n = reader->getRecName(); |
| 1151 | reader->getRecHeader(); |
| 1152 | |
| 1153 | bool unhandledRecord = false; |
| 1154 | |
| 1155 | switch (n.toInt()) |
| 1156 | { |
| 1157 | case ESM::REC_GLOB: |
| 1158 | mGlobals.load(*reader, mBase); |
| 1159 | break; |
| 1160 | case ESM::REC_GMST: |
| 1161 | mGmsts.load(*reader, mBase); |
| 1162 | break; |
| 1163 | case ESM::REC_SKIL: |
| 1164 | mSkills.load(*reader, mBase); |
| 1165 | break; |
| 1166 | case ESM::REC_CLAS: |
| 1167 | mClasses.load(*reader, mBase); |
| 1168 | break; |
| 1169 | case ESM::REC_FACT: |
| 1170 | mFactions.load(*reader, mBase); |
| 1171 | break; |
| 1172 | case ESM::REC_RACE: |
| 1173 | mRaces.load(*reader, mBase); |
| 1174 | break; |
| 1175 | case ESM::REC_SOUN: |
| 1176 | mSounds.load(*reader, mBase); |
| 1177 | break; |
| 1178 | case ESM::REC_SCPT: |
| 1179 | mScripts.load(*reader, mBase); |
| 1180 | break; |
| 1181 | case ESM::REC_REGN: |
| 1182 | mRegions.load(*reader, mBase); |
| 1183 | break; |
| 1184 | case ESM::REC_BSGN: |
| 1185 | mBirthsigns.load(*reader, mBase); |
| 1186 | break; |
| 1187 | case ESM::REC_SPEL: |
no test coverage detected