using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Serialization; namespace Ichni.RhythmGame { public abstract class NoteVisualBase : SubstantialObject, IHaveEffectSubmodule, IHaveSelectSubmodule { public NoteBase note; public bool isHighlighted; public GameObject noteMain; public GameObject judgeEffect; public GameObject perfectPoint; public List notePartList; public List extraPartList; public List effectPrefabList; public virtual Vector3 noteVisualPosition => noteMain.transform.position; public EffectSubmodule effectSubmodule { get; set; } public SelectSubmodule selectSubmodule { get; set; } public new static NoteVisualBase GenerateElement(string elementName, Guid id, List tags, bool isFirstGenerated, string themeBundleName, string objectName, GameElement parentElement, bool isHighlighted) { NoteVisualBase noteVisual = SubstantialObject.GenerateElement(elementName, id, tags, isFirstGenerated, themeBundleName, objectName, parentElement).GetComponent(); noteVisual.isHighlighted = isHighlighted; noteVisual.SetHighlight(); return noteVisual; } public override void SetDefaultSubmodules() { base.SetDefaultSubmodules(); effectSubmodule = new EffectSubmodule(this, EffectSubmodule.EffectSubmodulePreset.Note); } public virtual void Recover() { } public virtual void SetHighlight() { } } namespace Beatmap { public abstract class NoteVisualBase_BM : SubstantialObject_BM { public bool isHighlighted; public NoteVisualBase_BM() { } public NoteVisualBase_BM(string elementName, Guid id, List tags, GameElement_BM parent, string themeBundleName, string objectName, bool isHighlighted) : base(elementName, id, tags, parent, themeBundleName, objectName) { this.isHighlighted = isHighlighted; } public override void ExecuteBM() { throw new NotImplementedException(); } } } }