mirror of https://github.com/hykilpikonna/AquaDX
个人录制谱面确认时用得到的patch
parent
39646732b6
commit
4fd2fc7e00
|
@ -0,0 +1,83 @@
|
|||
using HarmonyLib;
|
||||
using Monitor;
|
||||
using Process;
|
||||
using UI;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AquaMai.RenderTweak;
|
||||
|
||||
public class TrackStartProcessTweak
|
||||
{
|
||||
// 总之这个 Patch 没啥用, 是我个人用 sinmai 录谱面确认时用得到, 顺手也写进来了
|
||||
// 具体而言就是推迟了歌曲开始界面的动画便于后期剪辑
|
||||
// 然后把“TRACK X”字样和 DX/标准谱面的显示框隐藏掉, 让他看起来不那么 sinmai, 更像是 majdata
|
||||
|
||||
[HarmonyPrefix]
|
||||
[HarmonyPatch(typeof(TrackStartProcess), "OnUpdate")]
|
||||
private static bool DelayAnimation(
|
||||
TrackStartProcess.TrackStartSequence ____state,
|
||||
ref float ____timeCounter,
|
||||
ProcessDataContainer ___container
|
||||
)
|
||||
{
|
||||
if (____state == TrackStartProcess.TrackStartSequence.Wait)
|
||||
{
|
||||
// 将开始动画(就是“噔噔, 噔 噔噔”)推迟
|
||||
float temp = ____timeCounter + Time.deltaTime;
|
||||
if (____timeCounter < 1.0f && temp >= 1.0f)
|
||||
{
|
||||
// 这是用来让转场动画继续播放的, 原本就是这个时候 notify 的同时开始播放开始动画
|
||||
// 现在把开始动画往后延
|
||||
___container.processManager.NotificationFadeIn();
|
||||
}
|
||||
____timeCounter = temp;
|
||||
if (____timeCounter >= 3.0f)
|
||||
{
|
||||
return true;
|
||||
// 原 method 的逻辑是这样
|
||||
// case TrackStartProcess.TrackStartSequence.Wait:
|
||||
// this._timeCounter += Time.deltaTime;
|
||||
// if ((double) this._timeCounter >= 1.0)
|
||||
// {
|
||||
// this._timeCounter = 0.0f;
|
||||
// this._state = TrackStartProcess.TrackStartSequence.Disp;
|
||||
// /* 一些开始播放开始动画的代码 */
|
||||
// this.container.processManager.NotificationFadeIn();
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// 所以只要在 prefix 里面等到 timeCounter 达到我们想要的值以后再执行原 method 就好
|
||||
// 这里有个细节: NotificationFadeIn() 会被执行两遍, 这其实不好, 是个潜在 bug
|
||||
// 不过由于此处把开始动画往后推了 2s, 转场动画已经结束把 Process 释放掉了, 所以第二遍会找不到 Process 就没效果
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else if (____state == TrackStartProcess.TrackStartSequence.DispEnd)
|
||||
{
|
||||
// 将开始动画结束以后的转场动画推迟
|
||||
____timeCounter += Time.deltaTime; // timeCounter 会在先前由原本的 method 归零
|
||||
if (____timeCounter >= 1.0f)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
[HarmonyPostfix]
|
||||
[HarmonyPatch(typeof(TrackStartMonitor), "SetTrackStart")]
|
||||
private static void DisableTabs(
|
||||
SpriteCounter ____trackNumber, SpriteCounter ____bossTrackNumber, SpriteCounter ____utageTrackNumber,
|
||||
MultipleImage ____musicTabImage, GameObject[] ____musicTabObj
|
||||
)
|
||||
{
|
||||
____trackNumber.transform.parent.gameObject.SetActive(false);
|
||||
____bossTrackNumber.transform.parent.gameObject.SetActive(false);
|
||||
____utageTrackNumber.transform.parent.gameObject.SetActive(false);
|
||||
____musicTabImage.gameObject.SetActive(false);
|
||||
____musicTabObj[0].gameObject.SetActive(false);
|
||||
____musicTabObj[1].gameObject.SetActive(false);
|
||||
____musicTabObj[2].gameObject.SetActive(false);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue