77from Image import ANTIALIAS
88from StringIO import StringIO
99from collections import defaultdict
10+ from sc2reader .engine import PluginExit
11+
1012
1113# The creep tracker plugin
1214class CreepTracker (object ):
@@ -15,9 +17,12 @@ class CreepTracker(object):
1517 player.creep_spread by minute
1618 This uses the creep_tracker class to calculate the features
1719 '''
20+ name = "CreepTracker"
21+
1822 def handleInitGame (self , event , replay ):
19- if len ( replay .tracker_events ) == 0 :
20- return
23+ if len (replay .tracker_events ) == 0 :
24+ yield PluginExit (self , code = 0 , details = {})
25+
2126 if replay .map is None :
2227 replay .load_map ()
2328 self .creepTracker = creep_tracker (replay )
@@ -38,8 +43,6 @@ def handleUnitBornEvent(self,event,replay):
3843 (event .x ,event .y ),event .unit_type_name ,event .second )
3944
4045 def handleEndGame (self , event , replay ):
41- if len ( replay .tracker_events ) == 0 :
42- return
4346 for player_id in replay .player :
4447 self .creepTracker .reduce_cgu_per_minute (player_id )
4548 for player in replay .players :
@@ -168,16 +171,16 @@ def reduce_cgu_per_minute(self,player_id):
168171 cgu_last_minute_list = list ()
169172 for index ,cgu_time in enumerate (self .creep_gen_units_times [player_id ]):
170173 cgu_last_minute_list .append (self .creep_gen_units [player_id ][index ])
171- if (cgu_time / 60 ) == 0 :
174+ if (cgu_time // 60 ) == 0 :
172175 cgu_per_player_new .append (self .creep_gen_units [player_id ][0 ])
173176 cgu_time_per_player_new .append (0 )
174177 cgu_last_minute_list = list ()
175- if (cgu_time / 60 )> last_minute_found :
178+ if (cgu_time // 60 )> last_minute_found :
176179 cgu_max_in_min = max (cgu_last_minute_list ,key = len )
177180 cgu_per_player_new .append (cgu_max_in_min )
178181 cgu_max_in_min_index = self .creep_gen_units [player_id ].index (cgu_max_in_min )
179182 cgu_time_per_player_new .append (self .creep_gen_units_times [player_id ][cgu_max_in_min_index ])
180- last_minute_found = cgu_time / 60
183+ last_minute_found = cgu_time // 60
181184 cgu_last_minute_list = list ()
182185
183186 self .creep_gen_units [player_id ] = cgu_per_player_new
@@ -187,17 +190,15 @@ def get_creep_spread_area(self,player_id):
187190 ## iterates through all cgus and and calculate the area
188191 for index ,cgu_per_player in enumerate (self .creep_gen_units [player_id ]):
189192 # convert cgu list into centre of circles and radius
190- cgu_radius = map (lambda x : (x [1 ], self .unit_name_to_radius [x [2 ]]),\
191- cgu_per_player )
193+ cgu_radius = map (lambda x : (x [1 ], self .unit_name_to_radius [x [2 ]]), cgu_per_player )
192194 # convert event coords to minimap coords
193195 cgu_radius = self .convert_cgu_radius_event_to_map_coord (cgu_radius )
194196 creep_area_positions = self .cgu_radius_to_map_positions (cgu_radius ,self .radius_to_coordinates )
195- cgu_last_event_time = self .creep_gen_units_times [player_id ][index ]/ 60
196- if self .debug :
197+ cgu_last_event_time = self .creep_gen_units_times [player_id ][index ]// 60
198+ if self .debug :
197199 self .print_image (creep_area_positions ,player_id ,cgu_last_event_time )
198200 creep_area = len (creep_area_positions )
199- self .creep_spread_by_minute [player_id ][cgu_last_event_time ]= \
200- float (creep_area )/ self .mapSize * 100
201+ self .creep_spread_by_minute [player_id ][cgu_last_event_time ]= float (creep_area )/ self .mapSize * 100
201202 return self .creep_spread_by_minute [player_id ]
202203
203204 def cgu_radius_to_map_positions (self ,cgu_radius ,radius_to_coordinates ):
0 commit comments