You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.6 KiB
C++
81 lines
1.6 KiB
C++
13 years ago
|
|
||
|
#include "localscripts.hpp"
|
||
|
|
||
|
void MWWorld::LocalScripts::setIgnore (const Ptr& ptr)
|
||
|
{
|
||
|
mIgnore = ptr;
|
||
|
}
|
||
|
|
||
|
void MWWorld::LocalScripts::startIteration()
|
||
|
{
|
||
|
mIter = mScripts.begin();
|
||
|
}
|
||
|
|
||
|
bool MWWorld::LocalScripts::isFinished() const
|
||
|
{
|
||
|
if (mIter==mScripts.end())
|
||
|
return true;
|
||
|
|
||
|
if (!mIgnore.isEmpty() && mIter->second==mIgnore)
|
||
|
{
|
||
|
std::list<std::pair<std::string, Ptr> >::iterator iter = mIter;
|
||
|
return ++iter==mScripts.end();
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
std::pair<std::string, MWWorld::Ptr> MWWorld::LocalScripts::getNext()
|
||
|
{
|
||
|
assert (!isFinished());
|
||
|
|
||
|
std::list<std::pair<std::string, Ptr> >::iterator iter = mIter++;
|
||
|
|
||
|
if (mIgnore.isEmpty() || iter->second!=mIgnore)
|
||
|
return *iter;
|
||
|
|
||
|
return getNext();
|
||
|
}
|
||
|
|
||
|
void MWWorld::LocalScripts::add (const std::string& scriptName, const Ptr& ptr)
|
||
|
{
|
||
|
mScripts.push_back (std::make_pair (scriptName, ptr));
|
||
|
}
|
||
|
|
||
|
void MWWorld::LocalScripts::clear()
|
||
|
{
|
||
|
mScripts.clear();
|
||
|
}
|
||
|
|
||
|
void MWWorld::LocalScripts::clearCell (Ptr::CellStore *cell)
|
||
|
{
|
||
|
std::list<std::pair<std::string, Ptr> >::iterator iter = mScripts.begin();
|
||
|
|
||
|
while (iter!=mScripts.end())
|
||
|
{
|
||
|
if (iter->second.getCell()==cell)
|
||
|
{
|
||
|
if (iter==mIter)
|
||
|
++mIter;
|
||
|
|
||
|
mScripts.erase (iter++);
|
||
|
}
|
||
|
else
|
||
|
++iter;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void MWWorld::LocalScripts::remove (const Ptr& ptr)
|
||
|
{
|
||
|
for (std::list<std::pair<std::string, Ptr> >::iterator iter = mScripts.begin();
|
||
|
iter!=mScripts.end(); ++iter)
|
||
|
if (iter->second==ptr)
|
||
|
{
|
||
|
if (iter==mIter)
|
||
|
++mIter;
|
||
|
|
||
|
mScripts.erase (iter);
|
||
|
break;
|
||
|
}
|
||
|
}
|