LaboratoryProtection/Assets/UnityTest/ZXL/Scripts/UI/RePlacementUI.cs

104 lines
2.6 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using DragonSoul.Shared;
using Mono.Event;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.UI;
namespace UnityTest.ZXL
{
public class RePlacementUI : UI
{
[SerializeField] private List<DragItem> _dragItems = new List<DragItem>();
private ETTask<bool> _task;
[SerializeField] private GameObject finishPanel;
[SerializeField] private Button btnFinish;
[SerializeField] private RawImage _rawImage;
public override void OnInit()
{
base.OnInit();
EventManager.Instance.Subscribe(RePlacementEventArgs.EventId, RePlacementEvent);
finishPanel.SetActive(false);
btnFinish.onClick.AddListener(ClickClose);
}
private void OnDestroy()
{
EventManager.Instance.Unsubscribe(RePlacementEventArgs.EventId, RePlacementEvent);
finishPanel.SetActive(false);
btnFinish.onClick.RemoveListener(ClickClose);
}
private void OnEnable()
{
StartCoroutine(WaitShow());
}
/// <summary>
/// 等待1s显示投影
/// </summary>
/// <returns></returns>
IEnumerator WaitShow()
{
yield return new WaitForSeconds(1f);
_rawImage.gameObject.SetActive(true);
}
public void SetAction(ETTask<bool> task)
{
if (task == null)
{
return;
}
_task = task;
}
private void RePlacementEvent(object sender, GameEventArgs e)
{
var args = e as RePlacementEventArgs;
if (_dragItems.Count == 0)
{
return;
}
_dragItems.Remove(args.dragItem);
if (_dragItems.Count == 0)
{
StartCoroutine(WaitTwoSecond());
}
}
/// <summary>
/// 等待两秒激活完成面板
/// </summary>
/// <returns></returns>
IEnumerator WaitTwoSecond()
{
yield return new WaitForSeconds(2);
finishPanel.SetActive(true);
}
void ClickClose()
{
Debug.Log("换装完成了");
_task.SetResult(true);
_task = null;
}
#if UNITY_EDITOR
[Button]
void Add()
{
this._dragItems.Clear();
var list = gameObject.GetComponentAllChild<DragItem>();
this._dragItems = list;
}
#endif
}
}