using System.Collections; using System.Collections.Generic; using System.Linq; using Ichni; using Ichni.Editor; using Ichni.RhythmGame; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; public class GraphicalFlexibleFloatWindow : MovableWindow { public Button addNewUnitButton; public FlexibleFloatTab unitPrefab; public IBaseElement connectedBaseElement; public List unitList; public string parameterName; public UnityAction ApplyParameters; public float songTime => EditorManager.instance.songInformation.songTime; public float songBeat => EditorManager.instance.songInformation.songBeat; public float beatmapStartTime => -EditorManager.instance.songInformation.delay; public float timePerBeat => 60f / EditorManager.instance.songInformation.bpm; public int BeatDeviver = 100; public void Initialize(IBaseElement baseElement, string title, FlexibleFloat[] FlexibleFloats, string[] Subtitles) { scalevalue = 5; transform.localScale = Vector3.zero; this.connectedBaseElement = baseElement; this.title.text = title; unitList = new List(); for (int i = 0; i <= FlexibleFloats.Length - 1; i++) { AddUnit(FlexibleFloats[i], Subtitles[i]); } closeButton.onClick.AddListener(Quit); StartCoroutine(WindowAnim.ShowPanelOnScale(gameObject)); ApplyParameters = () => { for (int i = 0; i <= unitList.Count - 1; i++) { unitList[i].flexibleFloat.Sort(); } //Dangered //connectedBaseElement.SetParameter(parameterName, unitList.Select(unit => unit.flexibleFloat).ToArray()); }; } public void AddUnit(FlexibleFloat flexibleFloat, string Subtitle) { flexibleFloat.Sort(); FlexibleFloatTab flexibleFloatTab = Instantiate(unitPrefab, windowRect); flexibleFloatTab.FatherWindow = this; unitList.Add(flexibleFloatTab); flexibleFloatTab.Initialize(flexibleFloat, Subtitle); } public void Quit() { ApplyParameters(); //StartCoroutine(WindowAnim.HidePanel(gameObject, true)); Destroy(gameObject); } public float scalevalue; public void CurveScale(string Rawvalue) { float value = float.Parse(Rawvalue); scalevalue = value; foreach (FlexibleFloatTab i in unitList) { i.CurveScale(value); } } }