More common logic into a base class that can also be used by the Laserball replay, and have everything inside a class so we don't have to pass a bunch of arrays around across all the functions. Removed over 100 LOC from the SM5 replay code.
This allows for more persistent state, so we can add the elimination sound.
Also added some more fine-grained tests.
More common logic into a base class that can also be used by the Laserball replay, and have everything inside a class so we don't have to pass a bunch of arrays around across all the functions. Removed over 100 LOC from the SM5 replay code. This allows for more persistent state, so we can add the elimination sound. Also added some more fine-grained tests.