using Cysharp.Threading.Tasks; using Gameplay; using PhxhSDK; using System; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; public class UI_TeamMarkChooseController : UIWindow { //UI GameObj ///Auto Gen Start/// public Image Image_Bg; public Button Button_Close; public RecycleView ScrollView_TeamMark; public Image Image_TeamMark; public Image Image_Empty; public Image Image_CurrentSelection; public Image Image_SelectedSign; public Image Image_Lock; public Image Image_CurrTeamMark; public Image Image_CurrEmpty; public Button Button_Confirm; public Button Button_CantConfirm; public TMP_Text Text_TeamMarkName; public TMP_Text Text_Description; public TMP_Text Text_Nothing; public TMP_Text Text_Title; private RawImage GaussianBlurMask; ///Auto Gen End/// List teamMarks = new List(); private int curIndex; private int chooseIndex; Action OnSuccessChosen; class ChooseData { public int teamMarkID; /// /// 选中标记后的回调 /// public Action OnChooseMark; public ChooseData(int teamMarkID, Action OnChooseMark) { this.teamMarkID = teamMarkID; this.OnChooseMark = OnChooseMark; } } /// /// 带回调的打开方法 /// /// 原先选中的队标ID /// 回调将传入选中队标ID作为参数,如: 510001 /// public static async UniTask Open(int teamMarkID, Action OnChooseMark = null) { CommonUtils.CaptureScreenshot(); var data = new ChooseData(teamMarkID, OnChooseMark); return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UITeamMarkChoose, data); } // deal with input data public override void PreLoad(object data = null) { var chooseData = data as ChooseData; TeamMarkManager.Instance.SelectedMarkIndex = chooseData.teamMarkID; DebugUtil.Log("选择的队标ID:" + chooseData.teamMarkID); teamMarks = TeamMarkManager.Instance.ShownList; DebugUtil.Log("队标数目:" + teamMarks.Count); OnSuccessChosen = chooseData.OnChooseMark;//回调 curIndex = 0; for (int i = 0; i < teamMarks.Count; i++) { if (teamMarks[i].ID == chooseData.teamMarkID) { curIndex = i; break; } } chooseIndex = curIndex; #region 预加载图标 foreach(var item in teamMarks) { var IconPath = item.iconKey; AssetManager.Instance.PostPreload(IconPath).Forget(); } #endregion } // Use this for initialization public override void OnInit() { //bind UI GameObj UI_TeamMarkChooseBinder.GetComponents(this); GaussianBlurMask = GetComponent("GaussianBlurMask"); GaussianBlurMask.texture = CommonUtils.GetScreenTexture2D(); ScrollView_TeamMark = GetComponent("Image_Bg/ScrollView_TeamMark"); BindButton(Button_Close, OnCloseClick); BindButton(Button_Confirm, OnConfirmClick); ScrollView_TeamMark.Init(_RefreshPoolItem);//SetItemCountFunc(() => list.Count); ScrollView_TeamMark.ShowList(teamMarks.Count);//UpdateData(); RefreshIconInfo(); } //invoke when open window protected override void OnShowWindow(object data = null) { } //invoke when reload window protected override void OnReloadWindow(object data = null) { } //invoke when close window protected override void OnHideWindow() { } public override UniTask OnBack(object data = null) { if (teamMarks[curIndex].ID != TeamMarkManager.Instance.SelectedMarkIndex) { OnSuccessChosen?.Invoke(teamMarks[curIndex].ID); DebugUtil.Log("选择的队标ID:" + teamMarks[curIndex].ID); } CloseWindow(); return base.OnBack(data); } //invoke when destroy public override void OnRelease() { base.OnRelease(); #region 预加载释放 foreach (var item in teamMarks) { var IconPath = item.iconKey; AssetManager.Instance.Unload(IconPath); } #endregion } #region scroll_view private void _RefreshPoolItem(GameObject go, int index) { var iconData = teamMarks[index]; var TeamMarkIcon = CommonUtils.GetComponent(go, "Image_TeamMark"); var btn = CommonUtils.GetComponent