forked from akanyan/mu3-mods
feat(BetterGiveUp): arbitrary rolling
This commit is contained in:
5
Enhancements/BetterGiveUp/MU3.Mod/TestMenuEnable.cs
Normal file
5
Enhancements/BetterGiveUp/MU3.Mod/TestMenuEnable.cs
Normal file
@ -0,0 +1,5 @@
|
||||
namespace MU3.Mod;
|
||||
|
||||
class TestMenuEnable {
|
||||
public class BetterGiveUp { };
|
||||
}
|
@ -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<GameSound>.instance.gameBGM.playMusic(_sessionInfo.musicData, 0);
|
||||
Singleton<GameSound>.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 {
|
||||
|
5
Enhancements/Pause/MU3.Mod/TestMenuEnable.cs
Normal file
5
Enhancements/Pause/MU3.Mod/TestMenuEnable.cs
Normal file
@ -0,0 +1,5 @@
|
||||
namespace MU3.Mod;
|
||||
|
||||
class TestMenuEnable {
|
||||
public class Pause { };
|
||||
}
|
Reference in New Issue
Block a user