using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
namespace vnxbqy.UI
|
{
|
[RequireComponent(typeof(CanvasGroup))]
|
public class ScrollTipDetail : MonoBehaviour
|
{
|
|
RichText text;
|
|
CanvasGroup canvasGroup;
|
[HideInInspector]
|
public ScrollTip.ScrollTipState presentState = ScrollTip.ScrollTipState.Idle;
|
private float m_Time = 0;
|
private Vector3 pos = Vector3.zero;
|
|
private float m_TipShowTime;
|
private float m_TipHideTime;
|
private float m_TipDistance;
|
|
private void Awake()
|
{
|
canvasGroup = GetComponent<CanvasGroup>();
|
text = transform.Find("Text").GetComponent<RichText>();
|
}
|
|
public void ShowTip(SystemHintData _hint)
|
{
|
text.SetExtenalData(_hint.extentionData);
|
text.text = _hint.message;
|
}
|
|
public void SetTipConfig(float _showTime,float _hideTime,float _dis)
|
{
|
m_TipShowTime = _showTime;
|
m_TipHideTime = _hideTime;
|
m_TipDistance = _dis;
|
}
|
|
public void Play(ScrollTip.ScrollTipState state)
|
{
|
m_Time = 0;
|
canvasGroup.alpha = 1;
|
pos = transform.localPosition;
|
presentState = state;
|
}
|
|
private void LateUpdate()
|
{
|
m_Time += Time.deltaTime;
|
switch (presentState) {
|
case ScrollTip.ScrollTipState.Idle: {
|
m_Time = Mathf.Min(m_Time, m_TipShowTime);
|
if (m_Time >= m_TipShowTime) {
|
m_Time = 0;
|
var index = ScrollTip.m_ActiveTips.IndexOf(this);
|
if (index == 0) {
|
presentState = ScrollTip.ScrollTipState.Hide;
|
}
|
else {
|
presentState = ScrollTip.ScrollTipState.None;
|
}
|
}
|
}
|
break;
|
case ScrollTip.ScrollTipState.Move: {
|
m_Time = Mathf.Min(m_Time, ScrollTip.tipMoveTime);
|
transform.localPosition = Vector3.Lerp(pos, pos.SetY(pos.y + m_TipDistance), m_Time / ScrollTip.tipMoveTime);
|
if (m_Time >= ScrollTip.tipMoveTime) {
|
m_Time = 0;
|
presentState = ScrollTip.ScrollTipState.Idle;
|
ScrollTip.OnTipComplete();
|
}
|
}
|
break;
|
case ScrollTip.ScrollTipState.Hide: {
|
m_Time = Mathf.Min(m_Time, m_TipHideTime);
|
canvasGroup.alpha = 1 - m_Time / m_TipHideTime;
|
if (m_Time >= m_TipHideTime) {
|
m_Time = 0;
|
presentState = ScrollTip.ScrollTipState.None;
|
ScrollTip.Release(this);
|
ScrollTip.OnTipComplete();
|
}
|
}
|
break;
|
}
|
}
|
}
|
}
|