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