mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-06-23 09:41:35 +00:00
[Client] Make it possible to override Cell records in ESMStore
This commit is contained in:
parent
0b85829e38
commit
18a7ac5940
3 changed files with 60 additions and 0 deletions
|
@ -241,6 +241,20 @@ namespace MWWorld
|
||||||
///< \return Known type?
|
///< \return Known type?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
Start of tes3mp addition
|
||||||
|
|
||||||
|
Make it possible to override a cell record similarly to how
|
||||||
|
other types of records can be overridden
|
||||||
|
*/
|
||||||
|
template <>
|
||||||
|
inline const ESM::Cell *ESMStore::overrideRecord<ESM::Cell>(const ESM::Cell &cell) {
|
||||||
|
return mCells.override(cell);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
End of tes3mp addition
|
||||||
|
*/
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
inline const ESM::Cell *ESMStore::insert<ESM::Cell>(const ESM::Cell &cell) {
|
inline const ESM::Cell *ESMStore::insert<ESM::Cell>(const ESM::Cell &cell) {
|
||||||
return mCells.insert(cell);
|
return mCells.insert(cell);
|
||||||
|
|
|
@ -801,6 +801,42 @@ namespace MWWorld
|
||||||
list.push_back(sharedCell->mName);
|
list.push_back(sharedCell->mName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
Start of tes3mp addition
|
||||||
|
|
||||||
|
Make it possible to override a cell record similarly to how
|
||||||
|
other types of records can be overridden
|
||||||
|
*/
|
||||||
|
ESM::Cell *Store<ESM::Cell>::override(const ESM::Cell &cell)
|
||||||
|
{
|
||||||
|
if (search(cell) != 0)
|
||||||
|
{
|
||||||
|
for (auto it = mSharedInt.begin(); it != mSharedInt.end(); ++it)
|
||||||
|
{
|
||||||
|
if (Misc::StringUtils::ciEqual((*it)->mName, cell.mName))
|
||||||
|
{
|
||||||
|
(*it) = &const_cast<ESM::Cell&>(cell);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto it = mInt.begin(); it != mInt.end(); ++it)
|
||||||
|
{
|
||||||
|
if (Misc::StringUtils::ciEqual((*it).second.mName, cell.mName))
|
||||||
|
{
|
||||||
|
(*it).second = cell;
|
||||||
|
return &(*it).second;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return insert(cell);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
End of tes3mp addition
|
||||||
|
*/
|
||||||
ESM::Cell *Store<ESM::Cell>::insert(const ESM::Cell &cell)
|
ESM::Cell *Store<ESM::Cell>::insert(const ESM::Cell &cell)
|
||||||
{
|
{
|
||||||
if (search(cell) != 0)
|
if (search(cell) != 0)
|
||||||
|
|
|
@ -315,6 +315,16 @@ namespace MWWorld
|
||||||
|
|
||||||
void listIdentifier(std::vector<std::string> &list) const;
|
void listIdentifier(std::vector<std::string> &list) const;
|
||||||
|
|
||||||
|
/*
|
||||||
|
Start of tes3mp addition
|
||||||
|
|
||||||
|
Make it possible to override a cell record similarly to how
|
||||||
|
other types of records can be overridden
|
||||||
|
*/
|
||||||
|
ESM::Cell *override(const ESM::Cell &cell);
|
||||||
|
/*
|
||||||
|
End of tes3mp addition
|
||||||
|
*/
|
||||||
ESM::Cell *insert(const ESM::Cell &cell);
|
ESM::Cell *insert(const ESM::Cell &cell);
|
||||||
|
|
||||||
bool erase(const ESM::Cell &cell);
|
bool erase(const ESM::Cell &cell);
|
||||||
|
|
Loading…
Reference in a new issue