OvertakingLegend/Assets/UIFrameWork/Script/VictoryUI.cs

228 lines
7.7 KiB
C#

using BX;
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.SocialPlatforms.Impl;
using UnityEngine.UI;
/// <summary>
/// 胜利UI
/// </summary>
public class VictoryUI : UIBaseClass
{
/// <summary>
/// 惊险超车次数
/// </summary>
public TextMeshProUGUI dangerousOvertaking;
/// <summary>
/// 车祸数
/// </summary>
public TextMeshProUGUI carAccident;
/// <summary>
/// 分数
/// </summary>
public TextMeshProUGUI score;
/// <summary>
/// 奖励金币
/// </summary>
public TextMeshProUGUI awardMoney;
/// <summary>
/// 飞金币起点
/// </summary>
public Transform flyMoneyStartPoint;
/// <summary>
/// 飞金币终点
/// </summary>
public Transform flyMoneyEndPoint;
/// <summary>
/// 彩带左点
/// </summary>
public Transform colouredRibbonLeftPoint;
/// <summary>
/// 彩带右点
/// </summary>
public Transform colouredRibbonRightPoint;
/// <summary>
/// 双倍金币
/// </summary>
public Button moneyDoubleGold;
/// <summary>
/// 返回主页
/// </summary>
public Button backBtn;
private void Start()
{
BackBtnListener();
MoneyDoubleGoldListener();
}
public override void OnShow()
{
base.OnShow();
if(!UserDataManager.Instance.userData.guidance.isOverInitialEntry)
{
BXSdk.Instance.LogEvent("Guide", new System.Collections.Generic.Dictionary<string, object>()
{
{"Guide_Step","TutorialPass"}
});
}
BXSdk.Instance.LogEvent("RV_Button_Show", new System.Collections.Generic.Dictionary<string, object>()
{
{"Position","RV_DoubleCoin"}
});
BXSdk.Instance.LogEvent("Level_End", new Dictionary<string, object>()
{
{"Ad_Num",Scenes.Instance.gameScene.adNumber},
{"Skill_Choice",ConfigManager.Instance.Tables.TbSkillConfig.Get(UserDataManager.Instance.userData.skillId).SkillName},
{"Skill_Time",Scenes.Instance.gameScene.useSkillNumber},
{"Level_Time",Scenes.Instance.gameScene.levelTime},
{"End_Type","Success"},
});
BXSdk.Instance.LevelEnd(UserDataManager.Instance.userData.level.ToString(), BXSdk.StageResult.StageSucc);
SDKManager.Instance.ShowInterstitial("IV_Succ", BXSdk.IVADType.IV1);
Score();
AwardedMarksAnim();
UIManager.Instance.GetUI<TopmostLayerUI>().ColouredRibbon(colouredRibbonLeftPoint, colouredRibbonRightPoint);
}
/// <summary>
/// 返回主页
/// </summary>
private void BackBtnListener()
{
backBtn.onClick.AddListener(() =>
{
Scenes.Instance.gameScene.BackHall();
UserDataManager.Instance.AddMoney((int)Scenes.Instance.gameScene.GetScore());
UserDataManager.Instance.userData.guidance.SetIsOverInitialEntry();
UserDataManager.Instance.AddLevel();
});
}
/// <summary>
/// 金币双倍按钮监听
/// </summary>
private void MoneyDoubleGoldListener()
{
moneyDoubleGold.onClick.AddListener(() =>
{
var rewardReady = BXSdk.Instance.IsReadyReward();
if (rewardReady)
{
moneyDoubleGold.interactable = false;
backBtn.interactable = false;
}
SDKManager.Instance.ShowReward("RV_DoubleCoin", () =>
{
UIManager.Instance.GetUI<TopmostLayerUI>().FlyStuff(E_StuffType.Money, flyMoneyStartPoint, flyMoneyEndPoint, () =>
{
int number = (int)Scenes.Instance.gameScene.GetScore();
DOTween.To(() => number, x => number = x, (int)Scenes.Instance.gameScene.GetScore() * 2, 1).OnUpdate(() =>
{
awardMoney.text = "X" + number.ToString();
}).OnComplete(() =>
{
UserDataManager.Instance.AddMoney((int)Scenes.Instance.gameScene.GetScore() * 2);
UserDataManager.Instance.AddLevel();
UserDataManager.Instance.userData.guidance.SetIsOverInitialEntry();
DelayedProcessingManager.Instance.DelayDoSecond(this, 1, () =>
{
Scenes.Instance.gameScene.BackHall();
});
}).SetEase(Ease.Linear);
}, 100);
});
});
}
/// <summary>
/// 加分动效
/// </summary>
private void AwardedMarksAnim()
{
StartCoroutine(IE_AwardedMarksAnim());
}
/// <summary>
/// 加分动效协程
/// </summary>
private IEnumerator IE_AwardedMarksAnim()
{
int number=0;
dangerousOvertaking.text ="X"+ 0;
carAccident.text = "X" + 0;
score.text = "X" + 0;
awardMoney.text = "X" + 0;
moneyDoubleGold.gameObject.SetActive(false);
backBtn.gameObject.SetActive(false);
yield return new WaitForSeconds(0.5f);
DOTween.To(() => number, x => number = x, Scenes.Instance.gameScene.totaiJudgmentOvertakingNumbe, 1).OnUpdate(() =>
{
dangerousOvertaking.text = "X" + number.ToString();
}).SetEase(Ease.Linear);
number = 0;
yield return new WaitForSeconds(0.5f);
DOTween.To(() => number, x => number = x, Scenes.Instance.gameScene.GetCarAccidentNumber(), 1).OnUpdate(() =>
{
carAccident.text = "X" + number.ToString();
}).SetEase(Ease.Linear);
number = 0;
yield return new WaitForSeconds(0.5f);
DOTween.To(() => number, x => number = x, (int)Scenes.Instance.gameScene.GetScore(), 1).OnUpdate(() =>
{
score.text = "X" + number.ToString();
}).SetEase(Ease.Linear);
yield return new WaitForSeconds(1);
UIManager.Instance.GetUI<TopmostLayerUI>().FlyStuff(E_StuffType.Money, flyMoneyStartPoint, flyMoneyEndPoint, () =>
{
number = 0;
DOTween.To(() => number, x => number = x, (int)Scenes.Instance.gameScene.GetScore(), 1).OnUpdate(() =>
{
awardMoney.text = "X" + number.ToString();
}).SetEase(Ease.Linear);
},100);
yield return new WaitForSeconds(0.3f);
moneyDoubleGold.gameObject.SetActive(true);
moneyDoubleGold.transform.localScale = Vector3.zero;
moneyDoubleGold.transform.DOScale(Vector3.one, 0.2f);
AudioManager.Instance.PlaySound(YooAssetManager.Instance.LoadAssetSync<AudioClip>(PackagesName.GameData, "TapUI"));
yield return new WaitForSeconds(0.3f);
backBtn.gameObject.SetActive(true);
backBtn.transform.localScale = Vector3.zero;
backBtn.transform.DOScale(Vector3.one, 0.2f);
AudioManager.Instance.PlaySound(YooAssetManager.Instance.LoadAssetSync<AudioClip>(PackagesName.GameData, "TapUI"));
}
/// <summary>
/// 评分引导
/// </summary>
private void Score()
{
if (!UserDataManager.Instance.userData.guidance.isOverInitialEntry)
{
UIManager.Instance.AsynShowUI<ScoreUI>();
}
//int value = BXSdk.Instance.GetConfigInt("Rate_Open", 0);
//if (value == 1)
//{
// if (!UserDataManager.Instance.userData.guidance.isOverInitialEntry)
// {
// UIManager.Instance.AsynShowUI<ScoreUI>();
// }
//}
}
}