File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -194,15 +194,29 @@ def __init__(self, packet_tree):
194194 super ().__init__ (packet_tree )
195195 self ._controller_map = {}
196196 self .friendly_player = None
197+ self ._ai_player = None
198+ self ._non_ai_players = []
197199
198200 def export (self ):
199201 for packet in self .packet_tree :
200202 self .export_packet (packet )
201- if self .friendly_player :
203+ if self .friendly_player is not None :
202204 # Stop export once we have it
203205 break
204206 return self .friendly_player
205207
208+ def handle_create_game (self , packet ):
209+ for player in packet .players :
210+ self .export_packet (player )
211+ if self ._ai_player is not None and len (self ._non_ai_players ) == 1 :
212+ self .friendly_player = self ._non_ai_players [0 ]
213+
214+ def handle_player (self , packet ):
215+ if packet .lo == 0 :
216+ self ._ai_player = packet .player_id
217+ else :
218+ self ._non_ai_players .append (packet .player_id )
219+
206220 def handle_tag_change (self , packet ):
207221 if packet .tag == GameTag .CONTROLLER :
208222 self ._controller_map [packet .entity ] = packet .value
Original file line number Diff line number Diff line change 1+ from hslog .export import FriendlyPlayerExporter
2+
3+ from .conftest import logfile
4+
5+
6+ class TestFriendlyPlayerExporter ():
7+ def test_inferrable (self , parser ):
8+ with open (logfile ("friendly_player_id_is_1.power.log" )) as f :
9+ parser .read (f )
10+
11+ assert len (parser .games ) == 1
12+ packet_tree = parser .games [0 ]
13+ fpe = FriendlyPlayerExporter (packet_tree )
14+ friendly_player = fpe .export ()
15+ assert friendly_player == 1
16+
17+ def test_ai_game (self , parser ):
18+ with open (logfile ("puzzlelab.power.log" )) as f :
19+ parser .read (f )
20+
21+ assert len (parser .games ) == 1
22+ packet_tree = parser .games [0 ]
23+ fpe = FriendlyPlayerExporter (packet_tree )
24+ friendly_player = fpe .export ()
25+ assert friendly_player == 1
26+
27+ def test_battlegrounds (self , parser ):
28+ with open (logfile ("36393_battlegrounds.power.log" )) as f :
29+ parser .read (f )
30+
31+ assert len (parser .games ) == 1
32+ packet_tree = parser .games [0 ]
33+ fpe = FriendlyPlayerExporter (packet_tree )
34+ friendly_player = fpe .export ()
35+ assert friendly_player == 3
Original file line number Diff line number Diff line change @@ -134,11 +134,6 @@ def test_game_initialization():
134134 GameTag .CARDTYPE : CardType .PLAYER ,
135135 }
136136
137- # Test that there should be no friendly player
138- fpe = FriendlyPlayerExporter (packet_tree )
139- friendly_player = fpe .export ()
140- assert not friendly_player
141-
142137
143138def test_timestamp_parsing ():
144139 parser = LogParser ()
You can’t perform that action at this time.
0 commit comments