22from log_analyser .objects .round import Round
33from log_analyser .objects .team import Team
44from datetime import datetime
5-
5+ import os
6+ import json
67
78class Map (Object ):
89
@@ -46,7 +47,7 @@ def add_player(self, data):
4647 return - 1
4748 else :
4849 self .rounds [self .actual_round ].teams [data ["team_name" ]].add_player (
49- {"name" : data ["player_name" ], "characters" : {}})
50+ {"name" : data ["player_name" ], "characters" : {}, "role" : "" })
5051 # print("add player", data["player_name"])
5152 self .add_character (data )
5253 return 0
@@ -56,7 +57,7 @@ def add_character(self, data):
5657 if data ["character_name" ] in self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters :
5758 return - 2
5859 else :
59- self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].add_character ({"name" : data ["character_name" ], "stats" : {}, "played_time" : [], "kills" : [], "deaths" : [], "ultimate_charged" : [], "ultimate_use" : []})
60+ self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].add_character ({"name" : data ["character_name" ], "stats" : {}, "played_time" : [], "kills" : [], "deaths" : [], "ultimate_charged" : [], "ultimate_use" : [], "role" : "" })
6061
6162 if len (self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters [data ["character_name" ]].played_time ) > 0 :
6263 self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters [data ["character_name" ]].played_time [- 1 ]["end" ] = data ["time" ]
@@ -111,11 +112,25 @@ def add_player_stat(self, data):
111112 def add_hero_swap (self , data ):
112113
113114 self .add_player (data )
115+
116+ character_swap_dict = data .copy ()
117+ character_swap_dict ["character_name" ] = data ["character_swap" ]
118+ self .add_character (character_swap_dict )
119+
114120 if data ["character_swap" ] in self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters :
115- self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters [data ["character_swap" ]].add_played_time ({"end" : data ["time" ]})
121+ self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters [data ["character_swap" ]].add_start_time ({"start" : data ["time" ]})
122+ if data ["character_name" ] in self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters :
123+ self .rounds [self .actual_round ].teams [data ["team_name" ]].players [data ["player_name" ]].characters [data ["character_name" ]].add_end_time ({"end" : data ["time" ]})
116124
117125 self .events .append ({"type" : "hero_swap" , "timestamp" : data ["time" ], "player" : data ["player_name" ],
118- "description" : "{} swap on {}" .format (data ["player_name" ], data ["character_name" ])})
126+ "description" : "{} swap on {}" .format (data ["player_name" ], data ["character_swap" ]), "hero" : self .find_character_name_in_english (data ["character_swap" ])})
127+
128+ def add_hero_spawn (self , data ):
129+
130+ self .add_player (data )
131+ self .events .append ({"type" : "hero_spawn" , "timestamp" : data ["time" ], "player" : data ["player_name" ],
132+ "description" : "{} spawn with {}" .format (data ["player_name" ], data ["character_name" ]), "hero" : self .find_character_name_in_english (data ["character_name" ])})
133+
119134 def create_if_player_and_caracter_not_exist (self , team , player_name , character_name ):
120135
121136 if not player_name in self .rounds [self .actual_round ].teams [team ].players :
@@ -132,7 +147,7 @@ def add_ultimate_start(self, data):
132147 self .rounds [self .actual_round ].teams [data [3 ]].players [data [4 ]].characters [data [5 ]].add_ultimate_start (ultimate_start_data )
133148
134149 self .events .append ({"type" : "ultimate" , "timestamp" : data [2 ], "player" : data [4 ],
135- "description" : "{} use {} ultimate" .format (data [4 ], data [5 ])})
150+ "description" : "{} use {} ultimate" .format (data [4 ], data [5 ]), "hero" : self . find_character_name_in_english ( data [ 5 ]) })
136151
137152 def add_ultimate_end (self , data ):
138153
@@ -167,10 +182,11 @@ def end_round(self, data):
167182 self .rounds [self .actual_round ].end_time = data [2 ]
168183 for team in self .rounds [self .actual_round ].teams :
169184 for player in self .rounds [self .actual_round ].teams [team ].players :
185+
170186 for character in self .rounds [self .actual_round ].teams [team ].players [player ].characters :
171187 if not "end" in self .rounds [self .actual_round ].teams [team ].players [player ].characters [character ].played_time [- 1 ]:
172188 self .rounds [self .actual_round ].teams [team ].players [player ].characters [character ].played_time [- 1 ]["end" ] = end_round_data ["time" ]
173-
189+ self . rounds [ self . actual_round ]. teams [ team ]. players [ player ]. find_role ()
174190
175191 self .team1_score = end_round_data ["team1_score" ]
176192 self .team2_score = end_round_data ["team2_score" ]
@@ -220,4 +236,29 @@ def aggregate_stats(self):
220236 players_data [player_name ] = players_data .get (player_name , [])
221237 players_data [player_name ].append ({"round" : index , "stats" : aggregated_stats })
222238
223- self .stats_graph = players_data
239+ self .stats_graph = players_data
240+
241+ def find_character_name_in_english (self , character_name ):
242+
243+ folder_path = "log_analyser/roles/lg/"
244+ files = os .listdir (folder_path )
245+
246+ # Parcourir les fichiers
247+ for file_name in files :
248+ # Vérifier si le fichier est un fichier JSON
249+ if file_name .endswith ('.json' ):
250+ file_path = os .path .join (folder_path , file_name )
251+ with open (file_path , 'r' , encoding = 'utf-8' ) as file :
252+ data = json .load (file )
253+ if character_name in data :
254+ return data [character_name ]
255+
256+ with open ("log_analyser/roles/roles.json" , 'r' , encoding = 'utf-8' ) as file :
257+ data = json .load (file )
258+ for key , value in data .items ():
259+ if character_name in value :
260+ return character_name
261+
262+
263+ print ("Character name not found in english : " , character_name )
264+ return ""
0 commit comments