Update analyze_wotb_replays.py

This commit is contained in:
Jylpah committed 2021-02-10 23:25:53 +02:00
1 parent 448b91a866
commit 5b2ef816f5
1 file changed
+64 -30
+64 -30
View File
@@ -997,11 +997,11 @@ class ResultFields():
_team = [ 'wins', 'battles', 'damage_dealt' ] _team = [ 'wins', 'battles', 'damage_dealt' ]
_count = [ _count = {
'battles', 'battles',
MISSING_STATS, MISSING_STATS,
'mastery_badge' 'mastery_badge'
] }
_ratios = { _ratios = {
'KDR' : [ 'enemies_destroyed', 'destroyed' ], 'KDR' : [ 'enemies_destroyed', 'destroyed' ],
@@ -1013,10 +1013,12 @@ class ResultFields():
# _extended_stats = False # _extended_stats = False
result_fields = list() results = set()
avg_fields = set() results_avg = set()
ratio_fields = set() results_single = set()
single_fields = set() results_ratio = set()
ratio_fields = set()
results_team = list()
@classmethod @classmethod
@@ -1025,9 +1027,12 @@ class ResultFields():
@classmethod @classmethod
def get_mode_fields(cls, mode: str): def get_mode_fields(cls, mode: str) -> list:
try: try:
return cls._modes[mode] if mode != None:
return cls._modes[mode]
else:
return list()
except Exception as err: except Exception as err:
bu.error(exception=err) bu.error(exception=err)
return None return None
@@ -1039,23 +1044,45 @@ class ResultFields():
@classmethod @classmethod
def set_fields(cls, mode: str = None, extra : list = None): def set_fields(cls, mode: str = None, extra : list = list(), team : list = list(), platoon : list = list() ):
try: try:
if mode not in cls.get_modes(): if mode !=not in cls.get_modes():
bu.error('Mode ' + mode + ' not in defined modes: ' + ', '.join(cls.get_modes())) bu.error('Mode ' + mode + ' not in defined modes: ' + ', '.join(cls.get_modes()))
sys.exit(2) sys.exit(2)
cls.mode = mode cls.mode = mode
cls.default = set(cls.get_mode_fields(cls.mode)) cls.results = set(cls.get_mode_fields(cls.mode))
if extra != None: cls.results = cls.results | set(extra)
cls.default = cls.default | set(extra)
cls.single_fields = cls.default & cls.get_single_fields_all() # team fields
cls.default = set(cls.default) - cls.get_single_fields_all() cls.team = set(team)
cls.default = [ field for field in cls.get_result_fields_all() if field in cls.default ] p_team = re.compile(r'^allies_(.+)')
cls.default_ratio = set(cls._ratios.keys()) & set(cls.default) for field in cls.results:
cls.avg_fields = set(cls.default) - set(cls._ratios.keys()) - set(cls._count) m = p_team.match(field)
if len(m.groups()) == 1:
for ratio in cls.default_ratio: cls.team.add(m.groups(1))
for field in cls.team:
cls.results.add('allies_' + field)
cls.results.add('enemies_' + field)
# platoon fields
cls.platoon = set(platoon)
p_plat = re.compile(r'^allies_plat_(.+)')
for field in cls.results:
m = p_plat.match(field)
if len(m.groups()) == 1:
cls.platoon.add(m.groups(1))
for field in cls.platoon:
cls.results.add('allies_plat_' + field)
cls.results.add('enemies_plat_' + field)
cls.results_single = cls.results & cls.get_single_fields_all()
cls.results = cls.results - cls.get_single_fields_all()
cls.results_ratio = set(cls._ratios.keys()) & cls.results
cls.results_avg = cls.results - set(cls._ratios.keys()) - cls._count
cls.results = [ field for field in cls.get_result_fields_all() if field in cls.results ]
for ratio in cls.results_ratio:
cls.ratio_fields.add(cls._ratios[ratio][0]) cls.ratio_fields.add(cls._ratios[ratio][0])
cls.ratio_fields.add(cls._ratios[ratio][1]) cls.ratio_fields.add(cls._ratios[ratio][1])
except Exception as err: except Exception as err:
@@ -1064,7 +1091,7 @@ class ResultFields():
@classmethod @classmethod
def get_result_fields(cls) -> list: def get_result_fields(cls) -> list:
return cls.default return cls.results
@classmethod @classmethod
@@ -1073,21 +1100,23 @@ class ResultFields():
@classmethod @classmethod
def get_result_fields_ratio(cls, all: bool = False) -> list: def get_result_fields_ratio(cls) -> list:
if all: return cls.results_ratio
return cls._ratios.keys()
else:
return cls.ratio_fields
@classmethod
def get_result_fields_ratio_all(cls) -> list:
return list(cls._ratios.keys())
@classmethod @classmethod
def get_result_fields_single(cls) -> set: def get_result_fields_single(cls) -> set:
return cls.single_fields return cls.results_single
@classmethod @classmethod
def get_avg_fields(cls) -> set: def get_avg_fields_avg(cls) -> set:
return cls.avg_fields return cls.results_avg
@classmethod @classmethod
@@ -1111,10 +1140,15 @@ class ResultFields():
@classmethod @classmethod
def get_fields_team(cls) -> list: def get_fields_team_all(cls) -> list:
return cls._team return cls._team
@classmethod
def get_fields_team(cls) -> list:
return cls.results_team
@classmethod @classmethod
def calc_ratio(cls, ratio: str, result: dict): def calc_ratio(cls, ratio: str, result: dict):
try: try: