diff options
author | majortom6 <tombarrett@siu.edu> | 2017-02-26 11:14:31 -0600 |
---|---|---|
committer | Tom Barrett <tombarrett@siu.edu> | 2017-03-07 13:23:42 -0600 |
commit | 7394b069537ed7a490a343381d62862eb22abdcf (patch) | |
tree | c8bff4f88cf962ec4148a2e133bf959035feedb7 /src/list.cpp | |
parent | e54170cfb8c0fb99ecdc3b1e57e832dec58ee76e (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.cpp | 50 |
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(); } |