| | |
| | | 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<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; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | 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<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;
|
| | | }
|
| | |
|
| | |
|
| | | }
|
| | | }
|