Advertisement
Guest User

Untitled

a guest
Feb 15th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. - (NSArray *)performanceStatsForStat:(WOTStats *)stats deltaStats:(WOTStatsSlice *)deltaStatsSlice {
  2.     if (!stats) {
  3.         return nil;
  4.     }
  5.  
  6.     NSArray *baseRows = [self requiredBasePerformanceRows];
  7.     if (stats.battles == 0) {
  8.         for (WGProfileStatsRow *row in baseRows) {
  9.             row.value = [NSAttributedString dashAttributedString];
  10.             if (self.isOwnProfile) {
  11.                 row.subvalue = [NSAttributedString dotAttributedString];
  12.             }
  13.         }
  14.     } else {
  15.  
  16.         NSDictionary *deltaOptions = ((self.performanceMode == WGPerformanceModeAverage) ? FRACTION_VALUE_DELTA : VALUE_DELTA);
  17.  
  18.         WOTStats *oldStats = self.deltaStatsSlice.player.stats;
  19.         WOTStats *delta = [stats statsBySubtractingStats:oldStats];
  20. #define avgDelta(param) @([stats averageForKey:@keypath(stats.param)] - [oldStats averageForKey:@keypath(stats.param)])
  21.  
  22.         // Array: @[value, avgValue, delta, avgDelta]
  23. #define valuesArray(param) @[@(stats.param), @([stats averageForKey:@keypath(stats.param)]), @(delta.param), avgDelta(param)]
  24.         NSDictionary *performanceValues = @{@(WTAPerformanceRowDestroyed): valuesArray(frags),
  25.                                             @(WTAPerformanceRowCapturePoints): valuesArray(capturePoints),
  26.                                             @(WTAPerformanceRowDamageCaused): valuesArray(damageDealt),
  27.                                             @(WTAPerformanceRowDefensePoints): valuesArray(defensePoints),
  28.                                             @(WTAPerformanceRowHitRatio): valuesArray(hitsRatio),
  29.                                             @(WTAPerformanceRowDetected): valuesArray(spotted),
  30.                                             @(WTAPerformanceRowAverageDamageAssisted): @[@(0), @(stats.averageDamageAssisted), @(0), @(delta.averageDamageAssisted)],
  31.                                             @(WTAPerformanceRowAverageDamageAssistedRadio): @[@(0), @(stats.averageDamageAssistedRadio), @(0), @(delta.averageDamageAssistedRadio)],
  32.                                             @(WTAPerformanceRowAverageDamageAssistedTrack): @[@(0), @(stats.averageDamageAssistedTrack), @(0), @(delta.averageDamageAssistedTrack)],
  33.                                             @(WTAPerformanceRowAverageDamageBlocked): @[@(0), @(stats.averageDamageBlocked), @(0), @(delta.averageDamageBlocked)],
  34.                                             @(WTAPerformanceRowTankingFactor): valuesArray(tankingFactor),
  35.                                             @(WTAPerformanceRowStunCount): @[@(stats.stunCount), @([stats stunAverageForKey:@"stunCount"]), @(delta.stunCount), @([delta stunAverageForKey:@"stunCount"])],
  36.                                             @(WTAPerformanceRowStunAssistedDamage): @[@(stats.stunAssistedDamage), @([stats stunAverageForKey:@"stunAssistedDamage"]), @(delta.stunAssistedDamage), @([delta stunAverageForKey:@"stunAssistedDamage"])],
  37.                                             };
  38. #undef valuesArray
  39. #undef avgDelta
  40.  
  41.         for (WGProfileStatsRow *row in baseRows) {
  42.             NSNumber *currentValue = (self.performanceMode == WGPerformanceModeGeneral ? performanceValues[@(row.type)][0] : performanceValues[@(row.type)][1]);
  43.             if (row.type == WTAPerformanceRowHitRatio) {
  44.                 row.value = [NSAttributedString singleValue:currentValue withOptions:PERCENT];
  45.             } else {
  46.                 NSDictionary *options = FRACTION_VALUE;
  47.                 if (WGPerformanceModeAverage != self.performanceMode) {
  48.                     if (WTAPerformanceRowTankingFactor != row.type)
  49.                     options = VALUE;
  50.                 }
  51.                 row.value = [NSAttributedString singleValue:currentValue withOptions:options];
  52.             }
  53.  
  54.             if (self.deltaShouldPresent) {
  55.                 if (self.deltaState == WGDeltaStateNormal) {
  56.                     NSNumber *currentDeltaValue = (self.performanceMode == WGPerformanceModeGeneral ? performanceValues[@(row.type)][2] : performanceValues[@(row.type)][3]);
  57.                     if (row.type == WTAPerformanceRowHitRatio) {
  58.                         row.subvalue = [NSAttributedString singleValue:currentDeltaValue withOptions:PERCENT_DELTA];
  59.                     } else if (row.type == WTAPerformanceRowTankingFactor) {
  60.                         row.subvalue = [NSAttributedString singleValue:currentDeltaValue withOptions:FRACTION_VALUE_DELTA];
  61.                     } else {
  62.                         row.subvalue = [NSAttributedString singleValue:currentDeltaValue withOptions:deltaOptions];
  63.                     }
  64.                 } else {
  65.                     row.subvalue = [NSAttributedString dotAttributedString];
  66.                 }
  67.             }
  68.  
  69.         }
  70.     }
  71.  
  72.     return baseRows;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement