summaryrefslogtreecommitdiff
path: root/src/list.cpp
diff options
context:
space:
mode:
authormajortom6 <tombarrett@siu.edu>2017-02-26 11:14:31 -0600
committerTom Barrett <tombarrett@siu.edu>2017-03-07 13:23:42 -0600
commit7394b069537ed7a490a343381d62862eb22abdcf (patch)
treec8bff4f88cf962ec4148a2e133bf959035feedb7 /src/list.cpp
parente54170cfb8c0fb99ecdc3b1e57e832dec58ee76e (diff)
-REMOVED ENTITY, RESOURCE, AND CREATURE !
-replaced them all with one class, organism (always subject to change) -the dna type now is what differs creatures and resources -removed dead constants -may be a rogue segfault -also weird artifacts start showing if running long
Diffstat (limited to 'src/list.cpp')
-rw-r--r--src/list.cpp50
1 files changed, 27 insertions, 23 deletions
diff --git a/src/list.cpp b/src/list.cpp
index 30b0eb1..826208e 100644
--- a/src/list.cpp
+++ b/src/list.cpp
@@ -3,16 +3,17 @@
List::List()
{
int i;
- DNA d;
+ DNA d = DNA("creature");
Rectangle tmp;
for(i=0;i<CREATURES;i++){
- Creature X(tmp,d);
+ Organism X(tmp,d);
creatures.push_back(X);
}
-
+
+ d = DNA("resource");
for(i=0;i<RESOURCES;i++){
- Resource Y(tmp);
- resources.push_back(Y);
+ Organism X(tmp, d);
+ resources.push_back(X);
}
Rectangle R1 = Rectangle(0,0,60,60);
@@ -21,33 +22,34 @@ List::List()
void List::Remove()
{
- for(std::list<Creature>::iterator it = creatures.begin(); it!= creatures.end(); it++)
+ for(std::list<Organism>::iterator it = creatures.begin(); it!= creatures.end(); it++)
if(it->getHealth()<=0){
- Resource Y(it->getRectangle());
- resources.push_back(Y);
+ DNA d = DNA("resource");
+ Organism X(it->getRectangle(), d);
+ resources.push_back(X);
creatures.erase(it--);
}
- for(std::list<Resource>::iterator it = resources.begin(); it!= resources.end(); it++)
- if(it->getAmount()<=0)
+ for(std::list<Organism>::iterator it = resources.begin(); it!= resources.end(); it++)
+ if(it->getHealth()<=0)
resources.erase(it--);
}
void List::Behavior()
{
- for(std::list<Creature>::iterator it = creatures.begin(); it!= creatures.end(); it++){
- std::vector<Entity*> N = getNear(*it);
- it->giveNearMe(N);
+ for(std::list<Organism>::iterator it = creatures.begin(); it!= creatures.end(); it++){
+ std::vector<Organism*> near = getNear(*it);
+ it->giveNearMe(near);
it->Behavior();
if(it->getPregnancyReady()){
- Creature X(it->getRectangle(),it->getChildsDNA());
+ Organism X(it->getRectangle(),it->getChildsDNA());
creatures.push_back(X);
it->hadPregnancy();
}
}
- for(std::list<Resource>::iterator it = resources.begin(); it!= resources.end(); it++)
+ for(std::list<Organism>::iterator it = resources.begin(); it!= resources.end(); it++)
it->grow();
}
@@ -56,35 +58,37 @@ void List::Place()
tree.clear();
Rectangle tmp;
+ DNA d = DNA("resource");
while(resources.size() < MINIMUM_RESOURCES){
- Resource Y(tmp);
- resources.push_back(Y);
+ Organism X(tmp, d);
+ resources.push_back(X);
}
- for(std::list<Creature>::iterator it = creatures.begin(); it!= creatures.end(); it++){
+ for(std::list<Organism>::iterator it = creatures.begin(); it!= creatures.end(); it++){
it->Place();
tree.insert(&(*it));;
}
- for(std::list<Resource>::iterator it = resources.begin(); it!=resources.end(); it++){
+ for(std::list<Organism>::iterator it = resources.begin(); it!=resources.end(); it++){
it->Place();
tree.insert(&(*it));;
}
}
-std::vector<Entity*> List::getNear(Creature c)
+std::vector<Organism*> List::getNear(Organism c)
{
- std::vector<Entity*> near;
+ std::vector<Organism*> near;
near = tree.retrieve(near, c.getGFXD());
- for(std::vector<Entity*>::iterator it = near.begin(); it!= near.end(); it++)
+ for(std::vector<Organism*>::iterator it = near.begin(); it!= near.end(); it++)
if(c.getBestSense() < Distance(c.getRectangle(),(*it)->getRectangle()))
near.erase(it--);
return near;
}
-std::vector<GraphicsData> List::drawQuadTree(){
+std::vector<GraphicsData> List::drawQuadTree()
+{
return tree.Draw();
}