内容修补

This commit is contained in:
SoulliesOfficial
2025-04-20 14:30:28 -04:00
parent 957b1e3702
commit 2ddf04a51b
19 changed files with 509 additions and 234 deletions

View File

@@ -261,6 +261,14 @@ namespace Ichni.RhythmGame
return EffectState.Error;
}
/// <summary>
/// 当从Before状态进入Middle状态时仅在效果的开始时触发一次方法
/// </summary>
public virtual void PreExecute()
{
}
/// <summary>
/// 在效果的持续时间内,触发这个方法
/// </summary>

View File

@@ -13,25 +13,57 @@ namespace Ichni.RhythmGame
protected override EffectState CheckEffectState(float triggerTime)
{
float songTime = EditorManager.instance.songInformation.songTime;
triggerTime -= generateTime;
if (songTime < triggerTime - generateTime)
if (songTime < triggerTime)
{
return EffectState.Before;
}
if (songTime >= triggerTime - generateTime &&
songTime <= triggerTime - generateTime + effectTime)
if (songTime >= triggerTime &&
songTime <= triggerTime + effectTime)
{
return EffectState.Middle;
}
if (songTime > triggerTime - generateTime + effectTime)
if (songTime > triggerTime + effectTime)
{
return EffectState.After;
}
return EffectState.Error;
}
public override void UpdateEffect(float triggerTime)
{
EffectState state = CheckEffectState(triggerTime);
float songTime = EditorManager.instance.songInformation.songTime;
triggerTime -= generateTime;
if (state == EffectState.Before && nowEffectState != EffectState.Before)
{
nowEffectState = EffectState.Before;
effectProgressPercent = 0;
Recover();
}
else if (state == EffectState.Middle)
{
if (nowEffectState == EffectState.Before)
{
PreExecute();
}
nowEffectState = EffectState.Middle;
effectProgressPercent = (songTime - triggerTime) / effectTime;
Execute();
}
else if (state == EffectState.After && nowEffectState != EffectState.After)
{
nowEffectState = EffectState.After;
effectProgressPercent = 1;
Adjust();
}
}
}
namespace Beatmap

View File

@@ -27,5 +27,10 @@ namespace Ichni.RhythmGame
{
selectSubmodule = new SelectSubmodule(this, note);
}
public virtual void Recover()
{
}
}
}