summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfozworth <>2016-12-19 13:51:00 (GMT)
committerhdiff <hdiff@hdiff.luite.com>2016-12-19 13:51:00 (GMT)
commit6c82e490a88eaff3f8540a9e5bd3039c45333dfa (patch)
treeb5d6421bbb1d2171fbcda203032872964a0f8025
parent468ad773c4dadb273d7ab537a5e50603ed521d45 (diff)
version 2.1.02.1.0
-rw-r--r--CHANGELOG.markdown7
-rw-r--r--README.markdown2
-rw-r--r--data/replays/00080014003600090000036E0F65CCEB.replay (renamed from replays/00080014003600090000036E0F65CCEB.replay)bin94347 -> 94347 bytes
-rw-r--r--data/replays/07E925B1423653D44CB8B4B2524792C1.replay (renamed from replays/07E925B1423653D44CB8B4B2524792C1.replay)bin30063 -> 30063 bytes
-rw-r--r--data/replays/0AD21FEE4A512906BEB6C98136AAF49A.replay (renamed from replays/0AD21FEE4A512906BEB6C98136AAF49A.replay)bin27949 -> 27949 bytes
-rw-r--r--data/replays/1205D96C4D819800927791820096CD49.replay (renamed from replays/1205D96C4D819800927791820096CD49.replay)bin461470 -> 461470 bytes
-rw-r--r--data/replays/160CA83E41083BFD8E6315B4BFCA0561.replay (renamed from replays/160CA83E41083BFD8E6315B4BFCA0561.replay)bin565359 -> 565359 bytes
-rw-r--r--data/replays/18D6738D415B70B5BE4C299588D3C141.replay (renamed from replays/18D6738D415B70B5BE4C299588D3C141.replay)bin21996 -> 21996 bytes
-rw-r--r--data/replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay (renamed from replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay)bin98814 -> 98814 bytes
-rw-r--r--data/replays/1AE415514DFC65DCBF8B8391AD35488D.replay (renamed from replays/1AE415514DFC65DCBF8B8391AD35488D.replay)bin25926 -> 25926 bytes
-rw-r--r--data/replays/1BC2D01444ACE577D01E988EADD4DFD0.replay (renamed from replays/1BC2D01444ACE577D01E988EADD4DFD0.replay)bin22739 -> 22739 bytes
-rw-r--r--data/replays/1D1DE97D4941C86E43FE0093563DB621.replay (renamed from replays/1D1DE97D4941C86E43FE0093563DB621.replay)bin59943 -> 59943 bytes
-rw-r--r--data/replays/1EF90FCC4F719F606A5327B3CDD782A4.replay (renamed from replays/1EF90FCC4F719F606A5327B3CDD782A4.replay)bin737542 -> 737542 bytes
-rw-r--r--data/replays/1F3798E540B0C37A946561ABBB3037F9.replay (renamed from replays/1F3798E540B0C37A946561ABBB3037F9.replay)bin27316 -> 27316 bytes
-rw-r--r--data/replays/211466D04B983F5A33CC2FA1D5928672.replay (renamed from replays/211466D04B983F5A33CC2FA1D5928672.replay)bin38258 -> 38258 bytes
-rw-r--r--data/replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay (renamed from replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay)bin315922 -> 315922 bytes
-rw-r--r--data/replays/27B6A7B64553F0F685874584F96BAB1B.replay (renamed from replays/27B6A7B64553F0F685874584F96BAB1B.replay)bin25332 -> 25332 bytes
-rw-r--r--data/replays/29F582C34A65EB34D358A784CBE3C189.replay (renamed from replays/29F582C34A65EB34D358A784CBE3C189.replay)bin21607 -> 21607 bytes
-rw-r--r--data/replays/372DBFCA4BDB340E4357B6BD43032802.replay (renamed from replays/372DBFCA4BDB340E4357B6BD43032802.replay)bin28065 -> 28065 bytes
-rw-r--r--data/replays/387F059C47C09E253C875CA990EFD9F2.replay (renamed from replays/387F059C47C09E253C875CA990EFD9F2.replay)bin737279 -> 737279 bytes
-rw-r--r--data/replays/3EA147DD485B8DD24810689A7A989E44.replay (renamed from replays/3EA147DD485B8DD24810689A7A989E44.replay)bin596690 -> 596690 bytes
-rw-r--r--data/replays/4126861E477F4A03DE2A4080374D7908.replay (renamed from replays/4126861E477F4A03DE2A4080374D7908.replay)bin26284 -> 26284 bytes
-rw-r--r--data/replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay (renamed from replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay)bin116440 -> 116440 bytes
-rw-r--r--data/replays/504ED825482186E771FAA9B642CE5CE4.replay (renamed from replays/504ED825482186E771FAA9B642CE5CE4.replay)bin145094 -> 145094 bytes
-rw-r--r--data/replays/52AA67F94090C19D33C5009E54D31FE4.replay (renamed from replays/52AA67F94090C19D33C5009E54D31FE4.replay)bin570657 -> 570657 bytes
-rw-r--r--data/replays/540DA764423C8FB24EB9D486D982F16F.replay (renamed from replays/540DA764423C8FB24EB9D486D982F16F.replay)bin34674 -> 34674 bytes
-rw-r--r--data/replays/551CA4D44FF2B86015DE44A6B5790D4C.replay (renamed from replays/551CA4D44FF2B86015DE44A6B5790D4C.replay)bin754887 -> 754887 bytes
-rw-r--r--data/replays/6320E51C49066A7C210A2993C2201D5F.replay (renamed from replays/6320E51C49066A7C210A2993C2201D5F.replay)bin391424 -> 391424 bytes
-rw-r--r--data/replays/6688EEE34BFEB3EC3A9E3283098CC712.replay (renamed from replays/6688EEE34BFEB3EC3A9E3283098CC712.replay)bin1026 -> 1026 bytes
-rw-r--r--data/replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay (renamed from replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay)bin91217 -> 91217 bytes
-rw-r--r--data/replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay (renamed from replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay)bin29715 -> 29715 bytes
-rw-r--r--data/replays/7109EB9846D303E54B7ACBA792036213.replay (renamed from replays/7109EB9846D303E54B7ACBA792036213.replay)bin65002 -> 65002 bytes
-rw-r--r--data/replays/7BF6073F4614CE0A438994B9A260DA6A.replay (renamed from replays/7BF6073F4614CE0A438994B9A260DA6A.replay)bin22841 -> 22841 bytes
-rw-r--r--data/replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay (renamed from replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay)bin212429 -> 212429 bytes
-rw-r--r--data/replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay (renamed from replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay)bin36307 -> 36307 bytes
-rw-r--r--data/replays/98E58A904D713F2DE202358E8573265D.replay (renamed from replays/98E58A904D713F2DE202358E8573265D.replay)bin34047 -> 34047 bytes
-rw-r--r--data/replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay (renamed from replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay)bin743537 -> 743537 bytes
-rw-r--r--data/replays/A52F804845573D8DA65E97BF59026A43.replay (renamed from replays/A52F804845573D8DA65E97BF59026A43.replay)bin73064 -> 73064 bytes
-rw-r--r--data/replays/A6711CE74272B2E663DCC9A200A218E3.replay (renamed from replays/A6711CE74272B2E663DCC9A200A218E3.replay)bin221897 -> 221897 bytes
-rw-r--r--data/replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay (renamed from replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay)bin396148 -> 396148 bytes
-rw-r--r--data/replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay (renamed from replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay)bin25888 -> 25888 bytes
-rw-r--r--data/replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay (renamed from replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay)bin25904 -> 25904 bytes
-rw-r--r--data/replays/C8372B1345B1803DEF039F815DBD802D.replay (renamed from replays/C8372B1345B1803DEF039F815DBD802D.replay)bin23625 -> 23625 bytes
-rw-r--r--data/replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay (renamed from replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay)bin30103 -> 30103 bytes
-rw-r--r--data/replays/D428F81646A98C25902CE988AE5C14C8.replay (renamed from replays/D428F81646A98C25902CE988AE5C14C8.replay)bin476589 -> 476589 bytes
-rw-r--r--data/replays/D7FB197A451D69075A0C99A2F49A4053.replay (renamed from replays/D7FB197A451D69075A0C99A2F49A4053.replay)bin29095 -> 29095 bytes
-rw-r--r--data/replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay (renamed from replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay)bin1055071 -> 1055071 bytes
-rw-r--r--data/replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay (renamed from replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay)bin30151 -> 30151 bytes
-rw-r--r--data/replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay (renamed from replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay)bin25462 -> 25462 bytes
-rw-r--r--data/replays/F299F176491554B11E34AB91CA76B2CE.replay (renamed from replays/F299F176491554B11E34AB91CA76B2CE.replay)bin22732 -> 22732 bytes
-rw-r--r--data/replays/F7B9E14545C7467B89A00895980FCD73.replay (renamed from replays/F7B9E14545C7467B89A00895980FCD73.replay)bin25580 -> 25580 bytes
-rw-r--r--data/replays/F811C1D24888015E23B598AD8628C742.replay (renamed from replays/F811C1D24888015E23B598AD8628C742.replay)bin605 -> 605 bytes
-rw-r--r--data/replays/FDC79DA84DD463D4BCCE6B892829AC88.replay (renamed from replays/FDC79DA84DD463D4BCCE6B892829AC88.replay)bin783619 -> 783619 bytes
-rw-r--r--package.yaml61
-rw-r--r--rattletrap.cabal362
-rw-r--r--source/library/Rattletrap.hs2
-rw-r--r--source/library/Rattletrap/ActorMap.hs2
-rw-r--r--source/library/Rattletrap/Helper.hs72
-rw-r--r--source/library/Rattletrap/Primitive/Text.hs2
-rw-r--r--source/library/Rattletrap/Utility.hs2
-rw-r--r--source/tests/Main.hs7
-rw-r--r--stack.yaml1
62 files changed, 331 insertions, 189 deletions
diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
new file mode 100644
index 0000000..745ea0e
--- /dev/null
+++ b/CHANGELOG.markdown
@@ -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
diff --git a/README.markdown b/README.markdown
index 877d0d7..9df04b5 100644
--- a/README.markdown
+++ b/README.markdown
@@ -65,7 +65,7 @@ used to modify replays.
[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
diff --git a/replays/00080014003600090000036E0F65CCEB.replay b/data/replays/00080014003600090000036E0F65CCEB.replay
index 7e2a9a4..7e2a9a4 100644
--- a/replays/00080014003600090000036E0F65CCEB.replay
+++ b/data/replays/00080014003600090000036E0F65CCEB.replay
Binary files differ
diff --git a/replays/07E925B1423653D44CB8B4B2524792C1.replay b/data/replays/07E925B1423653D44CB8B4B2524792C1.replay
index aad6bd5..aad6bd5 100644
--- a/replays/07E925B1423653D44CB8B4B2524792C1.replay
+++ b/data/replays/07E925B1423653D44CB8B4B2524792C1.replay
Binary files differ
diff --git a/replays/0AD21FEE4A512906BEB6C98136AAF49A.replay b/data/replays/0AD21FEE4A512906BEB6C98136AAF49A.replay
index 57401d4..57401d4 100644
--- a/replays/0AD21FEE4A512906BEB6C98136AAF49A.replay
+++ b/data/replays/0AD21FEE4A512906BEB6C98136AAF49A.replay
Binary files differ
diff --git a/replays/1205D96C4D819800927791820096CD49.replay b/data/replays/1205D96C4D819800927791820096CD49.replay
index 304f560..304f560 100644
--- a/replays/1205D96C4D819800927791820096CD49.replay
+++ b/data/replays/1205D96C4D819800927791820096CD49.replay
Binary files differ
diff --git a/replays/160CA83E41083BFD8E6315B4BFCA0561.replay b/data/replays/160CA83E41083BFD8E6315B4BFCA0561.replay
index d2909a0..d2909a0 100644
--- a/replays/160CA83E41083BFD8E6315B4BFCA0561.replay
+++ b/data/replays/160CA83E41083BFD8E6315B4BFCA0561.replay
Binary files differ
diff --git a/replays/18D6738D415B70B5BE4C299588D3C141.replay b/data/replays/18D6738D415B70B5BE4C299588D3C141.replay
index 20ecb3e..20ecb3e 100644
--- a/replays/18D6738D415B70B5BE4C299588D3C141.replay
+++ b/data/replays/18D6738D415B70B5BE4C299588D3C141.replay
Binary files differ
diff --git a/replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay b/data/replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay
index 7a08c7e..7a08c7e 100644
--- a/replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay
+++ b/data/replays/1A126AC24CAA0DB0E98835BD960B8AF8.replay
Binary files differ
diff --git a/replays/1AE415514DFC65DCBF8B8391AD35488D.replay b/data/replays/1AE415514DFC65DCBF8B8391AD35488D.replay
index 8decb62..8decb62 100644
--- a/replays/1AE415514DFC65DCBF8B8391AD35488D.replay
+++ b/data/replays/1AE415514DFC65DCBF8B8391AD35488D.replay
Binary files differ
diff --git a/replays/1BC2D01444ACE577D01E988EADD4DFD0.replay b/data/replays/1BC2D01444ACE577D01E988EADD4DFD0.replay
index 013dc6b..013dc6b 100644
--- a/replays/1BC2D01444ACE577D01E988EADD4DFD0.replay
+++ b/data/replays/1BC2D01444ACE577D01E988EADD4DFD0.replay
Binary files differ
diff --git a/replays/1D1DE97D4941C86E43FE0093563DB621.replay b/data/replays/1D1DE97D4941C86E43FE0093563DB621.replay
index 9995c0b..9995c0b 100644
--- a/replays/1D1DE97D4941C86E43FE0093563DB621.replay
+++ b/data/replays/1D1DE97D4941C86E43FE0093563DB621.replay
Binary files differ
diff --git a/replays/1EF90FCC4F719F606A5327B3CDD782A4.replay b/data/replays/1EF90FCC4F719F606A5327B3CDD782A4.replay
index 1cb5230..1cb5230 100644
--- a/replays/1EF90FCC4F719F606A5327B3CDD782A4.replay
+++ b/data/replays/1EF90FCC4F719F606A5327B3CDD782A4.replay
Binary files differ
diff --git a/replays/1F3798E540B0C37A946561ABBB3037F9.replay b/data/replays/1F3798E540B0C37A946561ABBB3037F9.replay
index 5250cdd..5250cdd 100644
--- a/replays/1F3798E540B0C37A946561ABBB3037F9.replay
+++ b/data/replays/1F3798E540B0C37A946561ABBB3037F9.replay
Binary files differ
diff --git a/replays/211466D04B983F5A33CC2FA1D5928672.replay b/data/replays/211466D04B983F5A33CC2FA1D5928672.replay
index c42d186..c42d186 100644
--- a/replays/211466D04B983F5A33CC2FA1D5928672.replay
+++ b/data/replays/211466D04B983F5A33CC2FA1D5928672.replay
Binary files differ
diff --git a/replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay b/data/replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay
index 6333e8f..6333e8f 100644
--- a/replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay
+++ b/data/replays/22BACD794ABE7B92E50E9CBDBD9C59CE.replay
Binary files differ
diff --git a/replays/27B6A7B64553F0F685874584F96BAB1B.replay b/data/replays/27B6A7B64553F0F685874584F96BAB1B.replay
index e278099..e278099 100644
--- a/replays/27B6A7B64553F0F685874584F96BAB1B.replay
+++ b/data/replays/27B6A7B64553F0F685874584F96BAB1B.replay
Binary files differ
diff --git a/replays/29F582C34A65EB34D358A784CBE3C189.replay b/data/replays/29F582C34A65EB34D358A784CBE3C189.replay
index fd52ff8..fd52ff8 100644
--- a/replays/29F582C34A65EB34D358A784CBE3C189.replay
+++ b/data/replays/29F582C34A65EB34D358A784CBE3C189.replay
Binary files differ
diff --git a/replays/372DBFCA4BDB340E4357B6BD43032802.replay b/data/replays/372DBFCA4BDB340E4357B6BD43032802.replay
index 425a636..425a636 100644
--- a/replays/372DBFCA4BDB340E4357B6BD43032802.replay
+++ b/data/replays/372DBFCA4BDB340E4357B6BD43032802.replay
Binary files differ
diff --git a/replays/387F059C47C09E253C875CA990EFD9F2.replay b/data/replays/387F059C47C09E253C875CA990EFD9F2.replay
index d498848..d498848 100644
--- a/replays/387F059C47C09E253C875CA990EFD9F2.replay
+++ b/data/replays/387F059C47C09E253C875CA990EFD9F2.replay
Binary files differ
diff --git a/replays/3EA147DD485B8DD24810689A7A989E44.replay b/data/replays/3EA147DD485B8DD24810689A7A989E44.replay
index 162552d..162552d 100644
--- a/replays/3EA147DD485B8DD24810689A7A989E44.replay
+++ b/data/replays/3EA147DD485B8DD24810689A7A989E44.replay
Binary files differ
diff --git a/replays/4126861E477F4A03DE2A4080374D7908.replay b/data/replays/4126861E477F4A03DE2A4080374D7908.replay
index 3e32298..3e32298 100644
--- a/replays/4126861E477F4A03DE2A4080374D7908.replay
+++ b/data/replays/4126861E477F4A03DE2A4080374D7908.replay
Binary files differ
diff --git a/replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay b/data/replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay
index 06f48b5..06f48b5 100644
--- a/replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay
+++ b/data/replays/42F0D8DA4FC89AE7B80FCAB7F637A8EA.replay
Binary files differ
diff --git a/replays/504ED825482186E771FAA9B642CE5CE4.replay b/data/replays/504ED825482186E771FAA9B642CE5CE4.replay
index e45f27f..e45f27f 100644
--- a/replays/504ED825482186E771FAA9B642CE5CE4.replay
+++ b/data/replays/504ED825482186E771FAA9B642CE5CE4.replay
Binary files differ
diff --git a/replays/52AA67F94090C19D33C5009E54D31FE4.replay b/data/replays/52AA67F94090C19D33C5009E54D31FE4.replay
index 3fa181c..3fa181c 100644
--- a/replays/52AA67F94090C19D33C5009E54D31FE4.replay
+++ b/data/replays/52AA67F94090C19D33C5009E54D31FE4.replay
Binary files differ
diff --git a/replays/540DA764423C8FB24EB9D486D982F16F.replay b/data/replays/540DA764423C8FB24EB9D486D982F16F.replay
index 9a76784..9a76784 100644
--- a/replays/540DA764423C8FB24EB9D486D982F16F.replay
+++ b/data/replays/540DA764423C8FB24EB9D486D982F16F.replay
Binary files differ
diff --git a/replays/551CA4D44FF2B86015DE44A6B5790D4C.replay b/data/replays/551CA4D44FF2B86015DE44A6B5790D4C.replay
index 26f5d60..26f5d60 100644
--- a/replays/551CA4D44FF2B86015DE44A6B5790D4C.replay
+++ b/data/replays/551CA4D44FF2B86015DE44A6B5790D4C.replay
Binary files differ
diff --git a/replays/6320E51C49066A7C210A2993C2201D5F.replay b/data/replays/6320E51C49066A7C210A2993C2201D5F.replay
index 2ef5adc..2ef5adc 100644
--- a/replays/6320E51C49066A7C210A2993C2201D5F.replay
+++ b/data/replays/6320E51C49066A7C210A2993C2201D5F.replay
Binary files differ
diff --git a/replays/6688EEE34BFEB3EC3A9E3283098CC712.replay b/data/replays/6688EEE34BFEB3EC3A9E3283098CC712.replay
index b62daf3..b62daf3 100644
--- a/replays/6688EEE34BFEB3EC3A9E3283098CC712.replay
+++ b/data/replays/6688EEE34BFEB3EC3A9E3283098CC712.replay
Binary files differ
diff --git a/replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay b/data/replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay
index 65f3b21..65f3b21 100644
--- a/replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay
+++ b/data/replays/6D1B06D844A5BB91B81FD4B5B28F08BA.replay
Binary files differ
diff --git a/replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay b/data/replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay
index cb73ed7..cb73ed7 100644
--- a/replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay
+++ b/data/replays/6F7CFCD24638F8A6567AB3A8B9958A90.replay
Binary files differ
diff --git a/replays/7109EB9846D303E54B7ACBA792036213.replay b/data/replays/7109EB9846D303E54B7ACBA792036213.replay
index d5f692d..d5f692d 100644
--- a/replays/7109EB9846D303E54B7ACBA792036213.replay
+++ b/data/replays/7109EB9846D303E54B7ACBA792036213.replay
Binary files differ
diff --git a/replays/7BF6073F4614CE0A438994B9A260DA6A.replay b/data/replays/7BF6073F4614CE0A438994B9A260DA6A.replay
index cc9c5ee..cc9c5ee 100644
--- a/replays/7BF6073F4614CE0A438994B9A260DA6A.replay
+++ b/data/replays/7BF6073F4614CE0A438994B9A260DA6A.replay
Binary files differ
diff --git a/replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay b/data/replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay
index c0e7b93..c0e7b93 100644
--- a/replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay
+++ b/data/replays/89CBA30E46FA5385BDD35DA4285D4D2E.replay
Binary files differ
diff --git a/replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay b/data/replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay
index a81a4bb..a81a4bb 100644
--- a/replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay
+++ b/data/replays/9704208245D7DD851F2FB2BC7DFD9AC3.replay
Binary files differ
diff --git a/replays/98E58A904D713F2DE202358E8573265D.replay b/data/replays/98E58A904D713F2DE202358E8573265D.replay
index c42cea9..c42cea9 100644
--- a/replays/98E58A904D713F2DE202358E8573265D.replay
+++ b/data/replays/98E58A904D713F2DE202358E8573265D.replay
Binary files differ
diff --git a/replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay b/data/replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay
index 2718343..2718343 100644
--- a/replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay
+++ b/data/replays/A128B3AB45D5A18E3EF9CF93C9576BCE.replay
Binary files differ
diff --git a/replays/A52F804845573D8DA65E97BF59026A43.replay b/data/replays/A52F804845573D8DA65E97BF59026A43.replay
index 317210f..317210f 100644
--- a/replays/A52F804845573D8DA65E97BF59026A43.replay
+++ b/data/replays/A52F804845573D8DA65E97BF59026A43.replay
Binary files differ
diff --git a/replays/A6711CE74272B2E663DCC9A200A218E3.replay b/data/replays/A6711CE74272B2E663DCC9A200A218E3.replay
index 133d333..133d333 100644
--- a/replays/A6711CE74272B2E663DCC9A200A218E3.replay
+++ b/data/replays/A6711CE74272B2E663DCC9A200A218E3.replay
Binary files differ
diff --git a/replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay b/data/replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay
index 813a2ea..813a2ea 100644
--- a/replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay
+++ b/data/replays/A7F001A1417A19BFA8C90990D8F7C2FF.replay
Binary files differ
diff --git a/replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay b/data/replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay
index 5f7f408..5f7f408 100644
--- a/replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay
+++ b/data/replays/B9F9B87D4A9D0A3D25D4EC91C0401DE2.replay
Binary files differ
diff --git a/replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay b/data/replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay
index 40c4c53..40c4c53 100644
--- a/replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay
+++ b/data/replays/C14F7E0E4D9B5E6BE9AD5D8ED56B174C.replay
Binary files differ
diff --git a/replays/C8372B1345B1803DEF039F815DBD802D.replay b/data/replays/C8372B1345B1803DEF039F815DBD802D.replay
index 45a1797..45a1797 100644
--- a/replays/C8372B1345B1803DEF039F815DBD802D.replay
+++ b/data/replays/C8372B1345B1803DEF039F815DBD802D.replay
Binary files differ
diff --git a/replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay b/data/replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay
index 59ff5a2..59ff5a2 100644
--- a/replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay
+++ b/data/replays/CC4CA70D4F7A67EBAD0ED9B9923106F7.replay
Binary files differ
diff --git a/replays/D428F81646A98C25902CE988AE5C14C8.replay b/data/replays/D428F81646A98C25902CE988AE5C14C8.replay
index d698e21..d698e21 100644
--- a/replays/D428F81646A98C25902CE988AE5C14C8.replay
+++ b/data/replays/D428F81646A98C25902CE988AE5C14C8.replay
Binary files differ
diff --git a/replays/D7FB197A451D69075A0C99A2F49A4053.replay b/data/replays/D7FB197A451D69075A0C99A2F49A4053.replay
index 09acba3..09acba3 100644
--- a/replays/D7FB197A451D69075A0C99A2F49A4053.replay
+++ b/data/replays/D7FB197A451D69075A0C99A2F49A4053.replay
Binary files differ
diff --git a/replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay b/data/replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay
index a49646b..a49646b 100644
--- a/replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay
+++ b/data/replays/DCB3A6B94A9DBE46FDE5EAA9B012F6C8.replay
Binary files differ
diff --git a/replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay b/data/replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay
index 2b225e0..2b225e0 100644
--- a/replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay
+++ b/data/replays/EAE311E84BA35B590A6FDBA6DD4F2FEB.replay
Binary files differ
diff --git a/replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay b/data/replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay
index 588437e..588437e 100644
--- a/replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay
+++ b/data/replays/EAE8DADA4BB2DC5422792C9B4A67392D.replay
Binary files differ
diff --git a/replays/F299F176491554B11E34AB91CA76B2CE.replay b/data/replays/F299F176491554B11E34AB91CA76B2CE.replay
index e57b37b..e57b37b 100644
--- a/replays/F299F176491554B11E34AB91CA76B2CE.replay
+++ b/data/replays/F299F176491554B11E34AB91CA76B2CE.replay
Binary files differ
diff --git a/replays/F7B9E14545C7467B89A00895980FCD73.replay b/data/replays/F7B9E14545C7467B89A00895980FCD73.replay
index 6e50aa2..6e50aa2 100644
--- a/replays/F7B9E14545C7467B89A00895980FCD73.replay
+++ b/data/replays/F7B9E14545C7467B89A00895980FCD73.replay
Binary files differ
diff --git a/replays/F811C1D24888015E23B598AD8628C742.replay b/data/replays/F811C1D24888015E23B598AD8628C742.replay
index be338ac..be338ac 100644
--- a/replays/F811C1D24888015E23B598AD8628C742.replay
+++ b/data/replays/F811C1D24888015E23B598AD8628C742.replay
Binary files differ
diff --git a/replays/FDC79DA84DD463D4BCCE6B892829AC88.replay b/data/replays/FDC79DA84DD463D4BCCE6B892829AC88.replay
index bf54cc3..bf54cc3 100644
--- a/replays/FDC79DA84DD463D4BCCE6B892829AC88.replay
+++ b/data/replays/FDC79DA84DD463D4BCCE6B892829AC88.replay
Binary files differ
diff --git a/package.yaml b/package.yaml
new file mode 100644
index 0000000..b17b10d
--- /dev/null
+++ b/package.yaml
@@ -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'
diff --git a/rattletrap.cabal b/rattletrap.cabal
index 8b226c1..34c114d 100644
--- a/rattletrap.cabal
+++ b/rattletrap.cabal
@@ -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
diff --git a/source/library/Rattletrap.hs b/source/library/Rattletrap.hs
index 895324d..5f7c7d0 100644
--- a/source/library/Rattletrap.hs
+++ b/source/library/Rattletrap.hs
@@ -39,6 +39,7 @@ module Rattletrap
, 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.Crc
import Rattletrap.Data
import Rattletrap.Frame
import Rattletrap.Header
+import Rattletrap.Helper
import Rattletrap.Initialization
import Rattletrap.Json ()
import Rattletrap.KeyFrame
diff --git a/source/library/Rattletrap/ActorMap.hs b/source/library/Rattletrap/ActorMap.hs
index 64dd27e..91a3d9a 100644
--- a/source/library/Rattletrap/ActorMap.hs
+++ b/source/library/Rattletrap/ActorMap.hs
@@ -10,4 +10,4 @@ makeActorMap :: ActorMap
makeActorMap = Map.empty
updateActorMap :: CompressedWord -> Word32 -> ActorMap -> ActorMap
-updateActorMap actorId objectId actorMap = Map.insert actorId objectId actorMap
+updateActorMap = Map.insert
diff --git a/source/library/Rattletrap/Helper.hs b/source/library/Rattletrap/Helper.hs
new file mode 100644
index 0000000..5cbef6c
--- /dev/null
+++ b/source/library/Rattletrap/Helper.hs
@@ -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)
diff --git a/source/library/Rattletrap/Primitive/Text.hs b/source/library/Rattletrap/Primitive/Text.hs
index 5f092c0..a4d378e 100644
--- a/source/library/Rattletrap/Primitive/Text.hs
+++ b/source/library/Rattletrap/Primitive/Text.hs
@@ -99,7 +99,7 @@ getTextEncoder size text =
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 =
diff --git a/source/library/Rattletrap/Utility.hs b/source/library/Rattletrap/Utility.hs
index 6563af7..81ff379 100644
--- a/source/library/Rattletrap/Utility.hs
+++ b/source/library/Rattletrap/Utility.hs
@@ -30,4 +30,4 @@ reverseByte byte =
Bits.shiftL (byte Bits..&. Bits.bit 0) 7
reverseBytes :: ByteString.ByteString -> ByteString.ByteString
-reverseBytes bytes = ByteString.map reverseByte bytes
+reverseBytes = ByteString.map reverseByte
diff --git a/source/tests/Main.hs b/source/tests/Main.hs
index 8b2e595..f1b9663 100644
--- a/source/tests/Main.hs
+++ b/source/tests/Main.hs
@@ -12,10 +12,7 @@ main = do
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 @@ specBody uuid = do
pathToReplay :: String -> FilePath
pathToReplay uuid =
- FilePath.joinPath ["replays", FilePath.addExtension uuid ".replay"]
+ FilePath.joinPath ["data", "replays", FilePath.addExtension uuid ".replay"]
replays :: [(String, String)]
replays =
diff --git a/stack.yaml b/stack.yaml
new file mode 100644
index 0000000..97842cf
--- /dev/null
+++ b/stack.yaml
@@ -0,0 +1 @@
+resolver: nightly-2016-12-14