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 _txtTips; public static async UniTask Open() { await CommonUtils.CaptureScreenshot(); return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UIDefeatGame); } /// /// 高斯模糊背景遮罩 /// private RawImage rawImageGaussianBlurMask; // Use this for initialization public override void OnInit() { //bind UI GameObj UIDefeatGameBinder.GetComponents(this); rawImageGaussianBlurMask = GetComponent("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 }