Files
ichni_Official/Assets/Scripts/Game/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs
SoulliesOfficial 7580c4d87c 大更
2026-03-14 03:13:10 -04:00

73 lines
2.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.RhythmGame
{
public abstract class NoteGenerateEffect : NoteEffectBase
{
#region [] Effect Parameters
public float generateTime;
#endregion
#region [] Effect Pattern Overrides
protected override EffectState CheckEffectState(float triggerTime)
{
float songTime = CoreServices.TimeProvider.SongTime;
triggerTime -= generateTime;
if (songTime < triggerTime)
{
return EffectState.Before;
}
if (songTime >= triggerTime &&
songTime <= triggerTime + effectTime)
{
return EffectState.Middle;
}
if (songTime > triggerTime + effectTime)
{
return EffectState.After;
}
return EffectState.Error;
}
public override void UpdateEffect(float judgeTime)
{
EffectState state = CheckEffectState(judgeTime);
float songTime = CoreServices.TimeProvider.SongTime;
judgeTime -= 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 - judgeTime) / effectTime;
Execute();
}
else if (state == EffectState.After && nowEffectState != EffectState.After)
{
nowEffectState = EffectState.After;
effectProgressPercent = 1;
Adjust();
}
}
#endregion
}
}