void World::GenerateEnemies(Player &player) { GameObjectFactory *factory = GameObjectFactory::GetInstance(); const int numEnemies = GameMath::Random(100, 50); int x; int y; for(int i = 0; i < numEnemies; i++) { bool valid = false; while(!valid) { valid = true; do { x = rand() % COLS; y = rand() % ROWS; }while(At(x, y).IsObstacle()); Vector2 enemyCoords(x, y); for(std::vector<Enemy*>::iterator it = enemies.begin(); it != enemies.end(); ++it) { if(enemyCoords == (*it)->GetCoords()) { valid = false; break; } } if(valid) { Vector2F enemyPosition = enemyCoords.toV2F() * Tile::TILE_SIZE; if(enemyPosition.DistanceTo(player.position) >= 500) { Enemy *newEnemy = factory->CreateRandomWorldEnemy(enemyCoords, player.level); enemies.push_back(newEnemy); } } } } }