using Ookii.Dialogs;
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
///
/// 所有的视图管理器
///
public class NoteEditWindowsView : MonoBehaviour
{
///
/// 自身变换组件
///
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();
Title = _Transform.Find("Title").GetComponent();
Start_x = _Transform.Find("X_InputField").GetComponent();
Start_y = _Transform.Find("Y_InputField").GetComponent();
TargetTime = _Transform.Find("TargetTimeTitle_InputField").GetComponent();
End_x = _Transform.Find("EndX_InputField").GetComponent();
End_y = _Transform.Find("EndY_InputField").GetComponent();
EndTime = _Transform.Find("EndTime_InputField").GetComponent();
GroupNum = _Transform.Find("GroupNum_InputField").GetComponent();
Type = _Transform.Find("TypeDropdown").GetComponent();
}
//这里将声明一个事件,叫做被编辑事件,当这里的数据发生更改时,这个视觉系统将触发这个事件
//此时主控会通过预先预先留好的接口获取数据
//那之后,这些数据将会更新主数据库
///
/// 该接口用于更新窗口中的数据,识别传入的数据类型,并且更新为对应的模样
///
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();
}
}