diff --git a/CHANGELOG.rst b/CHANGELOG.rst index c1ad96d9..21be080b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,10 @@ CHANGELOG ============ +1.1.0 - June 26, 2018 +--------------------- +* Added support for protocol 65895 (StarCraft 4.4.0) + 1.0.0 - May 18, 2018 -------------------- * Added support for protocol 48258 through 64469 diff --git a/sc2reader/readers.py b/sc2reader/readers.py index bbc7c3b4..1428186e 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -1920,6 +1920,31 @@ def command_event(self, data): unit_group=data.read_uint32() if data.read_bool() else None, ) + +class GameEventsReader_65895(GameEventsReader_64469): + """ + corresponds to StarCraft 4.4.0 + """ + + def __init__(self): + super(GameEventsReader_65895, self).__init__() + + self.EVENT_DISPATCH.update({ + 116: (None, self.set_sync_loading), + 117: (None, self.set_sync_playing), + }) + + def set_sync_loading(self, data): + return dict( + sync_load=data.read_uint32() + ) + + def set_sync_playing(self, data): + return dict( + sync_load=data.read_uint32() + ) + + class TrackerEventsReader(object): def __init__(self): diff --git a/sc2reader/resources.py b/sc2reader/resources.py index 1cf32ce8..9bc76da2 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -587,7 +587,8 @@ def register_default_readers(self): self.register_reader('replay.game.events', readers.GameEventsReader_38215(), lambda r: 38215 <= r.base_build < 38749) self.register_reader('replay.game.events', readers.GameEventsReader_38749(), lambda r: 38749 <= r.base_build < 38996) self.register_reader('replay.game.events', readers.GameEventsReader_38996(), lambda r: 38996 <= r.base_build < 64469) - self.register_reader('replay.game.events', readers.GameEventsReader_64469(), lambda r: 64469 <= r.base_build) + self.register_reader('replay.game.events', readers.GameEventsReader_64469(), lambda r: 64469 <= r.base_build < 65895) + self.register_reader('replay.game.events', readers.GameEventsReader_65895(), lambda r: 65895 <= r.base_build) self.register_reader('replay.game.events', readers.GameEventsReader_HotSBeta(), lambda r: r.versions[1] == 2 and r.build < 24247) def register_default_datapacks(self): diff --git a/setup.py b/setup.py index b805cc24..ba9db028 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,7 @@ setuptools.setup( license="MIT", name="sc2reader", - version='1.0.0', + version='1.1.0', keywords=["starcraft 2", "sc2", "replay", "parser"], description="Utility for parsing Starcraft II replay files", long_description=open("README.rst").read()+"\n\n"+open("CHANGELOG.rst").read(), diff --git a/test_replays/4.4.0.65895/1.SC2Replay b/test_replays/4.4.0.65895/1.SC2Replay new file mode 100644 index 00000000..a75feaff Binary files /dev/null and b/test_replays/4.4.0.65895/1.SC2Replay differ diff --git a/test_replays/test_all.py b/test_replays/test_all.py index d66cc528..61e73302 100644 --- a/test_replays/test_all.py +++ b/test_replays/test_all.py @@ -575,6 +575,13 @@ def test_coop(self): factory = sc2reader.factories.SC2Factory() replay = factory.load_replay(replayfilename) + def test_65895(self): + for replayfilename in [ + "test_replays/4.4.0.65895/1.SC2Replay", + ]: + factory = sc2reader.factories.SC2Factory() + replay = factory.load_replay(replayfilename) + class TestGameEngine(unittest.TestCase): class TestEvent(object):