This reverts commit 80a25bcd3021f7ebfaf2f864e34532009b9b8aeb.
It didn't really make sense to do all those changes in the same MR
partially Revert "Store refactoring: more forgotten storeSpecialization.hpp"
This reverts commit 9943a5bc96b9025f06cbaac5bb7f1bf51ebc746f.
removed remaining references to storeSpecialization CMakeLists.txt, and landmanager.cpp
To fix compilation error with -D_GLIBCXX_DEBUG:
/home/elsid/dev/openmw/apps/openmw/mwdialogue/dialoguemanagerimp.cpp: In member function ‘virtual void MWDialogue::DialogueManager::write(ESM::ESMWriter&, Loading::Listener&) const’:
/home/elsid/dev/openmw/apps/openmw/mwdialogue/dialoguemanagerimp.cpp:679:78: error: no matching function for call to ‘__gnu_debug::_Safe_iterator<std::_Rb_tree_const_iterator<std::__cxx11::basic_string<char> >, std::__debug::set<std::__cxx11::basic_string<char> >, std::bidirectional_iterator_tag>::_Safe_iterator(std::__debug::set<std::__cxx11::basic_string<char>, Misc::StringUtils::CiComp>::const_iterator)’
679 | for (std::set<std::string>::const_iterator iter (mKnownTopics.begin());
| ^
Currently, we use a peculiar mapping of ESM classes by their std::type_info::name. This mapping is an undefined behaviour because std::type_info::name is strictly implementation defined. It could return a non-unique value on some platforms. With this PR we use the unsigned int sRecordId of the ESM class as a more efficient lookup type that does not build on undefined behaviour. We can expect marginally faster save-game loading with these changes as well.
For some reason we have commented std::move keywords in keywordsearch.hpp while they are quite beneficial. openmw_test_suite for keywordsearch.hpp takes 30% less time with these changes.
Other correction not linked with the bug:
- reset mActorKnownTopicsFlag at the same time as mActorKnownTopics
- don't call updateTopics in addResponse, it is already handled by the response
callback
next answer:
- if the answer was already heard, apply "color topic exhaused" setting
- if the answer was never heard, and the current actor is specified in
the dialog, apply "color topic specific"
- otherwise, do nothing special