1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2026-01-31 21:48:25 +00:00

Simplify the code

This commit is contained in:
fredzio 2021-05-05 20:28:46 +02:00
parent 00de540a31
commit 65d8608183

View file

@ -12,24 +12,6 @@
namespace
{
template<typename T>
class GetRecords
{
const std::string mFind;
std::vector<const T*> *mRecords;
public:
GetRecords(const std::string &str, std::vector<const T*> *records)
: mFind(Misc::StringUtils::lowerCase(str)), mRecords(records)
{ }
void operator()(const T *item)
{
if(Misc::StringUtils::ciCompareLen(mFind, item->mId, mFind.size()) == 0)
mRecords->push_back(item);
}
};
struct Compare
{
bool operator()(const ESM::Land *x, const ESM::Land *y) {
@ -169,7 +151,11 @@ namespace MWWorld
const T *Store<T>::searchRandom(const std::string &id) const
{
std::vector<const T*> results;
std::for_each(mShared.begin(), mShared.end(), GetRecords<T>(id, &results));
std::copy_if(mShared.begin(), mShared.end(), results.begin(),
[&id](const T* item)
{
return Misc::StringUtils::ciCompareLen(id, item->mId, id.size()) == 0;
});
if(!results.empty())
return results[Misc::Rng::rollDice(results.size())];
return nullptr;