HartoukChartEditor/Assets/Script/UI/MainMenu/NoteEditPanel/NoteEditWindowsView.cs

143 lines
4.9 KiB
C#

using Ookii.Dialogs;
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
/// <summary>
/// 所有的视图管理器
/// </summary>
public class NoteEditWindowsView : MonoBehaviour
{
/// <summary>
/// 自身变换组件
/// </summary>
public Transform _Transform { get; private set; }
public TextMeshProUGUI Title { get; private set; }
public TMP_InputField Start_x { get; private set; }
public TMP_InputField Start_y { get; private set; }
public TMP_InputField TargetTime { get; private set; }
public TMP_InputField End_x { get; private set; }
public TMP_InputField End_y { get; private set; }
public TMP_InputField EndTime { get; private set; }
public TMP_InputField GroupNum { get; private set; }
public TMP_Dropdown Type { get; private set; }
void Awake()
{
_Transform = gameObject.GetComponent<Transform>();
Title = _Transform.Find("Title").GetComponent<TextMeshProUGUI>();
Start_x = _Transform.Find("X_InputField").GetComponent<TMP_InputField>();
Start_y = _Transform.Find("Y_InputField").GetComponent<TMP_InputField>();
TargetTime = _Transform.Find("TargetTimeTitle_InputField").GetComponent<TMP_InputField>();
End_x = _Transform.Find("EndX_InputField").GetComponent<TMP_InputField>();
End_y = _Transform.Find("EndY_InputField").GetComponent<TMP_InputField>();
EndTime = _Transform.Find("EndTime_InputField").GetComponent<TMP_InputField>();
GroupNum = _Transform.Find("GroupNum_InputField").GetComponent<TMP_InputField>();
Type = _Transform.Find("TypeDropdown").GetComponent<TMP_Dropdown>();
}
//这里将声明一个事件,叫做被编辑事件,当这里的数据发生更改时,这个视觉系统将触发这个事件
//此时主控会通过预先预先留好的接口获取数据
//那之后,这些数据将会更新主数据库
/// <summary>
/// 该接口用于更新窗口中的数据,识别传入的数据类型,并且更新为对应的模样
/// </summary>
public void UpdateWindowData(RuntimeBaseNoteData data)
{
Debug.Log(this.name + ":窗口编辑器中显示数据的类型为:" + data.GetType());
switch (data)
{
case RuntimeTapData:
{
();
Title.text = "Tap";
Start_x.text = data.xPos.ToString();
Start_y.text = data.yPos.ToString();
TargetTime.text = data.targetTime.ToString();
break;
}
case RuntimeDragData:
{
();
Title.text = "Drag";
Start_x.text = data.xPos.ToString();
Start_y.text = data.yPos.ToString();
TargetTime.text = data.targetTime.ToString();
break;
}
case RuntimeFlickData:
{
var flickData = data as RuntimeFlickData;
();
Title.text = "Flick";
Start_x.text = data.xPos.ToString();
Start_y.text = data.yPos.ToString();
TargetTime.text = data.targetTime.ToString();
//遍历枚举的方法
var flickDirection = Enum.GetValues(typeof(FlickDirection));
foreach (var item in flickDirection)
{
Type.options.Add(new TMP_Dropdown.OptionData(item.ToString()));
}
Type.SetValueWithoutNotify((int)flickData.direction);
break;
}
case RuntimeSnakeData:
{
var slider = data as RuntimeSnakeData;
();
Title.text = "Slider";
Start_x.text = data.xPos.ToString();
Start_y.text = data.yPos.ToString();
TargetTime.text = data.targetTime.ToString();
End_x.text = slider.endXPos.ToString();
End_y.text = slider.endYPos.ToString();
EndTime.text = slider.endTime.ToString();
//遍历枚举的方法
var referencePointLocation = Enum.GetValues(typeof(ReferencePointLocation));
foreach (var item in referencePointLocation)
{
Type.options.Add(new TMP_Dropdown.OptionData(item.ToString()));
}
Type.SetValueWithoutNotify((int)slider.referencePoint);
break;
}
}
}
private void ()
{
Title.text = "null";
Start_x.text = "null";
Start_y.text = "null";
TargetTime.text = "null";
End_x.text = "null";
End_y.text = "null";
EndTime.text = "null";
GroupNum.text = "null";
Type.ClearOptions();
}
}