mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-05 06:40:09 +00:00
Simplify the code
This commit is contained in:
parent
00de540a31
commit
e99b61d362
@ -8,28 +8,11 @@
|
|||||||
#include <components/loadinglistener/loadinglistener.hpp>
|
#include <components/loadinglistener/loadinglistener.hpp>
|
||||||
#include <components/misc/rng.hpp>
|
#include <components/misc/rng.hpp>
|
||||||
|
|
||||||
|
#include <iterator>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
|
|
||||||
namespace
|
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
|
struct Compare
|
||||||
{
|
{
|
||||||
bool operator()(const ESM::Land *x, const ESM::Land *y) {
|
bool operator()(const ESM::Land *x, const ESM::Land *y) {
|
||||||
@ -169,7 +152,11 @@ namespace MWWorld
|
|||||||
const T *Store<T>::searchRandom(const std::string &id) const
|
const T *Store<T>::searchRandom(const std::string &id) const
|
||||||
{
|
{
|
||||||
std::vector<const T*> results;
|
std::vector<const T*> results;
|
||||||
std::for_each(mShared.begin(), mShared.end(), GetRecords<T>(id, &results));
|
std::copy_if(mShared.begin(), mShared.end(), std::back_inserter(results),
|
||||||
|
[&id](const T* item)
|
||||||
|
{
|
||||||
|
return Misc::StringUtils::ciCompareLen(id, item->mId, id.size()) == 0;
|
||||||
|
});
|
||||||
if(!results.empty())
|
if(!results.empty())
|
||||||
return results[Misc::Rng::rollDice(results.size())];
|
return results[Misc::Rng::rollDice(results.size())];
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user