using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using System.Collections; namespace Snxxz.UI { public class TimeListSlider : MonoBehaviour,IDragHandler,IEndDragHandler { [SerializeField] protected Transform sliderBg; [SerializeField] protected ScrollerController ctrl; [SerializeField] TimeType timeType; public virtual void OnDrag(PointerEventData eventData) { ctrl.m_Scorller.RefreshActiveCellViews(); } public virtual void OnEndDrag(PointerEventData eventData) { StartCoroutine(DelayJump()); } IEnumerator DelayJump() { yield return null; ctrl.JumpIndex(GetJumpToIndex() - SetFreeTimeWin.DownNum); yield return null; ctrl.m_Scorller.RefreshActiveCellViews(); } public virtual int GetJumpToIndex() { Transform content = ctrl.mScrollRect.content; int childCount = content.childCount; int minIndex = 0; int maxIndex = 0; for(int i = 0; i < childCount; i++) { FreeTimeCell timeCell = content.GetChild(i).GetComponent(); if(timeCell != null) { minIndex = timeCell.index; break; } } for (int i = childCount - 1; i > -1; i--) { FreeTimeCell timeCell = content.GetChild(i).GetComponent(); if (timeCell != null) { maxIndex = timeCell.index; break; } } switch (timeType) { case TimeType.Hour: if (maxIndex < minIndex) { maxIndex += 24; } break; case TimeType.Minute: if (maxIndex < minIndex) { maxIndex += 60; } break; } return (minIndex + maxIndex) / 2; } } }