Пример #1
0
	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);
					}
				}
			}
		}
	}