184 lines
4.1 KiB
C#
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
|
|
|
|
}
|