rattletrap 2.0.0 → 2.1.0
raw patch · 113 files changed
+331/−189 lines, 113 filesbinary-added
Files
- CHANGELOG.markdown +7/−0
- README.markdown +1/−1
- data/replays/00080014003600090000036E0F65CCEB.replay binary
- data/replays/07E925B1423653D44CB8B4B2524792C1.replay binary
- data/replays/0AD21FEE4A512906BEB6C98136AAF49A.replay binary
- data/replays/1205D96C4D819800927791820096CD49.replay binary
- data/replays/160CA83E41083BFD8E6315B4BFCA0561.replay binary
- data/replays/18D6738D415B70B5BE4C299588D3C141.replay binary
- data/replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay binary
- data/replays/1AE415514DFC65DCBF8B8391AD35488D.replay binary
- data/replays/1BC2D01444ACE577D01E988EADD4DFD0.replay binary
- data/replays/1D1DE97D4941C86E43FE0093563DB621.replay binary
- data/replays/1EF90FCC4F719F606A5327B3CDD782A4.replay binary
- data/replays/1F3798E540B0C37A946561ABBB3037F9.replay binary
- data/replays/211466D04B983F5A33CC2FA1D5928672.replay binary
- data/replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay binary
- data/replays/27B6A7B64553F0F685874584F96BAB1B.replay binary
- data/replays/29F582C34A65EB34D358A784CBE3C189.replay binary
- data/replays/372DBFCA4BDB340E4357B6BD43032802.replay binary
- data/replays/387F059C47C09E253C875CA990EFD9F2.replay binary
- data/replays/3EA147DD485B8DD24810689A7A989E44.replay binary
- data/replays/4126861E477F4A03DE2A4080374D7908.replay binary
- data/replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay binary
- data/replays/504ED825482186E771FAA9B642CE5CE4.replay binary
- data/replays/52AA67F94090C19D33C5009E54D31FE4.replay binary
- data/replays/540DA764423C8FB24EB9D486D982F16F.replay binary
- data/replays/551CA4D44FF2B86015DE44A6B5790D4C.replay binary
- data/replays/6320E51C49066A7C210A2993C2201D5F.replay binary
- data/replays/6688EEE34BFEB3EC3A9E3283098CC712.replay binary
- data/replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay binary
- data/replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay binary
- data/replays/7109EB9846D303E54B7ACBA792036213.replay binary
- data/replays/7BF6073F4614CE0A438994B9A260DA6A.replay binary
- data/replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay binary
- data/replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay binary
- data/replays/98E58A904D713F2DE202358E8573265D.replay binary
- data/replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay binary
- data/replays/A52F804845573D8DA65E97BF59026A43.replay binary
- data/replays/A6711CE74272B2E663DCC9A200A218E3.replay binary
- data/replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay binary
- data/replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay binary
- data/replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay binary
- data/replays/C8372B1345B1803DEF039F815DBD802D.replay binary
- data/replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay binary
- data/replays/D428F81646A98C25902CE988AE5C14C8.replay binary
- data/replays/D7FB197A451D69075A0C99A2F49A4053.replay binary
- data/replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay binary
- data/replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay binary
- data/replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay binary
- data/replays/F299F176491554B11E34AB91CA76B2CE.replay binary
- data/replays/F7B9E14545C7467B89A00895980FCD73.replay binary
- data/replays/F811C1D24888015E23B598AD8628C742.replay binary
- data/replays/FDC79DA84DD463D4BCCE6B892829AC88.replay binary
- package.yaml +61/−0
- rattletrap.cabal +182/−180
- replays/00080014003600090000036E0F65CCEB.replay binary
- replays/07E925B1423653D44CB8B4B2524792C1.replay binary
- replays/0AD21FEE4A512906BEB6C98136AAF49A.replay binary
- replays/1205D96C4D819800927791820096CD49.replay binary
- replays/160CA83E41083BFD8E6315B4BFCA0561.replay binary
- replays/18D6738D415B70B5BE4C299588D3C141.replay binary
- replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay binary
- replays/1AE415514DFC65DCBF8B8391AD35488D.replay binary
- replays/1BC2D01444ACE577D01E988EADD4DFD0.replay binary
- replays/1D1DE97D4941C86E43FE0093563DB621.replay binary
- replays/1EF90FCC4F719F606A5327B3CDD782A4.replay binary
- replays/1F3798E540B0C37A946561ABBB3037F9.replay binary
- replays/211466D04B983F5A33CC2FA1D5928672.replay binary
- replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay binary
- replays/27B6A7B64553F0F685874584F96BAB1B.replay binary
- replays/29F582C34A65EB34D358A784CBE3C189.replay binary
- replays/372DBFCA4BDB340E4357B6BD43032802.replay binary
- replays/387F059C47C09E253C875CA990EFD9F2.replay binary
- replays/3EA147DD485B8DD24810689A7A989E44.replay binary
- replays/4126861E477F4A03DE2A4080374D7908.replay binary
- replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay binary
- replays/504ED825482186E771FAA9B642CE5CE4.replay binary
- replays/52AA67F94090C19D33C5009E54D31FE4.replay binary
- replays/540DA764423C8FB24EB9D486D982F16F.replay binary
- replays/551CA4D44FF2B86015DE44A6B5790D4C.replay binary
- replays/6320E51C49066A7C210A2993C2201D5F.replay binary
- replays/6688EEE34BFEB3EC3A9E3283098CC712.replay binary
- replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay binary
- replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay binary
- replays/7109EB9846D303E54B7ACBA792036213.replay binary
- replays/7BF6073F4614CE0A438994B9A260DA6A.replay binary
- replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay binary
- replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay binary
- replays/98E58A904D713F2DE202358E8573265D.replay binary
- replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay binary
- replays/A52F804845573D8DA65E97BF59026A43.replay binary
- replays/A6711CE74272B2E663DCC9A200A218E3.replay binary
- replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay binary
- replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay binary
- replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay binary
- replays/C8372B1345B1803DEF039F815DBD802D.replay binary
- replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay binary
- replays/D428F81646A98C25902CE988AE5C14C8.replay binary
- replays/D7FB197A451D69075A0C99A2F49A4053.replay binary
- replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay binary
- replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay binary
- replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay binary
- replays/F299F176491554B11E34AB91CA76B2CE.replay binary
- replays/F7B9E14545C7467B89A00895980FCD73.replay binary
- replays/F811C1D24888015E23B598AD8628C742.replay binary
- replays/FDC79DA84DD463D4BCCE6B892829AC88.replay binary
- source/library/Rattletrap.hs +2/−0
- source/library/Rattletrap/ActorMap.hs +1/−1
- source/library/Rattletrap/Helper.hs +72/−0
- source/library/Rattletrap/Primitive/Text.hs +1/−1
- source/library/Rattletrap/Utility.hs +1/−1
- source/tests/Main.hs +2/−5
- stack.yaml +1/−0
@@ -0,0 +1,7 @@+# Change log++Rattletrap uses [Semantic Versioning][].+The change log is available through the [releases on GitHub][].++[Semantic Versioning]: http://semver.org/spec/v2.0.0.html+[releases on GitHub]: https://github.com/tfausak/rattletrap/releases
@@ -65,7 +65,7 @@ [Rattletrap]: https://github.com/tfausak/rattletrap [Version badge]: https://www.stackage.org/package/rattletrap/badge/nightly?label=version-[version]: https://www.stackage.org/package/rattletrap+[version]: https://www.stackage.org/nightly/package/rattletrap [Windows build badge]: https://ci.appveyor.com/api/projects/status/github/tfausak/rattletrap?branch=master&svg=true [windows build]: https://ci.appveyor.com/project/TaylorFausak/rattletrap [Build badge]: https://travis-ci.org/tfausak/rattletrap.svg?branch=master
binary file changed (absent → 94347 bytes)
binary file changed (absent → 30063 bytes)
binary file changed (absent → 27949 bytes)
binary file changed (absent → 461470 bytes)
binary file changed (absent → 565359 bytes)
binary file changed (absent → 21996 bytes)
binary file changed (absent → 98814 bytes)
binary file changed (absent → 25926 bytes)
binary file changed (absent → 22739 bytes)
binary file changed (absent → 59943 bytes)
binary file changed (absent → 737542 bytes)
binary file changed (absent → 27316 bytes)
binary file changed (absent → 38258 bytes)
binary file changed (absent → 315922 bytes)
binary file changed (absent → 25332 bytes)
binary file changed (absent → 21607 bytes)
binary file changed (absent → 28065 bytes)
binary file changed (absent → 737279 bytes)
binary file changed (absent → 596690 bytes)
binary file changed (absent → 26284 bytes)
binary file changed (absent → 116440 bytes)
binary file changed (absent → 145094 bytes)
binary file changed (absent → 570657 bytes)
binary file changed (absent → 34674 bytes)
binary file changed (absent → 754887 bytes)
binary file changed (absent → 391424 bytes)
binary file changed (absent → 1026 bytes)
binary file changed (absent → 91217 bytes)
binary file changed (absent → 29715 bytes)
binary file changed (absent → 65002 bytes)
binary file changed (absent → 22841 bytes)
binary file changed (absent → 212429 bytes)
binary file changed (absent → 36307 bytes)
binary file changed (absent → 34047 bytes)
binary file changed (absent → 743537 bytes)
binary file changed (absent → 73064 bytes)
binary file changed (absent → 221897 bytes)
binary file changed (absent → 396148 bytes)
binary file changed (absent → 25888 bytes)
binary file changed (absent → 25904 bytes)
binary file changed (absent → 23625 bytes)
binary file changed (absent → 30103 bytes)
binary file changed (absent → 476589 bytes)
binary file changed (absent → 29095 bytes)
binary file changed (absent → 1055071 bytes)
binary file changed (absent → 30151 bytes)
binary file changed (absent → 25462 bytes)
binary file changed (absent → 22732 bytes)
binary file changed (absent → 25580 bytes)
binary file changed (absent → 605 bytes)
binary file changed (absent → 783619 bytes)
@@ -0,0 +1,61 @@+category: Game+description: Rattletrap parses and generates Rocket League replays.+executables:+ rattletrap:+ dependencies:+ - base+ - rattletrap+ ghc-options:+ - -rtsopts+ - -threaded+ - -with-rtsopts=-N+ main: Main.hs+ source-dirs: source/executables+extra-source-files:+- CHANGELOG.markdown+- data/replays/*.replay+- package.yaml+- README.markdown+- stack.yaml+ghc-options: -Wall+github: tfausak/rattletrap+library:+ default-extensions:+ - Strict+ dependencies:+ - aeson >=0.11 && <1.1+ - aeson-casing >=0.1 && <0.2+ - base >=4.9 && <4.10+ - bimap >=0.3 && <0.4+ - binary >=0.8 && <0.9+ - binary-bits >=0.5 && <0.6+ - bytestring >=0.10 && <0.11+ - containers >=0.5 && <0.6+ - data-binary-ieee754 >=0.4 && <0.5+ - template-haskell >=2.11 && <2.12+ - text >=1.2 && <1.3+ - vector >=0.11 && <0.12+ other-modules: Paths_rattletrap+ source-dirs: source/library+license: MIT+license-file: LICENSE.markdown+maintainer: Taylor Fausak+name: rattletrap+synopsis: Parse and generate Rocket League replays.+tests:+ test:+ dependencies:+ - base+ - bytestring+ - filepath >=1.4 && <1.5+ - rattletrap+ - tasty >=0.11 && <0.12+ - tasty-hspec >=1.1 && <1.2+ - temporary >=1.2 && <1.3+ ghc-options:+ - -rtsopts+ - -threaded+ - -with-rtsopts=-N+ main: Main.hs+ source-dirs: source/tests+version: '2.1.0'
@@ -1,198 +1,200 @@--- This file has been generated from package.yaml by hpack version 0.14.0.+-- This file has been generated from package.yaml by hpack version 0.15.0. -- -- see: https://github.com/sol/hpack name: rattletrap-version: 2.0.0-cabal-version: >= 1.10-build-type: Simple-license: MIT-license-file: LICENSE.markdown-maintainer: Taylor Fausak-homepage: https://github.com/tfausak/rattletrap#readme-bug-reports: https://github.com/tfausak/rattletrap/issues+version: 2.1.0 synopsis: Parse and generate Rocket League replays. description: Rattletrap parses and generates Rocket League replays. category: Game+homepage: https://github.com/tfausak/rattletrap#readme+bug-reports: https://github.com/tfausak/rattletrap/issues+maintainer: Taylor Fausak+license: MIT+license-file: LICENSE.markdown+build-type: Simple+cabal-version: >= 1.10 extra-source-files:+ CHANGELOG.markdown+ data/replays/00080014003600090000036E0F65CCEB.replay+ data/replays/07E925B1423653D44CB8B4B2524792C1.replay+ data/replays/0AD21FEE4A512906BEB6C98136AAF49A.replay+ data/replays/1205D96C4D819800927791820096CD49.replay+ data/replays/160CA83E41083BFD8E6315B4BFCA0561.replay+ data/replays/18D6738D415B70B5BE4C299588D3C141.replay+ data/replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay+ data/replays/1AE415514DFC65DCBF8B8391AD35488D.replay+ data/replays/1BC2D01444ACE577D01E988EADD4DFD0.replay+ data/replays/1D1DE97D4941C86E43FE0093563DB621.replay+ data/replays/1EF90FCC4F719F606A5327B3CDD782A4.replay+ data/replays/1F3798E540B0C37A946561ABBB3037F9.replay+ data/replays/211466D04B983F5A33CC2FA1D5928672.replay+ data/replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay+ data/replays/27B6A7B64553F0F685874584F96BAB1B.replay+ data/replays/29F582C34A65EB34D358A784CBE3C189.replay+ data/replays/372DBFCA4BDB340E4357B6BD43032802.replay+ data/replays/387F059C47C09E253C875CA990EFD9F2.replay+ data/replays/3EA147DD485B8DD24810689A7A989E44.replay+ data/replays/4126861E477F4A03DE2A4080374D7908.replay+ data/replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay+ data/replays/504ED825482186E771FAA9B642CE5CE4.replay+ data/replays/52AA67F94090C19D33C5009E54D31FE4.replay+ data/replays/540DA764423C8FB24EB9D486D982F16F.replay+ data/replays/551CA4D44FF2B86015DE44A6B5790D4C.replay+ data/replays/6320E51C49066A7C210A2993C2201D5F.replay+ data/replays/6688EEE34BFEB3EC3A9E3283098CC712.replay+ data/replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay+ data/replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay+ data/replays/7109EB9846D303E54B7ACBA792036213.replay+ data/replays/7BF6073F4614CE0A438994B9A260DA6A.replay+ data/replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay+ data/replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay+ data/replays/98E58A904D713F2DE202358E8573265D.replay+ data/replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay+ data/replays/A52F804845573D8DA65E97BF59026A43.replay+ data/replays/A6711CE74272B2E663DCC9A200A218E3.replay+ data/replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay+ data/replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay+ data/replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay+ data/replays/C8372B1345B1803DEF039F815DBD802D.replay+ data/replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay+ data/replays/D428F81646A98C25902CE988AE5C14C8.replay+ data/replays/D7FB197A451D69075A0C99A2F49A4053.replay+ data/replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay+ data/replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay+ data/replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay+ data/replays/F299F176491554B11E34AB91CA76B2CE.replay+ data/replays/F7B9E14545C7467B89A00895980FCD73.replay+ data/replays/F811C1D24888015E23B598AD8628C742.replay+ data/replays/FDC79DA84DD463D4BCCE6B892829AC88.replay+ package.yaml README.markdown- replays/00080014003600090000036E0F65CCEB.replay- replays/07E925B1423653D44CB8B4B2524792C1.replay- replays/0AD21FEE4A512906BEB6C98136AAF49A.replay- replays/1205D96C4D819800927791820096CD49.replay- replays/160CA83E41083BFD8E6315B4BFCA0561.replay- replays/18D6738D415B70B5BE4C299588D3C141.replay- replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay- replays/1AE415514DFC65DCBF8B8391AD35488D.replay- replays/1BC2D01444ACE577D01E988EADD4DFD0.replay- replays/1D1DE97D4941C86E43FE0093563DB621.replay- replays/1EF90FCC4F719F606A5327B3CDD782A4.replay- replays/1F3798E540B0C37A946561ABBB3037F9.replay- replays/211466D04B983F5A33CC2FA1D5928672.replay- replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay- replays/27B6A7B64553F0F685874584F96BAB1B.replay- replays/29F582C34A65EB34D358A784CBE3C189.replay- replays/372DBFCA4BDB340E4357B6BD43032802.replay- replays/387F059C47C09E253C875CA990EFD9F2.replay- replays/3EA147DD485B8DD24810689A7A989E44.replay- replays/4126861E477F4A03DE2A4080374D7908.replay- replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay- replays/504ED825482186E771FAA9B642CE5CE4.replay- replays/52AA67F94090C19D33C5009E54D31FE4.replay- replays/540DA764423C8FB24EB9D486D982F16F.replay- replays/551CA4D44FF2B86015DE44A6B5790D4C.replay- replays/6320E51C49066A7C210A2993C2201D5F.replay- replays/6688EEE34BFEB3EC3A9E3283098CC712.replay- replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay- replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay- replays/7109EB9846D303E54B7ACBA792036213.replay- replays/7BF6073F4614CE0A438994B9A260DA6A.replay- replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay- replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay- replays/98E58A904D713F2DE202358E8573265D.replay- replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay- replays/A52F804845573D8DA65E97BF59026A43.replay- replays/A6711CE74272B2E663DCC9A200A218E3.replay- replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay- replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay- replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay- replays/C8372B1345B1803DEF039F815DBD802D.replay- replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay- replays/D428F81646A98C25902CE988AE5C14C8.replay- replays/D7FB197A451D69075A0C99A2F49A4053.replay- replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay- replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay- replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay- replays/F299F176491554B11E34AB91CA76B2CE.replay- replays/F7B9E14545C7467B89A00895980FCD73.replay- replays/F811C1D24888015E23B598AD8628C742.replay- replays/FDC79DA84DD463D4BCCE6B892829AC88.replay+ stack.yaml source-repository head- type: git- location: https://github.com/tfausak/rattletrap+ type: git+ location: https://github.com/tfausak/rattletrap library- exposed-modules:- Rattletrap- Rattletrap.ActorMap- Rattletrap.Attribute- Rattletrap.Attribute.Boolean- Rattletrap.Attribute.Byte- Rattletrap.Attribute.CamSettings- Rattletrap.Attribute.ClubColors- Rattletrap.Attribute.Demolish- Rattletrap.Attribute.Enum- Rattletrap.Attribute.Explosion- Rattletrap.Attribute.FlaggedInt- Rattletrap.Attribute.Float- Rattletrap.Attribute.GameMode- Rattletrap.Attribute.Int- Rattletrap.Attribute.Loadout- Rattletrap.Attribute.LoadoutOnline- Rattletrap.Attribute.Loadouts- Rattletrap.Attribute.LoadoutsOnline- Rattletrap.Attribute.Location- Rattletrap.Attribute.MusicStinger- Rattletrap.Attribute.PartyLeader- Rattletrap.Attribute.Pickup- Rattletrap.Attribute.PrivateMatchSettings- Rattletrap.Attribute.QWord- Rattletrap.Attribute.Reservation- Rattletrap.Attribute.RigidBodyState- Rattletrap.Attribute.String- Rattletrap.Attribute.TeamPaint- Rattletrap.Attribute.UniqueId- Rattletrap.Attribute.WeldedInfo- Rattletrap.AttributeMapping- Rattletrap.AttributeType- Rattletrap.AttributeValue- Rattletrap.Cache- Rattletrap.ClassAttributeMap- Rattletrap.ClassMapping- Rattletrap.Content- Rattletrap.Crc- Rattletrap.Data- Rattletrap.Frame- Rattletrap.Header- Rattletrap.Initialization- Rattletrap.Json- Rattletrap.KeyFrame- Rattletrap.Main- Rattletrap.Mark- Rattletrap.Message- Rattletrap.Primitive- Rattletrap.Primitive.CompressedWord- Rattletrap.Primitive.CompressedWordVector- Rattletrap.Primitive.Dictionary- Rattletrap.Primitive.Float32- Rattletrap.Primitive.Int32- Rattletrap.Primitive.Int8- Rattletrap.Primitive.Int8Vector- Rattletrap.Primitive.List- Rattletrap.Primitive.Section- Rattletrap.Primitive.Text- Rattletrap.Primitive.Vector- Rattletrap.Primitive.Word32- Rattletrap.Primitive.Word64- Rattletrap.Primitive.Word8- Rattletrap.Property- Rattletrap.PropertyValue- Rattletrap.RemoteId- Rattletrap.Replay- Rattletrap.Replication- Rattletrap.Replication.Destroyed- Rattletrap.Replication.Spawned- Rattletrap.Replication.Updated- Rattletrap.ReplicationValue- Rattletrap.Utility- Rattletrap.Version- build-depends:- aeson >=0.11 && <1.1,- aeson-casing >=0.1 && <0.2,- base >=4.9 && <4.10,- bimap >=0.3 && <0.4,- binary >=0.8 && <0.9,- binary-bits >=0.5 && <0.6,- bytestring >=0.10 && <0.11,- containers >=0.5 && <0.6,- data-binary-ieee754 >=0.4 && <0.5,- template-haskell >=2.11 && <2.12,- text >=1.2 && <1.3,- vector >=0.11 && <0.12- default-language: Haskell2010- default-extensions: Strict- hs-source-dirs:- source/library- other-modules:- Paths_rattletrap- ghc-options: -Wall+ hs-source-dirs:+ source/library+ default-extensions: Strict+ ghc-options: -Wall+ build-depends:+ aeson >=0.11 && <1.1+ , aeson-casing >=0.1 && <0.2+ , base >=4.9 && <4.10+ , bimap >=0.3 && <0.4+ , binary >=0.8 && <0.9+ , binary-bits >=0.5 && <0.6+ , bytestring >=0.10 && <0.11+ , containers >=0.5 && <0.6+ , data-binary-ieee754 >=0.4 && <0.5+ , template-haskell >=2.11 && <2.12+ , text >=1.2 && <1.3+ , vector >=0.11 && <0.12+ exposed-modules:+ Rattletrap+ Rattletrap.ActorMap+ Rattletrap.Attribute+ Rattletrap.Attribute.Boolean+ Rattletrap.Attribute.Byte+ Rattletrap.Attribute.CamSettings+ Rattletrap.Attribute.ClubColors+ Rattletrap.Attribute.Demolish+ Rattletrap.Attribute.Enum+ Rattletrap.Attribute.Explosion+ Rattletrap.Attribute.FlaggedInt+ Rattletrap.Attribute.Float+ Rattletrap.Attribute.GameMode+ Rattletrap.Attribute.Int+ Rattletrap.Attribute.Loadout+ Rattletrap.Attribute.LoadoutOnline+ Rattletrap.Attribute.Loadouts+ Rattletrap.Attribute.LoadoutsOnline+ Rattletrap.Attribute.Location+ Rattletrap.Attribute.MusicStinger+ Rattletrap.Attribute.PartyLeader+ Rattletrap.Attribute.Pickup+ Rattletrap.Attribute.PrivateMatchSettings+ Rattletrap.Attribute.QWord+ Rattletrap.Attribute.Reservation+ Rattletrap.Attribute.RigidBodyState+ Rattletrap.Attribute.String+ Rattletrap.Attribute.TeamPaint+ Rattletrap.Attribute.UniqueId+ Rattletrap.Attribute.WeldedInfo+ Rattletrap.AttributeMapping+ Rattletrap.AttributeType+ Rattletrap.AttributeValue+ Rattletrap.Cache+ Rattletrap.ClassAttributeMap+ Rattletrap.ClassMapping+ Rattletrap.Content+ Rattletrap.Crc+ Rattletrap.Data+ Rattletrap.Frame+ Rattletrap.Header+ Rattletrap.Helper+ Rattletrap.Initialization+ Rattletrap.Json+ Rattletrap.KeyFrame+ Rattletrap.Main+ Rattletrap.Mark+ Rattletrap.Message+ Rattletrap.Primitive+ Rattletrap.Primitive.CompressedWord+ Rattletrap.Primitive.CompressedWordVector+ Rattletrap.Primitive.Dictionary+ Rattletrap.Primitive.Float32+ Rattletrap.Primitive.Int32+ Rattletrap.Primitive.Int8+ Rattletrap.Primitive.Int8Vector+ Rattletrap.Primitive.List+ Rattletrap.Primitive.Section+ Rattletrap.Primitive.Text+ Rattletrap.Primitive.Vector+ Rattletrap.Primitive.Word32+ Rattletrap.Primitive.Word64+ Rattletrap.Primitive.Word8+ Rattletrap.Property+ Rattletrap.PropertyValue+ Rattletrap.RemoteId+ Rattletrap.Replay+ Rattletrap.Replication+ Rattletrap.Replication.Destroyed+ Rattletrap.Replication.Spawned+ Rattletrap.Replication.Updated+ Rattletrap.ReplicationValue+ Rattletrap.Utility+ Rattletrap.Version+ other-modules:+ Paths_rattletrap+ default-language: Haskell2010 executable rattletrap- main-is: Main.hs- build-depends:- base,- rattletrap- default-language: Haskell2010- default-extensions: Strict- hs-source-dirs:- source/executables- ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N+ main-is: Main.hs+ hs-source-dirs:+ source/executables+ ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N+ build-depends:+ base+ , rattletrap+ default-language: Haskell2010 test-suite test- type: exitcode-stdio-1.0- main-is: Main.hs- build-depends:- base,- bytestring,- filepath >=1.4 && <1.5,- rattletrap,- tasty >=0.11 && <0.12,- tasty-hspec >=1.1 && <1.2,- temporary >=1.2 && <1.3- default-language: Haskell2010- default-extensions: Strict- hs-source-dirs:- source/tests- ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N+ type: exitcode-stdio-1.0+ main-is: Main.hs+ hs-source-dirs:+ source/tests+ ghc-options: -Wall -rtsopts -threaded -with-rtsopts=-N+ build-depends:+ base+ , bytestring+ , filepath >=1.4 && <1.5+ , rattletrap+ , tasty >=0.11 && <0.12+ , tasty-hspec >=1.1 && <1.2+ , temporary >=1.2 && <1.3+ default-language: Haskell2010
binary file changed (94347 → absent bytes)
binary file changed (30063 → absent bytes)
binary file changed (27949 → absent bytes)
binary file changed (461470 → absent bytes)
binary file changed (565359 → absent bytes)
binary file changed (21996 → absent bytes)
binary file changed (98814 → absent bytes)
binary file changed (25926 → absent bytes)
binary file changed (22739 → absent bytes)
binary file changed (59943 → absent bytes)
binary file changed (737542 → absent bytes)
binary file changed (27316 → absent bytes)
binary file changed (38258 → absent bytes)
binary file changed (315922 → absent bytes)
binary file changed (25332 → absent bytes)
binary file changed (21607 → absent bytes)
binary file changed (28065 → absent bytes)
binary file changed (737279 → absent bytes)
binary file changed (596690 → absent bytes)
binary file changed (26284 → absent bytes)
binary file changed (116440 → absent bytes)
binary file changed (145094 → absent bytes)
binary file changed (570657 → absent bytes)
binary file changed (34674 → absent bytes)
binary file changed (754887 → absent bytes)
binary file changed (391424 → absent bytes)
binary file changed (1026 → absent bytes)
binary file changed (91217 → absent bytes)
binary file changed (29715 → absent bytes)
binary file changed (65002 → absent bytes)
binary file changed (22841 → absent bytes)
binary file changed (212429 → absent bytes)
binary file changed (36307 → absent bytes)
binary file changed (34047 → absent bytes)
binary file changed (743537 → absent bytes)
binary file changed (73064 → absent bytes)
binary file changed (221897 → absent bytes)
binary file changed (396148 → absent bytes)
binary file changed (25888 → absent bytes)
binary file changed (25904 → absent bytes)
binary file changed (23625 → absent bytes)
binary file changed (30103 → absent bytes)
binary file changed (476589 → absent bytes)
binary file changed (29095 → absent bytes)
binary file changed (1055071 → absent bytes)
binary file changed (30151 → absent bytes)
binary file changed (25462 → absent bytes)
binary file changed (22732 → absent bytes)
binary file changed (25580 → absent bytes)
binary file changed (605 → absent bytes)
binary file changed (783619 → absent bytes)
@@ -39,6 +39,7 @@ , module Rattletrap.Data , module Rattletrap.Frame , module Rattletrap.Header+ , module Rattletrap.Helper , module Rattletrap.Initialization , module Rattletrap.KeyFrame , module Rattletrap.Main@@ -68,6 +69,7 @@ import Rattletrap.Data import Rattletrap.Frame import Rattletrap.Header+import Rattletrap.Helper import Rattletrap.Initialization import Rattletrap.Json () import Rattletrap.KeyFrame
@@ -10,4 +10,4 @@ makeActorMap = Map.empty updateActorMap :: CompressedWord -> Word32 -> ActorMap -> ActorMap-updateActorMap actorId objectId actorMap = Map.insert actorId objectId actorMap+updateActorMap = Map.insert
@@ -0,0 +1,72 @@+-- | This module provides helper functions for converting replays to and from+-- both their binary format and JSON.+module Rattletrap.Helper where++import Rattletrap.Json ()+import Rattletrap.Replay++import qualified Data.Aeson as Aeson+import qualified Data.Binary.Get as Binary+import qualified Data.Binary.Put as Binary+import qualified Data.ByteString.Lazy as ByteString+import qualified System.IO as IO++-- * Lazy byte strings+-- | Parses a raw replay.+decodeReplay :: ByteString.ByteString -> Either String Replay+decodeReplay contents =+ case Binary.runGetOrFail getReplay contents of+ Left (_, _, message) -> fail message+ Right (_, _, replay) -> pure replay++-- | Encodes a replay as JSON.+encodeJson :: Replay -> ByteString.ByteString+encodeJson = Aeson.encode++-- | Parses a JSON replay.+decodeJson :: ByteString.ByteString -> Either String Replay+decodeJson = Aeson.eitherDecode++-- | Encodes a raw replay.+encodeReplay :: Replay -> ByteString.ByteString+encodeReplay replay = Binary.runPut (putReplay replay)++-- * File paths+-- | 'decodeReplay'+decodeReplayFile :: FilePath -> IO (Either String Replay)+decodeReplayFile file = IO.withBinaryFile file IO.ReadMode decodeReplayHandle++-- | 'encodeJson'+encodeJsonFile :: Replay -> FilePath -> IO ()+encodeJsonFile replay file =+ IO.withBinaryFile file IO.WriteMode (encodeJsonHandle replay)++-- | 'decodeJson'+decodeJsonFile :: FilePath -> IO (Either String Replay)+decodeJsonFile file = IO.withBinaryFile file IO.ReadMode decodeJsonHandle++-- | 'encodeReplay'+encodeReplayFile :: Replay -> FilePath -> IO ()+encodeReplayFile replay file =+ IO.withBinaryFile file IO.WriteMode (encodeReplayHandle replay)++-- * Handles+-- | 'decodeReplay'+decodeReplayHandle :: IO.Handle -> IO (Either String Replay)+decodeReplayHandle handle = do+ contents <- ByteString.hGetContents handle+ pure (decodeReplay contents)++-- | 'encodeJson'+encodeJsonHandle :: Replay -> IO.Handle -> IO ()+encodeJsonHandle replay handle = ByteString.hPut handle (encodeJson replay)++-- | 'decodeJson'+decodeJsonHandle :: IO.Handle -> IO (Either String Replay)+decodeJsonHandle handle = do+ contents <- ByteString.hGetContents handle+ pure (decodeJson contents)++-- | 'encodeReplay'+encodeReplayHandle :: Replay -> IO.Handle -> IO ()+encodeReplayHandle replay handle = ByteString.hPut handle (encodeReplay replay)
@@ -99,7 +99,7 @@ else encodeLatin1 text dropNull :: Text.Text -> Text.Text-dropNull text = Text.dropWhileEnd (== '\x00') text+dropNull = Text.dropWhileEnd (== '\x00') addNull :: Text.Text -> Text.Text addNull text =
@@ -30,4 +30,4 @@ Bits.shiftL (byte Bits..&. Bits.bit 0) 7 reverseBytes :: ByteString.ByteString -> ByteString.ByteString-reverseBytes bytes = ByteString.map reverseByte bytes+reverseBytes = ByteString.map reverseByte
@@ -12,10 +12,7 @@ Tasty.defaultMain tests spec :: Hspec.Spec-spec =- Hspec.describe- "Rattletrap"- (mapM_ (\(uuid, description) -> itCanRoundTrip uuid description) replays)+spec = Hspec.describe "Rattletrap" (mapM_ (uncurry itCanRoundTrip) replays) itCanRoundTrip :: String -> String -> Hspec.Spec itCanRoundTrip uuid description =@@ -42,7 +39,7 @@ pathToReplay :: String -> FilePath pathToReplay uuid =- FilePath.joinPath ["replays", FilePath.addExtension uuid ".replay"]+ FilePath.joinPath ["data", "replays", FilePath.addExtension uuid ".replay"] replays :: [(String, String)] replays =
@@ -0,0 +1,1 @@+resolver: nightly-2016-12-14