using DG.Tweening;
using I2.Loc;
using QFramework;
using Sirenix.OdinInspector;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
///
/// 底部按钮
///
public class DownBGButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
public string m_BtnName;
private RectTransform m_RectTransform;
private Button m_Btn;
private Text m_BtnText;
private Image m_BtnIcon;
private Image m_PromptIcon;
private Image m_HighlighterArea;
private Image m_SelectLine;
public Button Button
{
get
{
if (m_Btn == null)
{
m_Btn = GetComponent();
}
return m_Btn;
}
}
[LabelText("常态Icon")]
public Sprite m_NormalIcon;
[LabelText("划入Icon")]
public Sprite m_HoverIcon;
[LabelText("选中Icon")]
public Sprite m_SelectIcon;
[LabelText("常态颜色")]
public Color m_NormalColor;
[LabelText("划入颜色")]
public Color m_HoverColor;
[LabelText("选中字体颜色")]
public Color m_SelectColor;
[LabelText("常态字体")]
public Font m_NormalFont;
[LabelText("划入字体")]
public Font m_HoverFont;
[LabelText("选中字体")]
public Font m_SelectFont;
//是否是状态切换类按钮 true:状态切换 false :点击类
public bool isToggle = false;
private bool isSelect = false;
public bool IsSelect
{
get
{
return isToggle && isSelect;
}
}
private bool isPrompting = false;
private bool isHover = false;
public void Awake()
{
Load();
}
private void Load()
{
m_RectTransform = GetComponent();
m_Btn = GetComponent();
m_BtnIcon = this.transform.Find("Icon").GetComponent();
m_BtnText = m_BtnIcon.transform.Find("Text").GetComponent();
m_HighlighterArea = this.transform.Find("SelectArea").GetComponent();
m_SelectLine = this.transform.Find("Line").GetComponent();
m_PromptIcon = this.transform.Find("PromptIcon").GetComponent();
m_HighlighterArea.gameObject.SetActive(false);
m_SelectLine.gameObject.SetActive(false);
}
public void RefrushButonSize()
{
m_RectTransform.SetWidth(20 + m_BtnIcon.rectTransform.sizeDelta.x + 8 + m_BtnText.preferredWidth + 20);
m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
}
#if UNITY_EDITOR
[Button("刷新按钮")]
public void RefrushButtonSizeEditor()
{
Load();
m_BtnText.text = m_BtnName;
RefrushButonSize();
SetBtnState(BtnState.normal);
}
#endif
public void SetBtnState(BtnState state)
{
isHover = false;
switch (state)
{
case BtnState.normal:
m_BtnIcon.sprite = m_NormalIcon;
m_BtnText.font = m_NormalFont;
m_BtnText.color = m_NormalColor;
m_HighlighterArea.gameObject.SetActive(false);
m_SelectLine.gameObject.SetActive(false);
if (isToggle)
{
isSelect = false;
}
break;
case BtnState.highter:
m_BtnIcon.sprite = m_HoverIcon;
m_BtnText.font = m_HoverFont;
m_BtnText.color = m_HoverColor;
m_HighlighterArea.gameObject.SetActive(true);
m_SelectLine.gameObject.SetActive(true);
isHover = true;
break;
case BtnState.select:
m_BtnIcon.sprite = m_SelectIcon;
m_BtnText.font = m_SelectFont;
m_BtnText.color = m_SelectColor;
m_HighlighterArea.gameObject.SetActive(false);
m_SelectLine.gameObject.SetActive(true);
if (isToggle)
{
isSelect = true;
}
break;
}
}
public void OnPointerEnter(PointerEventData eventData)
{
HoverClosePrompt();
SetBtnState(BtnState.highter);
}
public void OnPointerExit(PointerEventData eventData)
{
if (IsSelect)
{
SetBtnState(BtnState.select);
}
else
{
SetBtnState(BtnState.normal);
}
HoverOpenPrompt();
}
void OnEnable()
{
LocalizationManager.OnLocalizeEvent += LocalizationManager_OnLocalizeEvent;
LocalizationManager_OnLocalizeEvent();
}
void OnDisEnable()
{
LocalizationManager.OnLocalizeEvent -= LocalizationManager_OnLocalizeEvent;
}
private void LocalizationManager_OnLocalizeEvent()
{
RefrushButonSize();
if(isPrompting)
{
m_PromptIcon.rectTransform.DOKill();
m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
m_PromptIcon.rectTransform.DOSizeDelta(new Vector2(m_RectTransform.sizeDelta.x - 34, m_BtnText.rectTransform.sizeDelta.y + 2), 1).SetLoops(-1, LoopType.Yoyo);
}
}
///
/// 开启按钮提示
///
public void OpenPrompt()
{
if (isPrompting) return;
m_PromptIcon.gameObject.SetActive(true);
m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
m_PromptIcon.rectTransform.DOSizeDelta(new Vector2(m_RectTransform.sizeDelta.x - 34, m_BtnText.rectTransform.sizeDelta.y + 2), 1).SetLoops(-1, LoopType.Yoyo);
isPrompting=true;
}
///
/// 关闭按钮提示
///
public void ClosePrompt()
{
if (!isPrompting || !m_PromptIcon.gameObject.activeSelf) return;
isPrompting=false;
m_PromptIcon.rectTransform.DOKill();
m_PromptIcon.gameObject.SetActive(false);
m_PromptIcon.rectTransform.sizeDelta = m_RectTransform.sizeDelta;
}
public void HoverOpenPrompt()
{
if (isPrompting)
{
m_PromptIcon.rectTransform.DOPlay();
m_PromptIcon.gameObject.SetActive(true);
}
}
public void HoverClosePrompt()
{
if (isPrompting)
{
m_PromptIcon.rectTransform.DOPause();
m_PromptIcon.gameObject.SetActive(false);
}
}
//public void ShowToolLibraryHighter(bool highter, bool recordHighter = true)
//{
// if (isLibraryEnter) return;
// if (highter && !toolLibraryPromptIcon.gameObject.activeSelf)
// {
// toolLibraryPromptIcon.gameObject.SetActive(true);
// toolLibraryPromptIcon.rectTransform.DOSizeDelta(new Vector2(87, 31), 1).SetLoops(-1, LoopType.Yoyo);
// }
// else if (!highter && toolLibraryPromptIcon.gameObject.activeSelf)
// {
// toolLibraryPromptIcon.gameObject.SetActive(false);
// toolLibraryPromptIcon.rectTransform.sizeDelta = new Vector2(112, 40);
// toolLibraryPromptIcon.rectTransform.DOKill();
// }
// if (recordHighter)
// {
// m_IsHighter = highter;
// }
//}
}