Fix counting missing stats + stats per battle class (1/2/3rd, Ace)

This commit is contained in:
Jylpah committed 2020-02-15 15:58:52 +02:00
1 parent 2603c1611c
commit 43dee15de5
1 file changed
+15 -4
+15 -4
View File
@@ -93,6 +93,7 @@ class BattleRecordCategory():
'battle_type' : [ 'Battle Type',['Encounter', 'Supremacy']],
'tank_tier' : [ 'Tank Tier', 'number' ],
'top_tier' : [ 'Tier', ['Bottom tier', 'Top tier']],
'mastery_badge' : [ 'Battle Class', ['-', '3rd Class', '2nd Class', '1st Class', 'Mastery' ]],
'tank_name' : [ 'Tank', 'string' ],
'map_name' : [ 'Map', 'string' ],
'battle_i' : [ 'Battle #', 'number']
@@ -103,7 +104,8 @@ class BattleRecordCategory():
'battle_result',
'battle_type',
'tank_tier',
'top_tier'
'top_tier',
'mastery_badge'
]
_result_categories_extended = [
@@ -142,6 +144,10 @@ class BattleRecordCategory():
def get_sub_categories(self):
return self.category.keys()
def get_category_name(self) -> str:
return self._result_categories[self.category_name][0]
def record_result(self, result: dict):
try:
@@ -168,7 +174,7 @@ class BattleRecordCategory():
def print_results(self):
try:
first_btl_record = list(self.category.values())[0]
print(' '.join(first_btl_record.get_headers(self.category_name)))
print(' '.join(first_btl_record.get_headers(self.get_category_name())))
for row in self.get_results():
print(' : '.join(row))
except KeyError as err:
@@ -233,6 +239,7 @@ class BattleRecord():
'enemies_spotted',
'top_tier',
'player_wins',
'player_battles',
'allies_wins',
'enemies_wins',
'allies_battles',
@@ -249,6 +256,9 @@ class BattleRecord():
MISSING_STATS
]
_result_counts = [
'battles', MISSING_STATS, 'mastery_badge'
]
_result_ratios = {
'KDR' : [ 'enemies_destroyed', 'destroyed' ],
'DR' : [ 'damage_made', 'damage_received' ],
@@ -278,7 +288,7 @@ class BattleRecord():
cls.result_fields_ratio = set(cls._result_ratios.keys()) & set(cls.result_fields)
cls.avg_fields = set(cls.result_fields)
for field in ['battles', MISSING_STATS]:
for field in cls._result_counts:
if field in cls.avg_fields:
cls.avg_fields.remove(field)
cls.avg_fields.difference_update(set(cls._result_ratios.keys()))
@@ -362,7 +372,7 @@ class BattleRecord():
for field in self.avg_fields:
self.results[field] = self.results[field] / max(self.battles,1)
self.results['battles'] = self.battles
self.results[MISSING_STATS] = self.missing_stats / self.n_players
self.results[MISSING_STATS] = self.missing_stats / max(self.n_players, 1)
self.results_ready = True
return True
except KeyError as err:
@@ -385,6 +395,7 @@ class BattleRecord():
bu.error(str(err))
return None
def get_results(self):
if not self.results_ready:
self.calc_results()