//--------------------------------------------------------
|
// [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);
|
}
|
}
|
|
}
|
|
}
|
|
|
|