using UnityEngine;
|
using UnityEngine.EventSystems;
|
using UnityEngine.UI;
|
using System.Collections;
|
|
namespace vnxbqy.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<FreeTimeCell>();
|
if(timeCell != null)
|
{
|
minIndex = timeCell.index;
|
break;
|
}
|
}
|
|
for (int i = childCount - 1; i > -1; i--)
|
{
|
FreeTimeCell timeCell = content.GetChild(i).GetComponent<FreeTimeCell>();
|
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;
|
}
|
|
|
}
|
}
|