summaryrefslogtreecommitdiff
path: root/src/list.cpp
diff options
context:
space:
mode:
authortom <tom@ground-control>2016-05-02 22:02:25 -0500
committertom <tom@ground-control>2016-05-02 22:02:25 -0500
commite7cac5098145d75a680e35787f7c504caf16965b (patch)
tree8256bd87b35c5aadcef0e5bd16030a4196cbbc7e /src/list.cpp
parent8d9ad3eb74bc0dfc647abf03b7b99ed16f2a9115 (diff)
fixed issue, was related to erasing nodes within vectors while using iterators
Diffstat (limited to 'src/list.cpp')
-rw-r--r--src/list.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/list.cpp b/src/list.cpp
index ff9722f..5d8ae35 100644
--- a/src/list.cpp
+++ b/src/list.cpp
@@ -21,10 +21,10 @@ List::List(Window m)
void List::Place()
{
- for(vector<Creature>::iterator it = C.begin(); it!=C.end(); it++)
+ for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++)
it->Place();
- for(vector<Resource>::iterator it = R.begin(); it!=R.end(); it++){
+ for(list<Resource>::iterator it = R.begin(); it!=R.end(); it++){
if(it->getAmount()<=0)
R.erase(it--);
else
@@ -34,9 +34,9 @@ void List::Place()
void List::Behavior()
{
- for(vector<Creature>::iterator it = C.begin(); it!=C.end(); it++){
+ for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++){
- vector<Entity*> N = getNear(*it);
+ list<Entity*> N = getNear(*it);
it->giveN(N);
it->Behavior();
@@ -50,16 +50,16 @@ void List::Behavior()
}
}
-vector<Entity*> List::getNear(Creature nC)
+list<Entity*> List::getNear(Creature nC)
{
- vector<Entity*> N;
+ list<Entity*> N;
- for(vector <Resource>::iterator it = R.begin(); it!=R.end(); it++){
+ for(list <Resource>::iterator it = R.begin(); it!=R.end(); it++){
if( nC.getBestSense() > Distance(nC.getLocation(),it->getLocation()) )
N.push_back(&(*it));
}
- for(vector <Creature>::iterator it = C.begin(); it!=C.end(); it++){
+ for(list <Creature>::iterator it = C.begin(); it!=C.end(); it++){
if( &nC == &(*it))
continue;
else if( nC.getBestSense() > Distance(nC.getLocation(),it->getLocation()) )