22from collections import deque
33from threading import Thread
44
5- from hearthstone .enums import FormatType , GameType
6-
75from hslog import packets , tokens
86from hslog .exceptions import RegexParsingError
97from hslog .live .packets import LivePacketTree
108from hslog .live .player import LivePlayerManager
119from hslog .parser import LogParser
1210from hslog .player import LazyPlayer
13- from hslog .utils import parse_enum , parse_tag
11+ from hslog .utils import parse_tag
1412
1513
1614class LiveLogParser (LogParser ):
@@ -46,14 +44,17 @@ def new_packet_tree(self, ts):
4644 self .current_block = self ._packets
4745 self .games .append (self ._packets )
4846
49- """
50- why is this return important?
51- it"s called only here:
47+ def handle_entities_chosen (self , ts , data ):
48+ super (LiveLogParser , self ).handle_entities_chosen (ts , data )
49+ if data .startswith ("id=" ):
50+ sre = tokens .ENTITIES_CHOSEN_RE .match (data )
51+ if not sre :
52+ raise RegexParsingError (data )
53+ player_name = sre .groups ()[1 ]
5254
53- def create_game(self, ts):
54- self.new_packet_tree(ts)
55- """
56- return self ._packets
55+ # pick up opponent name from GameState.DebugPrintEntitiesChosen()
56+ m = self ._packets .manager
57+ m .complete_player_names (player_name , self ._packets )
5758
5859 def handle_game (self , ts , data ):
5960 if data .startswith ("PlayerID=" ):
@@ -62,25 +63,13 @@ def handle_game(self, ts, data):
6263 raise RegexParsingError (data )
6364 player_id , player_name = sre .groups ()
6465
65- # set the name of the player
66- players = self .games [- 1 ].liveExporter .game .players
67- for p in players :
68- if p .player_id == int (player_id ):
69- p .name = player_name
66+ # set initial name based on GameState.DebugPrintGame()
67+ m = self ._packets .manager
68+ m .set_initial_player_name (player_id , player_name , self ._packets )
7069
7170 player_id = int (player_id )
7271 else :
73- key , value = data .split ("=" )
74- key = key .strip ()
75- value = value .strip ()
76- if key == "GameType" :
77- value = parse_enum (GameType , value )
78- elif key == "FormatType" :
79- value = parse_enum (FormatType , value )
80- else :
81- value = int (value )
82-
83- self .game_meta [key ] = value
72+ super (LiveLogParser , self ).handle_game (ts , data )
8473
8574 def tag_change (self , ts , e , tag , value , def_change ):
8675 entity_id = self .parse_entity_or_player (e )
0 commit comments