| 158 | } |
| 159 | |
| 160 | ScriptIdsWithInitializationData ScriptsConfiguration::getLocalConf( |
| 161 | uint32_t type, const ESM::RefId& recordId, ESM::RefNum refnum) const |
| 162 | { |
| 163 | ScriptIdsWithInitializationData res; |
| 164 | auto typeIt = mScriptsPerType.find(type); |
| 165 | if (typeIt != mScriptsPerType.end()) |
| 166 | for (int scriptId : typeIt->second) |
| 167 | res[scriptId] = mScripts[scriptId].mInitializationData; |
| 168 | auto recordIt = mScriptsPerRecordId.find(recordId); |
| 169 | if (recordIt != mScriptsPerRecordId.end()) |
| 170 | { |
| 171 | for (const DetailedConf& d : recordIt->second) |
| 172 | { |
| 173 | if (d.mAttach) |
| 174 | res[d.mScriptId] = d.mInitializationData; |
| 175 | else |
| 176 | res.erase(d.mScriptId); |
| 177 | } |
| 178 | } |
| 179 | if (!refnum.hasContentFile()) |
| 180 | return res; |
| 181 | auto refIt = mScriptsPerRefNum.find(refnum); |
| 182 | if (refIt == mScriptsPerRefNum.end()) |
| 183 | return res; |
| 184 | for (const DetailedConf& d : refIt->second) |
| 185 | { |
| 186 | if (d.mAttach) |
| 187 | res[d.mScriptId] = d.mInitializationData; |
| 188 | else |
| 189 | res.erase(d.mScriptId); |
| 190 | } |
| 191 | return res; |
| 192 | } |
| 193 | |
| 194 | void ScriptsConfiguration::read(ESM::ESMReader& reader) |
| 195 | { |