summaryrefslogtreecommitdiff
path: root/src/list.cpp
diff options
context:
space:
mode:
authortom <tom@ground-control>2016-05-02 21:24:02 -0500
committertom <tom@ground-control>2016-05-02 21:24:02 -0500
commit8d9ad3eb74bc0dfc647abf03b7b99ed16f2a9115 (patch)
treeeb16f853c280ed200953fbc7a500193a69ef8892 /src/list.cpp
parent0346965968fb5da1a52ed8f896a922c63ce180f6 (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.cpp46
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;
+}
+
+