Use overload

This commit is contained in:
SkyHasACat 2025-08-02 06:08:29 -07:00
parent 5203f300e2
commit 7c665643ad
2 changed files with 20 additions and 4 deletions

View File

@ -91,10 +91,10 @@ namespace
npc.mNpdt.mDisposition = rec["baseDisposition"].get<int>();
if (rec["baseGold"] != sol::nil)
npc.mNpdt.mGold = static_cast<int>(rec["baseGold"]);
npc.mNpdt.mGold = rec["baseGold"].get<int>();
if (rec["bloodType"] != sol::nil)
npc.mBloodType = static_cast<int>(rec["bloodType"]);
npc.mBloodType = rec["bloodType"].get<int>();
// Services offered
if (rec["servicesOffered"] != sol::nil)

View File

@ -269,13 +269,29 @@ namespace MWWorld
list.push_back((*it)->mId);
}
}
template <class IdType, class StaticMap>
inline bool shouldInsert(const IdType& id, const StaticMap& map)
{
auto it = map.find(id);
return it != map.end();
}
template <class StaticMap>
inline bool shouldInsert(const ESM::RefId& id, const StaticMap& map)
{
if (!id.template is<ESM::GeneratedRefId>())
{
auto it = map.find(id);
return it != map.end();
}
return true;
}
template <class T, class Id>
T* TypedDynamicStore<T, Id>::insert(const T& item, bool overrideOnly)
{
if (overrideOnly)
{
auto it = mStatic.find(item.mId);
if (it == mStatic.end())
if (!shouldInsert(item.mId, mStatic))
return nullptr;
}
std::pair<typename Dynamic::iterator, bool> result = mDynamic.insert_or_assign(item.mId, item);