summaryrefslogtreecommitdiff
path: root/src/environment.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/environment.cpp')
-rw-r--r--src/environment.cpp33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/environment.cpp b/src/environment.cpp
index 0c6d829f5..001b53a40 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -646,27 +646,30 @@ public:
= abm->getRequiredNeighbors();
for(std::set<std::string>::iterator
i = required_neighbors_s.begin();
- i != required_neighbors_s.end(); i++){
- content_t c = ndef->getId(*i);
- if(c == CONTENT_IGNORE)
- continue;
- aabm.required_neighbors.insert(c);
+ i != required_neighbors_s.end(); i++)
+ {
+ ndef->getIds(*i, aabm.required_neighbors);
}
// Trigger contents
std::set<std::string> contents_s = abm->getTriggerContents();
for(std::set<std::string>::iterator
- i = contents_s.begin(); i != contents_s.end(); i++){
- content_t c = ndef->getId(*i);
- if(c == CONTENT_IGNORE)
- continue;
- std::map<content_t, std::list<ActiveABM> >::iterator j;
- j = m_aabms.find(c);
- if(j == m_aabms.end()){
- std::list<ActiveABM> aabmlist;
- m_aabms[c] = aabmlist;
+ i = contents_s.begin(); i != contents_s.end(); i++)
+ {
+ std::set<content_t> ids;
+ ndef->getIds(*i, ids);
+ for(std::set<content_t>::const_iterator k = ids.begin();
+ k != ids.end(); k++)
+ {
+ content_t c = *k;
+ std::map<content_t, std::list<ActiveABM> >::iterator j;
j = m_aabms.find(c);
+ if(j == m_aabms.end()){
+ std::list<ActiveABM> aabmlist;
+ m_aabms[c] = aabmlist;
+ j = m_aabms.find(c);
+ }
+ j->second.push_back(aabm);
}
- j->second.push_back(aabm);
}
}
}