7
7
from Image import ANTIALIAS
8
8
from StringIO import StringIO
9
9
from collections import defaultdict
10
+ from sc2reader .engine import PluginExit
11
+
10
12
11
13
# The creep tracker plugin
12
14
class CreepTracker (object ):
@@ -15,9 +17,12 @@ class CreepTracker(object):
15
17
player.creep_spread by minute
16
18
This uses the creep_tracker class to calculate the features
17
19
'''
20
+ name = "CreepTracker"
21
+
18
22
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
+
21
26
if replay .map is None :
22
27
replay .load_map ()
23
28
self .creepTracker = creep_tracker (replay )
@@ -38,8 +43,6 @@ def handleUnitBornEvent(self,event,replay):
38
43
(event .x ,event .y ),event .unit_type_name ,event .second )
39
44
40
45
def handleEndGame (self , event , replay ):
41
- if len ( replay .tracker_events ) == 0 :
42
- return
43
46
for player_id in replay .player :
44
47
self .creepTracker .reduce_cgu_per_minute (player_id )
45
48
for player in replay .players :
@@ -168,16 +171,16 @@ def reduce_cgu_per_minute(self,player_id):
168
171
cgu_last_minute_list = list ()
169
172
for index ,cgu_time in enumerate (self .creep_gen_units_times [player_id ]):
170
173
cgu_last_minute_list .append (self .creep_gen_units [player_id ][index ])
171
- if (cgu_time / 60 ) == 0 :
174
+ if (cgu_time // 60 ) == 0 :
172
175
cgu_per_player_new .append (self .creep_gen_units [player_id ][0 ])
173
176
cgu_time_per_player_new .append (0 )
174
177
cgu_last_minute_list = list ()
175
- if (cgu_time / 60 )> last_minute_found :
178
+ if (cgu_time // 60 )> last_minute_found :
176
179
cgu_max_in_min = max (cgu_last_minute_list ,key = len )
177
180
cgu_per_player_new .append (cgu_max_in_min )
178
181
cgu_max_in_min_index = self .creep_gen_units [player_id ].index (cgu_max_in_min )
179
182
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
181
184
cgu_last_minute_list = list ()
182
185
183
186
self .creep_gen_units [player_id ] = cgu_per_player_new
@@ -187,17 +190,15 @@ def get_creep_spread_area(self,player_id):
187
190
## iterates through all cgus and and calculate the area
188
191
for index ,cgu_per_player in enumerate (self .creep_gen_units [player_id ]):
189
192
# 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 )
192
194
# convert event coords to minimap coords
193
195
cgu_radius = self .convert_cgu_radius_event_to_map_coord (cgu_radius )
194
196
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 :
197
199
self .print_image (creep_area_positions ,player_id ,cgu_last_event_time )
198
200
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
201
202
return self .creep_spread_by_minute [player_id ]
202
203
203
204
def cgu_radius_to_map_positions (self ,cgu_radius ,radius_to_coordinates ):
0 commit comments