Original Post
I have the following function that loads a level: When I run it once it's fine but then when I run it again it crashes. Why? Thanks.
void InitLevel()
{
int size;
for(unsigned int i = 0; i < Flock.size(); i++)
{
delete Flock;
}
Flock.clear();
for(unsigned int i = 0; i < Sheep.size(); i++)
{
delete Sheep;
}
Sheep.clear();
size = vGroups.size();
for(unsigned int i = 0; i < size; i++)
{
delete vGroups;
}
vGroups.clear();
size = vEnemys.size();
for(unsigned int i = 0; i < size; i++)
{
delete vEnemys;
}
vEnemys.clear();
for(int i = 0; i < NumberInFlock; i++)
{
CVehicle* v = new CVehicle(Vector2D(35 - i*3 - 3,50));
Flock.push_back(v);
//delete v;
}
//double offsetX=-3; //Box
//double offsetY= 4.5;
for(unsigned int i = 1; i < NumberInFlock; i++)
{
Flock->CreateObstacles();
Flock->GetMyAgents(Flock);
Flock->GetWorldAgents(Flock);
Flock->SetMaxSpeed(5);
Flock->Steering()->SetBoxWeight(2);
Flock->SetGroupId(0);
Flock->GetHeightMap(g_HeightMap);
}
for(int i = 0; i < NumberOfSheep; i++)
{
CVehicle* v = new CVehicle(Vector2D(65 -2*i,80));
Sheep.push_back(v);
}
for(unsigned int i = 0; i < NumberOfSheep; i++)
{
Sheep->CreateObstacles();
Sheep->GetMyAgents(Sheep);
Sheep->GetWorldAgents(Sheep);
Sheep->SetMaxSpeed(2);
Sheep->Steering()->SetBoxWeight(2);
Sheep->GetHeightMap(g_HeightMap);
}
///////////////////////////////
//Set Up The Different Groups
///////////////////////////////
// Flock[0]->SetLeader(Flock[0]);
Flock[0]->CreateObstacles();
Flock[0]->GetWorldAgents(Sheep);
//Leader->Steering()->PursuitOn(Sheep[0]);
//Flock[0]->Steering()->ArriveOn();
Flock[0]->SetMaxSpeed(5);
Flock[0]->Steering()->SetBoxWeight(1.5);
Flock[0]->GetHeightMap(g_HeightMap);
//Flock[0]->SetGroupId(0);
// Flock[0]->MakeLeader();
//vGroupHasLeader.push_back(true);
CGroup* g = new CGroup();
vGroups.push_back(g);
vGroups[0]->PutVehiclesInGroup(Flock);
vGroups[0]->PutTarget(Vector2D(20,100));
vGroups[0]->GetEnemies(Sheep);
vector<CVehicle*> Units;
Units.assign(Sheep.begin(), Sheep.begin() + 6);
CEnemy* e = new CEnemy(SitAndWait);
vEnemys.push_back(e);
vEnemys[0]->PutVehiclesInGroup(Units);
vEnemys[0]->GetPlayers(Flock);
vEnemys[0]->GetHome(Vector2D(50, 50) );
vEnemys[0]->GetTravelFormation(Row);
vEnemys[0]->GetAttackFormation(Row);
Units.assign(Sheep.begin() + 6, Sheep.end());
CEnemy* e1 = new CEnemy(Guard);
vEnemys.push_back(e1);
vEnemys[1]->PutVehiclesInGroup(Units);
vEnemys[1]->GetPlayers(Flock);
vEnemys[1]->GetObstacle(&vObstacles[vObstacles.size()-1]);
vEnemys[1]->GetBuilding(vBuildings[vBuildings.size()-1]);
//vEnemys[1]->GetHome(Vector2D(50, 50) );
vEnemys[1]->GetTravelFormation(Row);
vEnemys[1]->GetAttackFormation(Row);
//vEnemys[0]->GetObstacle(&vObstacles[0]);
//vEnemys[0]->PutTarget(Vector2D(100,70));
for(unsigned int i = 0; i < NumberInFlock; i++)
{
Flock->GetMoreWorldAgents(Sheep);
}
for(unsigned int i = 0; i < NumberOfSheep; i++)
{
Sheep->GetMoreWorldAgents(Flock);
}
Gun.GetEnemies(Sheep);
Gun.GetPlayers(Flock);
Gun.GetBuildings(vBuildings);
Gun.GetHeightMap(g_HeightMap);
right_up = true;
Exit = false;
}