内容修补
This commit is contained in:
@@ -261,6 +261,14 @@ namespace Ichni.RhythmGame
|
||||
return EffectState.Error;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 当从Before状态进入Middle状态时,仅在效果的开始时触发一次方法
|
||||
/// </summary>
|
||||
public virtual void PreExecute()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 在效果的持续时间内,触发这个方法
|
||||
/// </summary>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -27,5 +27,10 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
selectSubmodule = new SelectSubmodule(this, note);
|
||||
}
|
||||
|
||||
public virtual void Recover()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -105,7 +105,16 @@ namespace Ichni
|
||||
|
||||
var inGameSettings = container.GenerateSubcontainer(3);
|
||||
var judgeTypeDropdown = inspector.GenerateDropdown(this, inGameSettings, "Judge Type",
|
||||
typeof(NoteBase.NoteJudgeType), nameof(currentJudgeType));
|
||||
typeof(NoteBase.NoteJudgeType), nameof(currentJudgeType)).AddListenerFunction(() =>
|
||||
{
|
||||
foreach (GameElement gameElement in beatmapContainer.gameElementList)
|
||||
{
|
||||
if (gameElement is NoteVisualBase noteVisual)
|
||||
{
|
||||
noteVisual.Recover();
|
||||
}
|
||||
}
|
||||
});
|
||||
var useNotePrefabToggle =
|
||||
inspector.GenerateToggle(this, inGameSettings, "Use Note Prefab", nameof(useNotePrefab));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user