85 lines
2.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
} |