Skip to content

Commit 96eef15

Browse files
committed
Details patch that doesn't break old replay builds
1 parent 87903c2 commit 96eef15

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

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):

sc2reader/resources.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,8 @@ def register_datapack(self, datapack, filterfunc=lambda r: True):
503503
# Override points
504504
def register_default_readers(self):
505505
"""Registers factory default readers."""
506-
self.register_reader('replay.details', readers.DetailsReader_Base())
506+
self.register_reader('replay.details', readers.DetailsReader_Base(), lambda r: r.build < 22612)
507+
self.register_reader('replay.details', readers.DetailsReader_22612(), lambda r: r.build >= 22612)
507508
self.register_reader('replay.initData', readers.InitDataReader_Base())
508509
self.register_reader('replay.message.events', readers.MessageEventsReader_Base())
509510
self.register_reader('replay.attributes.events', readers.AttributesEventsReader_Base(), lambda r: r.build < 17326)

0 commit comments

Comments
 (0)