/// <summary> /// Gets the weighted total number of badges. /// </summary> /// <param name="data">The BadgeData.</param> /// <returns>Returns the weighted total number of badges.</returns> public static int GetWeightedTotalCount(this BadgeData data) { // fast int fastCount = data.TimeBadges[0] * TierOneWeight + data.TimeBadges[1] * TierTwoWeight + data.TimeBadges[2] * TierThreeWeight; // streak int streakCount = data.StreakBadges[0] * TierOneWeight + data.StreakBadges[1] * TierTwoWeight + data.StreakBadges[2] * TierThreeWeight; // amount int amountCount = data.AmountBadges[0] * TierOneWeight + data.AmountBadges[1] * TierTwoWeight + data.AmountBadges[2] * TierThreeWeight; return(fastCount + streakCount + amountCount); }
/// <summary> /// Gets the total number of badges for a specific tier level. /// </summary> /// <param name="data">The BadgeData.</param> /// <param name="tierLevel">A value between 1 - 3.</param> /// <returns>Returns the total count number badges for a specific tier level.</returns> public static int GetTotalCount(this BadgeData data, int tierLevel) { if (tierLevel < 1 || tierLevel > 3) { throw new ArgumentException($"{nameof(tierLevel)} must be a value between 1 - 3", nameof(data)); } int index = tierLevel - 1; return(data.AmountBadges[index] + data.StreakBadges[index] + data.TimeBadges[index]); }
/// <summary> /// Gets the weighted total number of 'time' badges. /// </summary> /// <param name="data"></param> /// <returns>Returns the total number of 'time' badges.</returns> public static int GetWeightedTimeTotalCount(this BadgeData data) { return(data.TimeBadges[0] * TierOneWeight + data.TimeBadges[1] * TierTwoWeight + data.TimeBadges[2] * TierThreeWeight); }