Skip to content

Commit 11fccd0

Browse files
committed
Details patch that doesn't break old replay builds
1 parent 4b2407a commit 11fccd0

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

sc2reader/factories.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,8 @@ def register_defaults(self):
361361

362362
def register_default_readers(self):
363363
"""Registers factory default readers."""
364-
self.register_reader('replay.details', readers.DetailsReader_Base())
364+
self.register_reader('replay.details', readers.DetailsReader_Base(), lambda r: r.build < 22612)
365+
self.register_reader('replay.details', readers.DetailsReader_22612(), lambda r: r.build >= 22612)
365366
self.register_reader('replay.initData', readers.InitDataReader_Base())
366367
self.register_reader('replay.message.events', readers.MessageEventsReader_Base())
367368
self.register_reader('replay.attributes.events', readers.AttributesEventsReader_Base(), lambda r: r.build < 17326)
@@ -402,4 +403,4 @@ def load_replay(self, replay_file, options=None, **new_options):
402403
else:
403404
replay = super(SC2Cache, self).load_replay(replay_file, options=options)
404405
self.cache.set(replay_file, replay)
405-
return replay
406+
return replay

sc2reader/objects.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from sc2reader.utils import PersonDict, AttributeDict
99

1010
Location = namedtuple('Location',('x','y'))
11-
Details = namedtuple('Details',['players','map','unknown1','unknown2','os','file_time','utc_adjustment','unknown4','unknown5','unknown6','unknown7','unknown8','unknown9','unknown10', 'unknown11'])
1211

1312
MapData = namedtuple('MapData',['unknown','gateway','map_hash'])
1413
PlayerData = namedtuple('PlayerData',['name','bnet','race','color','unknown1','unknown2','handicap','unknown3','result'])

sc2reader/readers.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class AttributesEventsReader_17326(AttributesEventsReader_Base):
9797

9898

9999
class DetailsReader_Base(Reader):
100+
Details = namedtuple('Details',['players','map','unknown1','unknown2','os','file_time','utc_adjustment','unknown4','unknown5','unknown6','unknown7','unknown8','unknown9','unknown10'])
100101
def __call__(self, buffer, replay):
101102
# The entire details file is just a serialized data structure
102103
#
@@ -159,8 +160,10 @@ def __call__(self, buffer, replay):
159160

160161
# As a final touch, label all extracted information using the Details
161162
# named tuple from objects.py
162-
return Details(*ordered_values(data))
163+
return self.Details(*ordered_values(data))
163164

165+
class DetailsReader_22612(DetailsReader_Base):
166+
Details = namedtuple('Details',['players','map','unknown1','unknown2','os','file_time','utc_adjustment','unknown4','unknown5','unknown6','unknown7','unknown8','unknown9','unknown10', 'unknown11'])
164167

165168
class MessageEventsReader_Base(Reader):
166169
def __call__(self, buffer, replay):

0 commit comments

Comments
 (0)