diff --git a/Enhancements/BetterGiveUp/MU3.Mod/TestMenuEnable.cs b/Enhancements/BetterGiveUp/MU3.Mod/TestMenuEnable.cs new file mode 100644 index 0000000..035f0c4 --- /dev/null +++ b/Enhancements/BetterGiveUp/MU3.Mod/TestMenuEnable.cs @@ -0,0 +1,5 @@ +namespace MU3.Mod; + +class TestMenuEnable { + public class BetterGiveUp { }; +} diff --git a/Enhancements/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs b/Enhancements/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs index 71ab16b..4e7e2e0 100644 --- a/Enhancements/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs +++ b/Enhancements/BetterGiveUp/MU3.Sequence/patch_PlayMusic.cs @@ -12,7 +12,8 @@ namespace MU3.Sequence; class patch_PlayMusic: PlayMusic { private static readonly TimeSpan HOLD_DURATION = TimeSpan.FromSeconds(0.67f); - private static readonly TimeSpan ROLL_DURATION = TimeSpan.FromSeconds(0.5f); + + public double TargetFrame { get; set; } = 0f; [MonoModIgnore] private patch_NotesManager ntMgr => null; @@ -116,9 +117,10 @@ class patch_PlayMusic: PlayMusic { _gameEngine.enemyManager.initialize(); _gameEngine.reset(); - ntMgr.startPlay(0.0f); + double targetMs = TargetFrame * 16.6666667; + ntMgr.startPlay((float)targetMs); ntMgr.led.setGameColor(true); - Singleton.instance.gameBGM.playMusic(_sessionInfo.musicData, 0); + Singleton.instance.gameBGM.playMusic(_sessionInfo.musicData, (int)Math.Round(targetMs)); } private IEnumerator roll() { @@ -135,16 +137,19 @@ class patch_PlayMusic: PlayMusic { var enemyPos = ntMgr.getEnemyPos(); var playerPos = control._playPosition; - var finalRollingFrame = ntMgr.getCurrentFrame(); + var rollingStartFrame = ntMgr.getCurrentFrame(); var rollingStartTime = CustomDateTime.Now; + var rollDuration = TimeSpan.FromSeconds( + Math.Max(0.5, Math.Sqrt(Math.Abs(rollingStartFrame - TargetFrame) * 16.6666667) / 300.0) + ); while(_isRolling) { TimeSpan timeSpan = CustomDateTime.Now - rollingStartTime; - if(timeSpan <= ROLL_DURATION) { - float frame = (float)(timeSpan.TotalMilliseconds / ROLL_DURATION.TotalMilliseconds); + if(timeSpan <= rollDuration) { + float frame = (float)(timeSpan.TotalMilliseconds / rollDuration.TotalMilliseconds); float num1 = fadeOut(frame, 0f, 1f); float num2 = fadeIn(frame, 0f, 1f); - ntMgr.setFrameForce(finalRollingFrame * (1f - num1)); + ntMgr.setFrameForce(rollingStartFrame + ((float)TargetFrame - rollingStartFrame) * num1); ntMgr.EnemyPositionForce = new Vector3(enemyPos.x, enemyPos.y + num2 * 215f, enemyPos.z + num2 * 1600f); control._playPosition = new Vector3(playerPos.x, playerPos.y, playerPos.z - num2 * 10f); } else { diff --git a/Enhancements/Pause/MU3.Mod/TestMenuEnable.cs b/Enhancements/Pause/MU3.Mod/TestMenuEnable.cs new file mode 100644 index 0000000..dafbc7c --- /dev/null +++ b/Enhancements/Pause/MU3.Mod/TestMenuEnable.cs @@ -0,0 +1,5 @@ +namespace MU3.Mod; + +class TestMenuEnable { + public class Pause { }; +}