From 8d9ad3eb74bc0dfc647abf03b7b99ed16f2a9115 Mon Sep 17 00:00:00 2001 From: tom Date: Mon, 2 May 2016 21:24:02 -0500 Subject: implementing better modularity, came into bad bug. All creatures seem to have same near vector. --- src/list.cpp | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) (limited to 'src/list.cpp') 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::iterator it = C.begin(); it!=C.end(); it++){ - it->Behavior(); - - vector N; - for(vector ::iterator jt = R.begin(); jt!=R.end(); jt++){ - if( it->getBestSense() > Distance(it->getLocation(),jt->getLocation()) ) - N.push_back(&(*jt)); - } - it->giveR(N); - vector M; - for(vector ::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 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 List::getNear(Creature nC) +{ + vector N; + + for(vector ::iterator it = R.begin(); it!=R.end(); it++){ + if( nC.getBestSense() > Distance(nC.getLocation(),it->getLocation()) ) + N.push_back(&(*it)); + } + + for(vector ::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; +} + + -- cgit v1.2.3