using System; using System.Collections; using System.Collections.Generic; using DG.Tweening; using Ichni.RhythmGame.Beatmap; using Ichni.RhythmGame.ThemeBundles.Basic.Beatmap; using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.Basic { public class BasicNotePerfectBurst : NotePerfectEffect { private GameObject effectRing; public BasicNotePerfectBurst(NoteVisualBase noteVisual) { this.note = noteVisual.note; this.noteVisual = noteVisual; this.effectRing = noteVisual.effectPrefabList[0]; this.effectTime = 0.1f; } public override void Recover() { effectRing.SetActive(false); effectRing.transform.localScale = Vector3.zero; effectRing.GetComponent().color = Color.white; noteVisual.noteMain.SetActive(true); if (noteVisual is BasicHoldVisualMesh holdVisualMesh) { holdVisualMesh.notePartList[1].SetActive(true); holdVisualMesh.notePartList[2].SetActive(true); } } public override void Adjust() { effectRing.gameObject.SetActive(true); effectRing.transform.DOScale(Vector3.one, effectTime).SetEase(Ease.OutQuad); effectRing.GetComponent().DOFade(0, effectTime).SetEase(Ease.OutQuad).OnComplete(() => effectRing.SetActive(false)); noteVisual.noteMain.SetActive(false); if (noteVisual is BasicHoldVisualMesh holdVisualMesh) { holdVisualMesh.notePartList[1].SetActive(false); holdVisualMesh.notePartList[2].SetActive(false); } } public override EffectBase_BM ConvertToBM() { return new BasicNotePerfectBurst_BM(effectTime); } } namespace Beatmap { public class BasicNotePerfectBurst_BM : NotePerfectEffect_BM { public BasicNotePerfectBurst_BM() { } public BasicNotePerfectBurst_BM(float effectTime) : base(effectTime) { } public override EffectBase ConvertToGameType(GameElement attachedGameElement) { return new BasicNotePerfectBurst(attachedGameElement as NoteVisualBase); } } } }