summaryrefslogtreecommitdiff
path: root/src/list.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/list.cpp')
-rw-r--r--src/list.cpp128
1 files changed, 61 insertions, 67 deletions
diff --git a/src/list.cpp b/src/list.cpp
index e91e1aa..2daed25 100644
--- a/src/list.cpp
+++ b/src/list.cpp
@@ -2,93 +2,87 @@
List::List()
{
- int i;
- DNA defaultDNA;
- Rectangle tmp;
- tmp.x = tmp.y = 0;
- for(i=0;i<CREATURES;i++){
- Creature X(tmp,defaultDNA);
- creatures.push_back(X);
- }
-
- for(i=0;i<RESOURCES;i++){
- Resource Y(tmp);
- resources.push_back(Y);
- }
-
- Rectangle R1 = Rectangle(0,0,60,60);
- tree = Quadtree(0, R1);
+ int i;
+ DNA d;
+ Rectangle tmp;
+ for(i=0;i<CREATURES;i++){
+ Creature X(tmp,d);
+ creatures.push_back(X);
+ }
+
+ for(i=0;i<RESOURCES;i++){
+ Resource Y(tmp);
+ resources.push_back(Y);
+ }
+
+ Rectangle R1 = Rectangle(0,0,60,60);
+ tree = Quadtree(0, R1);
}
void List::Remove()
{
- for(std::list<Creature>::iterator it = creatures.begin(); it!= creatures.end(); it++)
- if(it->getHealth()<=0){
- Rectangle tmp = it->getRectangle();
- Resource r = Resource(tmp);
- resources.push_back(r);
- creatures.erase(it--);
- }
-
- for(std::list<Resource>::iterator it = resources.begin(); it!= resources.end(); it++)
- if(it->getAmount()<=0)
- resources.erase(it--);
+ for(std::list<Creature>::iterator it = creatures.begin(); it!= creatures.end(); it++)
+ if(it->getHealth()<=0){
+ Resource Y(it->getRectangle());
+ resources.push_back(Y);
+ creatures.erase(it--);
+ }
+
+ for(std::list<Resource>::iterator it = resources.begin(); it!= resources.end(); it++)
+ if(it->getAmount()<=0)
+ resources.erase(it--);
}
void List::Behavior()
{
- for(std::list<Creature>::iterator it = creatures.begin(); it!= creatures.end(); it++){
- std::list<Entity*> N = getNear(*it);
- it->giveNearMe(N);
- it->Behavior();
-
- if(it->getPregnancyReady()){
- DNA D = it->getChildsDNA();
- Rectangle tmp = it->getRectangle();
- Creature X(tmp,D);
- creatures.push_back(X);
- it->hadPregnancy();
+ for(std::list<Creature>::iterator it = creatures.begin(); it!= creatures.end(); it++){
+ std::list<Entity*> N = getNear(*it);
+ it->giveNearMe(N);
+ it->Behavior();
+
+ if(it->getPregnancyReady()){
+ DNA d = it->getChildsDNA();
+ Rectangle tmp = it->getRectangle();
+ Creature X(tmp,d);
+ creatures.push_back(X);
+ it->hadPregnancy();
+ }
}
- }
-
- for(std::list<Resource>::iterator it = resources.begin(); it!= resources.end(); it++)
- it->grow();
+
+ for(std::list<Resource>::iterator it = resources.begin(); it!= resources.end(); it++)
+ it->grow();
}
void List::Place()
{
- tree.clear();
-
- Rectangle tmp;
- tmp.x = tmp.y = 0;
- while(resources.size() < MINIMUM_RESOURCES){
- Resource Y(tmp);
- resources.push_back(Y);
- }
-
- for(std::list<Creature>::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++){
- it->Place();
- tree.insert(&(*it));;
- }
+ tree.clear();
+
+ Rectangle tmp;
+ while(resources.size() < MINIMUM_RESOURCES){
+ Resource Y(tmp);
+ resources.push_back(Y);
+ }
+
+ for(std::list<Creature>::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++){
+ it->Place();
+ tree.insert(&(*it));;
+ }
}
std::list<Entity*> List::getNear(Creature nC)
{
- std::list<Entity*> N;
- N.clear();
- N = tree.retrieve(N, nC.getGFXD());
+ std::list<Entity*> N;
+ N = tree.retrieve(N, nC.getGFXD());
- //std::vector<Entity*> x{std::begin(N),std::begin(N)};
- return N;
+ return N;
}
std::vector<GraphicsData> List::drawQuadTree(){
- return tree.Draw();
+ return tree.Draw();
}
-