NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/LevelFight/UIDefeatGameController.cs

184 lines
4.1 KiB
C#

using System.Collections.Generic;
using cfg;
using Cysharp.Threading.Tasks;
using Framework;
using Gameplay;
using Gameplay.Level;
using System.Linq;
using Gameplay.Common;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using Button = UnityEngine.UI.Button;
using Image = UnityEngine.UI.Image;
public class UIDefeatGameController : UIWindow{
//UI GameObj
///Auto Gen Start///
public Image Image_FailedBG;
public Image Image_Tip;
public TMP_Text Text_Failed;
public TMP_Text Text_FightTime;
public Image Image_Clock;
public TMP_Text Text_Time;
public Image Image_PhysicalPower;
public TMP_Text Text_PPNum;
public TMP_Text Text_PhysicalPowerBack;
public TMP_Text Text_FailedDescribe0;
public TMP_Text Text_FailedDescribe1;
public TMP_Text Text_FailedDescribe2;
public Image Image_AccountLogo;
public Button Button_Continue;
public TMP_Text Text_Continue;
///Auto Gen End///
private List<TMP_Text> _txtTips;
public static async UniTask<UIWindow> Open()
{
await CommonUtils.CaptureScreenshot();
return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UIDefeatGame);
}
/// <summary>
/// 高斯模糊背景遮罩
/// </summary>
private RawImage rawImageGaussianBlurMask;
// Use this for initialization
public override void OnInit()
{
//bind UI GameObj
UIDefeatGameBinder.GetComponents(this);
rawImageGaussianBlurMask = GetComponent<RawImage>("GaussianBlurMask");
rawImageGaussianBlurMask.texture = CommonUtils.GetScreenTexture2D();
_txtTips = new()
{
Text_FailedDescribe0,
Text_FailedDescribe1,
Text_FailedDescribe2
};
BindButton(Button_Continue, () =>
{
LevelManager.Instance.ExitLevelDirectly();
});
}
//invoke when open window
protected override void OnShowWindow(object data = null)
{
_Refresh();
}
protected override void OnHideWindow()
{
AudioManager.Instance.AudioMgrObj.StopAllSounds();
base.OnHideWindow();
}
#region RefreshWindow
private void _Refresh()
{
_RefreshTime();
_RefreshPhysical();
_RefreshTips();
Team team = TeamEditManager.Instance.GetSelectTeam();
uint[] ids = team.GetCharacterIDs();
if (ids.Count() > 0)
DialogueManager.Instance.PlayDiaogue((int)ids[0], cfg.DialogueCfg.E_DialogueType.LevelFailure);
}
private void _RefreshTime()
{
var minutes = TeamManager.Instance.GetFightPastMinute();
var seconds = TeamManager.Instance.GetFightPastSecond();
var timeStr = "";
if (minutes < 10)
{
timeStr += minutes;
}
else
{
timeStr += "0";
timeStr += minutes;
}
timeStr += ":";
if (minutes < 10)
{
timeStr += seconds;
}
else
{
timeStr += "0";
timeStr += seconds;
}
Text_Time.text = timeStr;
}
private void _RefreshPhysical()
{
var levelID = LevelManager.Instance.CurrentLevel.ID;
var levelCfg = TableManager.Instance.Tables.Level.GetOrDefault(levelID);
int count;
if (levelCfg != null)
{
var costPhysicals = levelCfg.CostItems;
var item = costPhysicals.Find(item => item.Id == GLConfig.Inst.data.EnergyPointID);
count = item.Count;
Text_PPNum.text = "x" + count;
}
}
private void _RefreshTips()
{
var maxCount = GLConfig.Inst.data.BattleFailedTipsNumber;
var startNum = 1;
// var arrTips = new int[] { 0, 0, 0 };
// for (int i = 0; i < arrTips.Length; i++)
// {
// var ranNum = RecurseRandom(arrTips, startNum, maxCount + 1);
// arrTips[i] = ranNum;
// }
//
// for (int i = 0; i < arrTips.Length; i++)
// {
// var strTip = ("battle_failed_tips_" + arrTips[i]);
// if (_txtTips[i])
// {
// _txtTips[i].text = CommonUtils.GetLocalizeText(strTip);
// }
// }
var randNum = Random.Range(startNum, maxCount + 1);
var strTip = ("battle_failed_tips_" + randNum);
Text_FailedDescribe0.text = CommonUtils.GetLocalizeText(strTip);
}
//递归拿到不重复的随机数
private int RecurseRandom(int[] a, int start, int end)
{
var ranNum = Random.Range(start, end);
if (a.Contains(ranNum))
{
return RecurseRandom(a, start, end);
; }
return ranNum;
}
#endregion
}