public void handleWaves(int delta) {
		if (!wavesHaveBegun) {
			handleWaitForFirstWave(delta);
			return;
		}

		Wave currentWave = waves.get(waveIndex);
		currentWave.update(delta);
		if (currentWave.hasNextSpawn()) {
			spawnEnemy(currentWave.nextSpawn());
		}

		if (currentWave.isFinished() && !isFinalWave()) {
			startNextWave();
		}
		removeDeadEnemies();
		if (currentWaveHasBeenCleared() && !hasGivenRewardForCurrentWave) {
			GamePlayState.giveRewardForWave(waveIndex + 1);
			hasGivenRewardForCurrentWave = true;
			if (isFinalWave()) {
				Game.winGame();
			}
		}
	}