Dictionary <GameEnum.EnemyType, int> GenerateDictionary(EnemyLevelDataScriptable levelDataScriptable)
    {
        Dictionary <GameEnum.EnemyType, int> enemyTypeAndPercentageDictionary = new Dictionary <GameEnum.EnemyType, int>();
        int sumPercentage = 0;

        for (int i = 0; i < levelDataScriptable.enemyTypes.Count && i < levelDataScriptable.enemyPercentageList.Count; i++)
        {
            sumPercentage = sumPercentage + levelDataScriptable.enemyPercentageList[i];
            enemyTypeAndPercentageDictionary.Add(levelDataScriptable.enemyTypes[i], sumPercentage);
        }
        return(enemyTypeAndPercentageDictionary);
    }
    public EnemyLevelData GetEnemyLevelData(int levelNumber)
    {
        EnemyLevelDataScriptable levelDataScriptable = GetEnemyLevelScriptable(levelNumber);
        EnemyLevelData           data = new EnemyLevelData();

        if (levelDataScriptable != null)
        {
            data.levelNumber                        = levelDataScriptable.levelNumber;
            data.numberOfWave                       = levelDataScriptable.numberOfWave;
            data.initialEnemyNumber                 = levelDataScriptable.initialEnemyNumber;
            data.initialEnemySpawnDelay             = levelDataScriptable.initialEnemySpawnDelay;
            data.enemySpawnDelayReduceFactorPerWave = levelDataScriptable.enemySpawnDelayReduceFactorPerWave;
            data.initialNumberOfEnemyInAWave        = levelDataScriptable.initialNumberOfEnemyInAWave;
            data.multiplierOfEnemyNumberPerWave     = levelDataScriptable.multiplierOfEnemyNumberPerWave;
            data.enemyTypeAndPercentageDictionary   = GenerateDictionary(levelDataScriptable);
            return(data);
        }
        return(null);
    }