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; } } } }