//--------------------------------------------------------  
 | 
//    [Author]:           第二世界  
 | 
//    [  Date ]:           Monday, April 09, 2018  
 | 
//--------------------------------------------------------  
 | 
using UnityEngine;  
 | 
using System.Collections;  
 | 
using UnityEngine.UI;  
 | 
using System;  
 | 
using System.Collections.Generic;  
 | 
  
 | 
  
 | 
namespace vnxbqy.UI  
 | 
{  
 | 
  
 | 
    public class CrossServerOneVsOneCyclicScroll : CyclicScroll  
 | 
    {  
 | 
        const float fadeOutTime = 0.3f;  
 | 
        const float relocationTime = 0.4f;  
 | 
  
 | 
        CrossSeverOneVsOneDayAwardCell showAchievementBehaviour;  
 | 
  
 | 
        bool m_Showing = false;  
 | 
        public bool showing  
 | 
        {  
 | 
            get { return m_Showing; }  
 | 
            private set { m_Showing = value; }  
 | 
        }  
 | 
  
 | 
        List<CrossServerOneVsOneModel.AwardType> dayAwards;  
 | 
  
 | 
        CrossServerOneVsOneModel crossServerModel { get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); } }  
 | 
  
 | 
        public void ShowTreasures(bool _stepByStep)  
 | 
        {  
 | 
            dayAwards = crossServerModel.GetDayAwardsList();  
 | 
            Init(dayAwards, _stepByStep);  
 | 
        }  
 | 
  
 | 
        public override void Init<T>(List<T> _datas, bool _stepByStep = false)  
 | 
        {  
 | 
            for (int i = 0; i < infiniteItems.Count; i++)  
 | 
            {  
 | 
                var item = infiniteItems[i] as CrossSeverOneVsOneDayAwardCell;  
 | 
                item.alphaTween.SetStartState();  
 | 
                item.linerMove.Stop();  
 | 
            }  
 | 
  
 | 
            showing = false;  
 | 
            base.Init(_datas, _stepByStep);  
 | 
  
 | 
            showing = true;  
 | 
            this.enabled = false;  
 | 
            Clock.AlarmAt(DateTime.Now + new TimeSpan((long)(0.5f * TimeSpan.TicksPerSecond)), OnUnfoldShowEnd);  
 | 
        }  
 | 
  
 | 
        private void OnUnfoldShowEnd()  
 | 
        {  
 | 
            showing = false;  
 | 
            this.enabled = true;  
 | 
        }  
 | 
  
 | 
        public void ShowBegin(CrossSeverOneVsOneDayAwardCell _showItem)  
 | 
        {  
 | 
            this.enabled = false;  
 | 
            showing = true;  
 | 
            showAchievementBehaviour = _showItem;  
 | 
            showAchievementBehaviour.alphaTween.from = 1f;  
 | 
            showAchievementBehaviour.alphaTween.to = 0f;  
 | 
            showAchievementBehaviour.alphaTween.duration = fadeOutTime;  
 | 
            showAchievementBehaviour.alphaTween.SetStartState();  
 | 
            showAchievementBehaviour.alphaTween.Play();  
 | 
            var endTime = DateTime.Now + new TimeSpan((long)(fadeOutTime * TimeSpan.TicksPerSecond));  
 | 
            Clock.AlarmAt(endTime, ReLocateItems);  
 | 
        }  
 | 
  
 | 
        void ReLocateItems()  
 | 
        {  
 | 
            showAchievementBehaviour.alphaTween.SetStartState();  
 | 
            dayAwards = crossServerModel.GetDayAwardsList();  
 | 
            ReLocateAllItems(showAchievementBehaviour);  
 | 
  
 | 
            var endTime = DateTime.Now + new TimeSpan((long)(relocationTime * TimeSpan.TicksPerSecond));  
 | 
            Clock.AlarmAt(endTime, ShowEnd);  
 | 
        }  
 | 
  
 | 
        void ShowEnd()  
 | 
        {  
 | 
            this.enabled = true;  
 | 
            showing = false;  
 | 
        }  
 | 
  
 | 
        private void ReLocateAllItems(ScrollItem _scrollItem)  
 | 
        {  
 | 
            var index = infiniteItems.IndexOf(_scrollItem);  
 | 
            if (index != -1)  
 | 
            {  
 | 
                var showBehaviour = _scrollItem as CrossSeverOneVsOneDayAwardCell;  
 | 
                var lastItem = infiniteItems[infiniteItems.Count - 1];  
 | 
  
 | 
                showBehaviour.rectTransform.anchoredPosition = lastItem.rectTransform.anchoredPosition.SetY(lastItem.rectTransform.anchoredPosition.y - cellSize.y - spacing.y);  
 | 
                showBehaviour.SetActive(false);  
 | 
                infiniteItems.Remove(_scrollItem);  
 | 
                infiniteItems.Add(_scrollItem);  
 | 
  
 | 
                for (int i = 0; i < infiniteItems.Count; i++)  
 | 
                {  
 | 
                    var item = infiniteItems[i] as CrossSeverOneVsOneDayAwardCell;  
 | 
                    if (item != null && preIndex + i < datas.Count)  
 | 
                    {  
 | 
                        item.Display(datas[preIndex + i]);  
 | 
                    }  
 | 
                }  
 | 
  
 | 
                for (int i = index; i < infiniteItems.Count; i++)  
 | 
                {  
 | 
                    var item = infiniteItems[i];  
 | 
                    var achievementBehaviour = item as CrossSeverOneVsOneDayAwardCell;  
 | 
  
 | 
                    achievementBehaviour.linerMove.from = achievementBehaviour.rectTransform.anchoredPosition;  
 | 
                    var toY = achievementBehaviour.rectTransform.anchoredPosition.y + cellSize.y + spacing.y;  
 | 
                    achievementBehaviour.linerMove.to = achievementBehaviour.rectTransform.anchoredPosition.SetY(toY);  
 | 
                    achievementBehaviour.linerMove.duration = relocationTime;  
 | 
                    if (achievementBehaviour.linerMove.gameObject.activeInHierarchy)  
 | 
                    {  
 | 
                        achievementBehaviour.linerMove.Begin();  
 | 
                    }  
 | 
                    else  
 | 
                    {  
 | 
                        achievementBehaviour.linerMove.Stop();  
 | 
                    }  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
  
 | 
        public void ResetScrollItemName()  
 | 
        {  
 | 
            for (int i = 0; i < infiniteItems.Count; i++)  
 | 
            {  
 | 
                infiniteItems[i].name = string.Format("Achievement_{0}", i);  
 | 
            }  
 | 
        }  
 | 
  
 | 
    }  
 | 
  
 | 
}  
 | 
  
 | 
  
 | 
  
 |