HitScoreVisualizer icon indicating copy to clipboard operation
HitScoreVisualizer copied to clipboard

Updates for Beat Saber v1.31.0

Open daniel-chambers opened this issue 1 year ago • 0 comments

I really like this mod, and I wanted to use it on the latest Beat Saber version, so I've taken the liberty of fixing it up. 🙂

The biggest breaking change is that class methods are no longer virtualized by BSIPA (afaik), and while I did add BepInExp.AssemblyPublicizer to the project, that doesn't make otherwise normal methods virtual. This means that the approach of replacing the built in FlyingScoreEffect with the HsvFlyingScoreEffect subclass no longer works, since the subclass can't override the methods it needs to replace.

My solution is to simply use Harmony patches to patch FlyingScoreEffect with the same code that HsvFlyingScoreEffect used. This now lives in FlyingCoreEffectPatch and HsvFlyingScoreEffect has been deleted. Most of the patching logic that used to live in the FlyingCoreEffectPatch.cs file was about patching EffectPoolsManualInstaller to install HsvFlyingScoreEffect as a replacement. This is no longer required. The only logic retained was the configuration of the bloom font on the FlyingScoreEffect's _text, which has been moved to the new EffectPoolsManualInstallerPatch.

The other breaking change is that PersistentSingleton is not built in any more and has been replaced with a substitute from BSML. The usage of MenuButtons class (which is a PersistentSingleton) used in SettingsControllerManager has been updated to reflect this, removing logic that is no longer necessary.

daniel-chambers avatar Aug 13 '23 13:08 daniel-chambers