Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 10137 in orxonox.OLD for branches/ai/src/ai/ai_engine.cc


Ignore:
Timestamp:
Dec 21, 2006, 3:49:51 PM (17 years ago)
Author:
tfahrni
Message:

discoverd std::map and std::set

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ai/src/ai/ai_engine.cc

    r10135 r10137  
    1 
    2 
    31/*
    42   orxonox - the future of 3D-vertical-scrollers
     
    1210
    1311   ### File Specific:
    14    main-programmer: Patrick Boenzli
     12   main-programmer: Thomas Fahrni
    1513   co-programmer:
    1614*/
    1715#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_AI
    18 
    1916#include "ai_engine.h"
    2017#include "debug.h"
     
    2219AIEngine* AIEngine::singletonRef = NULL;
    2320
    24 AIEngine::AIEngine(){
    25         for(int i=0; i < maxTeams; i++ )teams[i]=NULL;
     21void AIEngine::tick(float dt)
     22{
     23        std::map<int,AITeam*>::iterator it;
     24        for (it= teams.begin(); it!= teams.end(); it++ )
     25                it->second->process(dt);
    2626}
    2727
    28 AITeam* AIEngine::getTeam(int teamNumber)
     28void AIEngine::addAI(int teamNumber, int swarmNumber, AIModule* aiModule)
    2929{
    30         if(teamNumber>maxTeams || teamNumber<0)return NULL;
    31         return teams[teamNumber];
     30        std::pair<std::map<int,AITeam*>::iterator,bool> p;
     31        AITeam* newTeam=new AITeam();
     32        p=teams.insert(std::make_pair(teamNumber,newTeam));
     33        if(!p.second)delete newTeam;
     34        p.first->second->addAI(swarmNumber, aiModule);
    3235}
    3336
    34 AITeam* AIEngine::getCreateTeam(int teamNumber)
     37void AIEngine::removeAI(int teamNumber, int swarmNumber, AIModule* aiModule)
    3538{
    36         if(teamNumber>maxTeams || teamNumber<0)return NULL;
    37         if(teams[teamNumber]==NULL)teams[teamNumber]=new AITeam();
    38         return teams[teamNumber];
     39        std::map<int,AITeam*>::iterator it = teams.find(swarmNumber);
     40        if(it==teams.end())return;
     41        it->second->removeAI(swarmNumber,aiModule);
     42        if(it->second->getTeamSize()==0){
     43                delete it->second;
     44                teams.erase(it);
     45        }
    3946}
    4047
    41 
    42 void AIEngine::addTeam(int teamNumber)
    43 {
    44         if(teamNumber>maxTeams || teamNumber<0)return;
    45         teams[teamNumber]=new AITeam();
    46 }
    47 
    48 
    49 void AIEngine::removeTeam(int teamNumber)
    50 {
    51         if(teamNumber>maxTeams || teamNumber<0)return;
    52         teams[teamNumber]=NULL;
    53 }
    54 
    55 
    56 void AIEngine::tick(float dt)
    57 {
    58         for(int i=0; i < maxTeams; i++ )
    59                 if(teams[i]!=NULL)teams[i]->process(dt);
    60 }
    61 
    62 
    63 void AIEngine::rebuildAIVector(){
    64         //AIVector.clear();
    65 
    66         //for(int i=0; i < maxTeams; i++ )
    67                 //if(teams[i]!=NULL)AIVector.push_back(teams[i]);
    68 }
Note: See TracChangeset for help on using the changeset viewer.