using BX;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
/// 
/// 复活界面
/// 
public class ResurgenceUI : UIBaseClass
{
    /// 
    /// 分数
    /// 
    public TextMeshProUGUI scoreTetx;
    /// 
    /// 关卡进度
    /// 
    public TextMeshProUGUI schedule;
    /// 
    /// 复活倒计时
    /// 
    public TextMeshProUGUI countdownResurrectionText;
    /// 
    /// 关卡进度条
    /// 
    public Image scheduleBar;
    /// 
    /// 复活倒计时
    /// 
    public Image countdownResurrection;
    /// 
    /// 复活
    /// 
    public Button resurgenceBtn;
    /// 
    /// 忽略
    /// 
    public Button loseBtn;
    /// 
    /// 倒计时
    /// 
    private Tween countdownTween;
    private void Start()
    {
        ResurgenceBtnListener();
        LoseBtnListenet();
    }
    public override void OnShow()
    {
        base.OnShow();
        BXSdk.Instance.LogEvent("RV_Button_Show", new System.Collections.Generic.Dictionary()
         {
            {"Position","RV_Revive"}
         });
        SetScheduleBar();
        SetCountdownResurrection();
        SetScore();
        resurgenceBtn.interactable = true;
        loseBtn.interactable = true;
    }
    public override void OnHide()
    {
        base.OnHide();
        countdownTween.Kill();
    }
    /// 
    /// 设置关卡进度
    /// 
    private void SetScheduleBar()
    {
        float value = 0;
        DOTween.To(() => value, x => value = x, Scenes.Instance.gameScene.GetSchedule(), 1f).OnUpdate(() =>
        {
            scheduleBar.fillAmount = value;
            schedule.text =(value* 100).ToString("0") + "%";
        });
    }
    /// 
    /// 设置分数
    /// 
    private void SetScore()
    {
        float value = 0;
        DOTween.To(() => value, x => value = x, Scenes.Instance.gameScene.GetScore(), 1f).OnUpdate(() =>
        {
            scoreTetx.text = value.ToString("0");
        });
    }
    /// 
    /// 设置复活倒计时
    /// 
    private void SetCountdownResurrection()
    {
        float value = 10;
        countdownTween=DOTween.To(() => value, x => value = x, 0, 10).OnUpdate(() =>
        {
            countdownResurrection.fillAmount = value/10;
            countdownResurrectionText.text =Mathf.RoundToInt(value).ToString();
        }).OnComplete(() => 
        {
            HideMe();
            UIManager.Instance.AsynShowUI();
        }).SetEase(Ease.Linear);
    }
    /// 
    /// 复活按钮
    /// 
    private void ResurgenceBtnListener()
    {
        resurgenceBtn.onClick.AddListener(() =>
        {
            var rewardReady = BXSdk.Instance.IsReadyReward();
            if(rewardReady)
            {
                resurgenceBtn.interactable = false;
                loseBtn.interactable = false;
            }
            SDKManager.Instance.ShowReward("RV_Revive", () =>
            {
                Scenes.Instance.gameScene.Resurgence();
            });
        });
    }
    /// 
    /// 忽略按钮
    /// 
    private void LoseBtnListenet()
    {
        loseBtn.onClick.AddListener(() =>
        {
            HideMe();
            UIManager.Instance.AsynShowUI();
        });
    }
}