summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortom <tom@ground-control>2016-05-02 18:03:07 -0500
committertom <tom@ground-control>2016-05-02 18:03:07 -0500
commitb5b0644cf5ca8f5a35c023a1b87a3e28ff33fc51 (patch)
tree6f579be7f5f591340043f56c95618a1dfe9d18b3 /src
parenteac63735fb84ba3b59b5fc887d959e1492ef246d (diff)
made list all iterators
Diffstat (limited to 'src')
-rw-r--r--src/list.cpp63
1 files changed, 26 insertions, 37 deletions
diff --git a/src/list.cpp b/src/list.cpp
index e2724f3..ad9ab58 100644
--- a/src/list.cpp
+++ b/src/list.cpp
@@ -34,44 +34,33 @@ void List::Place()
void List::Behavior()
{
- for(int i = 0; i<C.size(); i++)
- {
- C[i].Behavior();
-
- vector<Resource*> N;
-
- for(int j = 0; j < R.size(); j++)
- if(C[i].getBestSense()>Distance(C[i].getLocation(),R[j].getLocation()))
- N.push_back(&R[j]);
-
- C[i].giveR(N);
- N.clear();
-
- vector<Creature*> M;
- for(int j = 0; j < C.size(); j++)
- {
- if(j==i)
- continue;
- else if(C[i].getBestSense()>Distance(C[i].getLocation(),C[j].getLocation()))
- M.push_back(&C[j]);
- }
+ for(vector<Creature>::iterator it = C.begin(); it!=C.end(); it++){
+ it->Behavior();
- C[i].giveC(M);
- M.clear();
+ vector<Resource*> N;
+ for(vector <Resource>::iterator jt = R.begin(); jt!=R.end(); jt++){
+ if( it->getBestSense() > Distance(it->getLocation(),jt->getLocation()) )
+ N.push_back(&(*jt));
+ }
+ it->giveR(N);
+
+ vector<Creature*> M;
+ for(vector <Creature>::iterator jt = C.begin(); jt!=C.end(); jt++){
+ if( jt == it)
+ continue;
+ else if( it->getBestSense() > Distance(it->getLocation(),jt->getLocation()) )
+ M.push_back(&(*jt));
+ }
+ it->giveC(M);
+
+ M.clear();
+ N.clear();
- // This kills the creature
- if(C[i].getHealth()<=0)
- {
- Location z = C[i].getLocation();
- Resource r = Resource(main,"img/Cdead.png",z);
- R.push_back(r);
- C.erase(C.begin()+i);
+ if(it->getHealth()<=0){
+ Location z = it->getLocation();
+ Resource r = Resource(main,"img/Cdead.png",z);
+ R.push_back(r);
+ C.erase(it--);
+ }
}
- }
-}
-
-double List::Distance(Location A, Location B)
-{
- //computes distance between two points
- return sqrt(pow(A.x - B.x, 2) + pow(A.y - B.y, 2));
}