diff options
author | tom <tom@ground-control> | 2016-05-02 21:24:02 -0500 |
---|---|---|
committer | tom <tom@ground-control> | 2016-05-02 21:24:02 -0500 |
commit | 8d9ad3eb74bc0dfc647abf03b7b99ed16f2a9115 (patch) | |
tree | eb16f853c280ed200953fbc7a500193a69ef8892 /src/list.cpp | |
parent | 0346965968fb5da1a52ed8f896a922c63ce180f6 (diff) |
implementing better modularity, came into bad bug. All creatures seem to have same near vector.
Diffstat (limited to 'src/list.cpp')
-rw-r--r-- | src/list.cpp | 46 |
1 files changed, 26 insertions, 20 deletions
diff --git a/src/list.cpp b/src/list.cpp index ad9ab58..ff9722f 100644 --- a/src/list.cpp +++ b/src/list.cpp @@ -4,7 +4,7 @@ List::List(Window m) { int i; - for(i=0;i<10;i++) + for(i=0;i<2;i++) { Creature X(m,"img/Cbasic.png"); C.push_back(X); @@ -35,27 +35,12 @@ void List::Place() void List::Behavior() { for(vector<Creature>::iterator it = C.begin(); it!=C.end(); it++){ - it->Behavior(); - - 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); + vector<Entity*> N = getNear(*it); + it->giveN(N); - M.clear(); - N.clear(); - + it->Behavior(); + if(it->getHealth()<=0){ Location z = it->getLocation(); Resource r = Resource(main,"img/Cdead.png",z); @@ -64,3 +49,24 @@ void List::Behavior() } } } + +vector<Entity*> List::getNear(Creature nC) +{ + vector<Entity*> N; + + for(vector <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++){ + if( &nC == &(*it)) + continue; + else if( nC.getBestSense() > Distance(nC.getLocation(),it->getLocation()) ) + N.push_back(&(*it)); + } + + return N; +} + + |