@@ -70,10 +70,6 @@ class Replay(Resource):
70
70
#: The game speed: Slower, Slow, Normal, Fast, Faster
71
71
speed = str ()
72
72
73
- #: The operating system the replay was recorded on.
74
- #: Useful for interpretting certain kind of raw data.
75
- os = str ()
76
-
77
73
#: Deprecated, use :attr:`game_type` or :attr:`real_type` instead
78
74
type = str ()
79
75
@@ -203,7 +199,6 @@ def __init__(self, replay_file, filename=None, load_level=4, **options):
203
199
self .other_people = set ()
204
200
self .speed = ""
205
201
self .type = ""
206
- self .os = str ()
207
202
self .game_type = ""
208
203
self .real_type = ""
209
204
self .category = ""
@@ -298,13 +293,13 @@ def load_details(self):
298
293
299
294
self .map_name = details .map
300
295
301
- # Keep this theory for now but it seems like it could be wrong
302
- if details . os == 0 :
303
- self .os = "Windows"
304
- elif details . os == 1 :
305
- self .os = "Mac"
296
+ dependency_hashes = [ d . hash for d in details . dependencies ]
297
+ if hashlib . sha256 ( 'Standard Data: Swarm.SC2Mod' ). hexdigest () in dependency_hashes :
298
+ self .expansion = 'HotS'
299
+ elif hashlib . sha256 ( 'Standard Data: Liberty.SC2Mod' ). hexdigest () in dependency_hashes :
300
+ self .expansion = 'WoL'
306
301
else :
307
- raise ValueError ( "Unknown operating system {0} detected." . format ( details . os ))
302
+ self . expansion = ''
308
303
309
304
self .windows_timestamp = details .file_time
310
305
self .unix_timestamp = utils .windows_to_unix (self .windows_timestamp )
@@ -537,22 +532,22 @@ def register_datapack(self, datapack, filterfunc=lambda r: True):
537
532
def register_default_readers (self ):
538
533
"""Registers factory default readers."""
539
534
self .register_reader ('replay.details' , readers .DetailsReader_Base (), lambda r : r .build < 22612 )
540
- self .register_reader ('replay.details' , readers .DetailsReader_22612 (), lambda r : r .build >= 22612 and r .expansion == 'WoL' )
541
- self .register_reader ('replay.details' , readers .DetailsReader_Beta (), lambda r : r .build < 24764 and r .expansion == 'HotS' )
535
+ self .register_reader ('replay.details' , readers .DetailsReader_22612 (), lambda r : r .build >= 22612 and r .versions [ 1 ] == 1 )
536
+ self .register_reader ('replay.details' , readers .DetailsReader_Beta (), lambda r : r .build < 24764 and r .versions [ 1 ] == 2 )
542
537
self .register_reader ('replay.details' , readers .DetailsReader_Beta_24764 (), lambda r : r .build >= 24764 )
543
538
self .register_reader ('replay.initData' , readers .InitDataReader_Base (), lambda r : r .build < 24764 )
544
539
self .register_reader ('replay.initData' , readers .InitDataReader_24764 (), lambda r : r .build >= 24764 )
545
- self .register_reader ('replay.message.events' , readers .MessageEventsReader_Base (), lambda r : r .build < 24247 or r .expansion == 'WoL' )
546
- self .register_reader ('replay.message.events' , readers .MessageEventsReader_Beta_24247 (), lambda r : r .build >= 24247 and r .expansion == 'HotS' )
540
+ self .register_reader ('replay.message.events' , readers .MessageEventsReader_Base (), lambda r : r .build < 24247 or r .versions [ 1 ] == 1 )
541
+ self .register_reader ('replay.message.events' , readers .MessageEventsReader_Beta_24247 (), lambda r : r .build >= 24247 and r .versions [ 1 ] == 2 )
547
542
self .register_reader ('replay.attributes.events' , readers .AttributesEventsReader_Base (), lambda r : r .build < 17326 )
548
543
self .register_reader ('replay.attributes.events' , readers .AttributesEventsReader_17326 (), lambda r : r .build >= 17326 )
549
544
self .register_reader ('replay.game.events' , readers .GameEventsReader_16117 (), lambda r : 16117 <= r .build < 16561 )
550
545
self .register_reader ('replay.game.events' , readers .GameEventsReader_16561 (), lambda r : 16561 <= r .build < 18574 )
551
546
self .register_reader ('replay.game.events' , readers .GameEventsReader_18574 (), lambda r : 18574 <= r .build < 19595 )
552
547
self .register_reader ('replay.game.events' , readers .GameEventsReader_19595 (), lambda r : 19595 <= r .build < 22612 )
553
- self .register_reader ('replay.game.events' , readers .GameEventsReader_22612 (), lambda r : 22612 <= r .build and r .expansion == 'WoL' )
554
- self .register_reader ('replay.game.events' , readers .GameEventsReader_Beta (), lambda r : r .expansion == 'HotS' and r .build < 23925 )
555
- self .register_reader ('replay.game.events' , readers .GameEventsReader_Beta_23925 (), lambda r : r .expansion == 'HotS' and 23925 <= r .build )
548
+ self .register_reader ('replay.game.events' , readers .GameEventsReader_22612 (), lambda r : 22612 <= r .build and r .versions [ 1 ] == 1 )
549
+ self .register_reader ('replay.game.events' , readers .GameEventsReader_Beta (), lambda r : r .versions [ 1 ] == 2 and r .build < 23925 )
550
+ self .register_reader ('replay.game.events' , readers .GameEventsReader_Beta_23925 (), lambda r : r .versions [ 1 ] == 2 and 23925 <= r .build )
556
551
557
552
558
553
def register_default_datapacks (self ):
@@ -747,6 +742,14 @@ def __init__(self, summary_file, filename=None, lang='enUS', **options):
747
742
self .load_player_stats ()
748
743
self .load_players ()
749
744
745
+ dependencies = [sheet [1 ] for sheet in self .lang_sheets ['enUS' ]]
746
+ if 'Swarm (Mod)' in dependencies :
747
+ self .expansion = 'HotS'
748
+ elif 'Liberty (Mod)' in dependencies :
749
+ self .expansion = 'WoL'
750
+ else :
751
+ self .expansion = ''
752
+
750
753
self .game_type = self .settings ['Teams' ].replace (" " ,"" )
751
754
self .real_type = real_type (self .teams .values ())
752
755
0 commit comments