Files
ichni_Official/Assets/Scripts/Game/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs
SoulliesOfficial d4e860fa16 initial
2025-06-03 02:42:28 -04:00

85 lines
2.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ichni.RhythmGame
{
public abstract class NoteGenerateEffect : NoteEffectBase
{
public float generateTime;
protected override EffectState CheckEffectState(float triggerTime)
{
float songTime = GameManager.instance.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 triggerTime)
{
EffectState state = CheckEffectState(triggerTime);
float songTime = GameManager.instance.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
{
public abstract class NoteGenerateEffect_BM : NoteEffectBase_BM
{
public float generateTime;
public NoteGenerateEffect_BM()
{
}
public NoteGenerateEffect_BM(float effectTime, float generateTime) : base(effectTime)
{
this.generateTime = generateTime;
}
}
}
}