diff options
| author | tom <tombarrett@siu.edu> | 2017-01-19 13:33:46 -0600 | 
|---|---|---|
| committer | tom <tombarrett@siu.edu> | 2017-01-19 13:33:46 -0600 | 
| commit | 11c5d147b845d4323f2e94c1ac47b6001420d8e6 (patch) | |
| tree | eafc67bb6844dc14b56ad5d8eadf6d200b78e0d1 /src/list.cpp | |
| parent | 0c2335f4a717e53c2456e49407dfbbd0ffa20f06 (diff) | |
-added entity growing
-added bite functionality for creature/resource
-added gender (next largest feature is reproduction)
-refractored creature setTarget function to make more sense
-added constants for starting size of entity and max size of entity
-refractored list to make make much more sense
-added constants for types
Diffstat (limited to 'src/list.cpp')
| -rw-r--r-- | src/list.cpp | 61 | 
1 files changed, 32 insertions, 29 deletions
| diff --git a/src/list.cpp b/src/list.cpp index 3127d76..5309109 100644 --- a/src/list.cpp +++ b/src/list.cpp @@ -5,13 +5,13 @@ List::List(Window m)    main = m;    int i; -  SDL_Rect Rect = {0,0,CREATURE_SIZE,CREATURE_SIZE}; +  SDL_Rect Rect = {0,0,CREATURE_SIZE_START,CREATURE_SIZE_START};    for(i=0;i<CREATURES;i++){      Creature X(main,Rect);      C.push_back(X);    } -  Rect = {0,0,RESOURCE_SIZE,RESOURCE_SIZE}; +  Rect = {0,0,RESOURCE_SIZE_START,RESOURCE_SIZE_START};    for(i=0;i<RESOURCES;i++){      Resource Y(main,Rect);      R.push_back(Y); @@ -19,59 +19,62 @@ List::List(Window m)  } -void List::Place() -{  -  for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++) -    it->Place(); - -  for(list<Resource>::iterator it = R.begin(); it!=R.end(); it++){ -    if(it->getAmount()<=0) -        R.erase(it--); -    else -        it->Place(); -  }  +void List::Remove() +{ +    for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++)     +        if(it->getHealth()<=0){ +            SDL_Rect Rect = it->getRect(); +            Resource r = Resource(main,Rect); +            R.push_back(r); +            C.erase(it--); +        } +     +    for(list<Resource>::iterator it = R.begin(); it!=R.end(); it++) +        if(it->getAmount()<=0) +            R.erase(it--);  }  void List::Behavior()  {      for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++){ -                  list<Entity*> N = getNear(*it);           it->giveN(N);  -                  it->Behavior(); -          -        if(it->getHealth()<=0){ -            SDL_Rect Rect = it->getRect(); -            Resource r = Resource(main,Rect); -            R.push_back(r); -            C.erase(it--); -        }      } +     +    for(list<Resource>::iterator it = R.begin(); it!=R.end(); it++) +        it->grow();  +} -    SDL_Rect Rect = {0,0,RESOURCE_SIZE,RESOURCE_SIZE}; +void List::Place() +{  +    SDL_Rect Rect = {0,0,RESOURCE_SIZE_START,RESOURCE_SIZE_START};      while(R.size() < MINIMUM_RESOURCES){          Resource Y(main,Rect);          R.push_back(Y);      } + +    for(list<Creature>::iterator it = C.begin(); it!=C.end(); it++) +        it->Place(); + +    for(list<Resource>::iterator it = R.begin(); it!=R.end(); it++) +        it->Place();  }  list<Entity*> List::getNear(Creature nC)  {      list<Entity*> N; -    for(list <Resource>::iterator it = R.begin(); it!=R.end(); it++){ +    for(list <Resource>::iterator it = R.begin(); it!=R.end(); it++)          if( nC.getBestSense() > Distance(nC.getRect(),it->getRect()) )              N.push_back(&(*it)); -    } -        -    for(list <Creature>::iterator it = C.begin(); it!=C.end(); it++){ +         +    for(list <Creature>::iterator it = C.begin(); it!=C.end(); it++)          if( &nC == &(*it))              continue;          else if( nC.getBestSense() > Distance(nC.getRect(),it->getRect()) )              N.push_back(&(*it)); -    } -                +                      return N;  } | 
