public static void calculateLevel(int currentLevel, int rank, long currentExperience, long totalExperienceFromCards, ExperienceType experienceType, ExperienceCardData experienceCardData)
        {
            long totalExperienceGainedFromLevels = ExperienceUtilityService.GetRequiredExperienceForLevel(experienceType, currentLevel, rank) + currentExperience;
            long finalExperienceGained           = totalExperienceGainedFromLevels + totalExperienceFromCards;

            experienceCardData.PotentialLevel = calculatePotentialLevel(experienceType, currentLevel, rank, finalExperienceGained);

            experienceCardData.RemainingExperience = ExperienceUtilityService.GetRequiredExperienceForLevel(experienceType, experienceCardData.PotentialLevel + 1, rank) - finalExperienceGained;
            experienceCardData.RequiredExperience  = ExperienceUtilityService.GetRequiredExperienceForLevel(experienceType, experienceCardData.PotentialLevel + 1, rank) - ExperienceUtilityService.GetRequiredExperienceForLevel(experienceType, experienceCardData.PotentialLevel, rank);
            experienceCardData.CurrentExperience   = finalExperienceGained - ExperienceUtilityService.GetRequiredExperienceForLevel(experienceType, experienceCardData.PotentialLevel - 1, rank);
            experienceCardData.CurrentPercent      = (experienceCardData.CurrentExperience / (float)experienceCardData.RequiredExperience) * 100;
        }
        private static int calculatePotentialLevel(ExperienceType experienceType, int currentLevel, int rank, long finalExperienceGained)
        {
            for (int potentialLevel = currentLevel; potentialLevel < ExperienceUtilityService.GetMaxBaseLevel(experienceType); potentialLevel++)
            {
                long requiredExperience = ExperienceUtilityService.GetRequiredExperienceForLevel(experienceType, potentialLevel, rank);

                if (requiredExperience > finalExperienceGained)
                {
                    return(potentialLevel);
                }
            }

            return(currentLevel);
        }