using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
namespace DuckHunter
{
///
/// 游戏屏幕中心的提示
///
public class TextGameScreenCenter : MonoBehaviour
{
private Text _mainText;
private TextAutoLanguage2 _mainTextAutoLanguage2;
private Sequence _mainSequence;
public static TextGameScreenCenter Instance;
void Awake()
{
Instance = this;
_mainText = GetComponent();
_mainTextAutoLanguage2 = GetComponent();
}
void OnDestroy()
{
if (Instance == this) Instance = null;
}
public enum TextName
{
GAME_START,
GAME_START_HIDE,
GAME_START_FADEOUT,
ROUND_X,
SUPER_ARCHER,
GAME_OVER,
GAME_COMPLETED,
FLY_AWAY,
}
public void ShowText(TextName textName, object[] args = null, Action onComplete = null)
{
if (args == null) args = new object[] { };
_mainTextAutoLanguage2.textFormatArgs = args;
if (_mainSequence != null)
{
_mainSequence.Kill();
_mainSequence = null;
}
_mainText.alignment = TextAnchor.MiddleCenter;
if (textName == TextName.GAME_START)
{
_mainTextAutoLanguage2.SetTextKey("SC-GAME_START");
SetAlpha(_mainText, 1);
onComplete?.Invoke();
}
else if (textName == TextName.GAME_START_HIDE)
{
_mainTextAutoLanguage2.SetTextKey("SC-GAME_START");
SetAlpha(_mainText, 0);
onComplete?.Invoke();
}
else if (textName == TextName.GAME_START_FADEOUT)
{
_mainTextAutoLanguage2.SetTextKey("SC-GAME_START");
SetAlpha(_mainText, 1);
_mainSequence = DOTween.Sequence();
_mainSequence.Append(_mainText.DOFade(0, 0.5f));
_mainSequence.AppendCallback(() => onComplete?.Invoke());
}
else if (textName == TextName.ROUND_X)
{
_mainTextAutoLanguage2.SetTextKey("SC-ROUND_X");
SetAlpha(_mainText, 0);
_mainSequence = DOTween.Sequence();
_mainSequence.Append(_mainText.DOFade(1, 0.3f));
_mainSequence.AppendInterval(2.4f);
_mainSequence.Append(_mainText.DOFade(0, 0.3f));
_mainSequence.AppendCallback(() => onComplete?.Invoke());
}
else if (textName == TextName.SUPER_ARCHER)
{
_mainText.alignment = TextAnchor.MiddleLeft;
_mainTextAutoLanguage2.SetTextKey("SC-SUPER_ARCHER");
SetAlpha(_mainText, 1);
_mainSequence = DOTween.Sequence();
_mainSequence.AppendInterval(2.5f);
_mainSequence.Append(_mainText.DOFade(0, 0.5f));
_mainSequence.AppendCallback(() => onComplete?.Invoke());
}
else if (textName == TextName.GAME_OVER)
{
_mainTextAutoLanguage2.SetTextKey("SC-GAME_OVER");
SetAlpha(_mainText, 1);
_mainSequence = DOTween.Sequence();
_mainSequence.AppendInterval(3);
_mainSequence.AppendCallback(() => onComplete?.Invoke());
}
else if (textName == TextName.GAME_COMPLETED)
{
// _mainTextAutoLanguage2.SetTextKey("SC-GAME_COMPLETED");
_mainTextAutoLanguage2.SetTextKey(""); //游戏通关不显示文字
SetAlpha(_mainText, 1);
_mainSequence = DOTween.Sequence();
_mainSequence.AppendInterval(3);
_mainSequence.AppendCallback(() => onComplete?.Invoke());
}
else if (textName == TextName.FLY_AWAY)
{
_mainTextAutoLanguage2.SetTextKey("SC-FLY_AWAY");
SetAlpha(_mainText, 1);
_mainSequence = DOTween.Sequence();
_mainSequence.AppendInterval(2);
_mainSequence.Append(_mainText.DOFade(0, 0.5f));
_mainSequence.AppendCallback(() => onComplete?.Invoke());
}
}
private void SetAlpha(Text text, float value)
{
Color color = text.color;
color.a = value;
text.color = color;
}
}
}