using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using UnityEngine.UIElements; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; using Toggle = UnityEngine.UI.Toggle; using ScrollView = PhxhSDK.PhxhScrollView; using Constants = Framework.Constants; using Framework; using PhxhSDK; using Gameplay; using System; using Gameplay.Net; using cfg.ActorCfg; using cfg.SkillCfg; using cfg.PlayerSkillCfg; using Cysharp.Threading.Tasks; public class SelectSkillPanelController : UIWindow { //UI GameObj ///Auto Gen Start/// public Image Image_Cover; public Image Image_BG; public Image Image_LeftBG; public Image Image_RightBG; public TMP_Text Text_SkillTitle; public TMP_Text Text_SkillCollingTime; public TMP_Text Text_Describe; public Button Button_Close; public TMP_Text Text_CMDSkill; public Button Button_ConductTitle; public Button Button_AttackTitle; public Button Button_SupportTitle; public Button Button_Cancel; public TMP_Text Text_Cancel; public Button Button_Confirm; public TMP_Text Text_Confirm; ///Auto Gen End/// /// /// 动态列表 /// private RecycleView recycleView; /// /// 滑动列表 /// private ScrollRect scrollRect; /// /// 高斯模糊遮罩 /// private RawImage rawImageGaussianBlurMask; private Team CurTeam; private int CurIndex; // deal with input data public override void PreLoad(object data = null) { var initData = data as InitData; selectSkillAction = initData.SelectSkill; CurTeam = initData.Team; CurIndex = initData.Index; } class InitData { public Team Team; public int Index; public Action SelectSkill; public InitData(Team team, int index, Action selectSkill) { Team = team; Index = index; SelectSkill = selectSkill; } } public static async UniTask Open(Team team, int index, Action selectSkill = null) { CommonUtils.CaptureScreenshot(); var initData = new InitData(team, index, selectSkill); return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_SelectSkillPanel, initData); } // Use this for initialization public override void OnInit() { //bind UI GameObj SelectSkillPanelBinder.GetComponents(this); recycleView = GetComponent("Image_BG/ScrollView"); scrollRect = recycleView.transform.GetComponent(); rawImageGaussianBlurMask = GetComponent("GaussianBlurMask"); rawImageGaussianBlurMask.texture = CommonUtils.GetScreenTexture2D(); BindButton(Button_Cancel, OnClose); BindButton(Button_Confirm, OnConfirm); BindButton(Button_Close, OnClose); listTab.Add(new TabItem(FindObj("Image_BG/Button_ConductTitle"), PlayerSkillType.Conduct, OnSelectTab)); listTab.Add(new TabItem(FindObj("Image_BG/Button_AttackTitle"), PlayerSkillType.Attack, OnSelectTab)); listTab.Add(new TabItem(FindObj("Image_BG/Button_SupportTitle"), PlayerSkillType.Support, OnSelectTab)); #region 获取已经解锁的指挥官技能养成数据 foreach (int skillId in Actor.Instance.PlayerSkill.GetSkillIds()) { int skillLevel = Actor.Instance.PlayerSkill.GetLevel(skillId); DataPlayerSkillUpgrade skillUpgradeData = TableManager.Instance.Tables.PlayerSkillUpgrade.Get(skillId, skillLevel); if (null == skillUpgradeData) continue; if (dicSkillUpgradeData.TryGetValue(skillUpgradeData.SkillType, out List listSkillData)) listSkillData.Add(skillUpgradeData); else dicSkillUpgradeData[skillUpgradeData.SkillType] = new List() { skillUpgradeData }; } #endregion recycleView.Init(RefreshItem); SetInfo(CurTeam, CurIndex); } //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() { } //invoke when destroy public override void OnRelease() { base.OnRelease(); } /// /// 页签 /// private class TabItem : UIGameObjectWrapper { #region UI /// /// 选中状态 /// private GameObject goSelect; /// /// 页签文本 /// private TMP_Text text; /// /// 页签按钮 /// private Button buttonSelect; #endregion /// /// 选中的字体颜色 /// private readonly Color SELECT_FONT_COLOR = Color.black; /// /// 未选中的字体颜色 /// private readonly Color NORMAL_FONT_COLOR = Color.white; /// /// 玩家技能类型 /// private readonly PlayerSkillType playerSkillType; /// /// 选中回调 /// private readonly Action selectAction; /// /// 是否选中 /// public bool IsSelect { set { goSelect.IsScaleShow(value); if (value) text.color = SELECT_FONT_COLOR; else text.color = NORMAL_FONT_COLOR; } } /// /// 技能类型 /// public PlayerSkillType SkillType { get { return playerSkillType; } } public TabItem(GameObject root, PlayerSkillType playerSkillType, Action selectAction) : base(root, true) { this.playerSkillType = playerSkillType; this.selectAction = selectAction; goSelect = FindObj("ImageSelect"); text = GetComponent("Text"); buttonSelect = GoRoot.GetComponent