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