using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
using Cysharp.Threading.Tasks;
using System.Threading;
using System;
///
/// 武将布阵界面
///
public class HeroPosWin : UIBase
{
// [SerializeField] Text[] attrOnList; //上阵属性加成
[SerializeField] Button countryOnBtn;
[SerializeField] Image countryOnImg; //上阵阵型激活国家
[SerializeField] UIEffectPlayer countryEffect;
[SerializeField] List OnCountImgs; //上阵数量激活
[SerializeField] List scenePosImgs; //场景布阵位置
[SerializeField] HeroScenePosCell[] sceneHero;
[SerializeField] Text fightPowerText; //由客户端自己预算的战力
[SerializeField] ScrollerController heroListScroller;
[SerializeField] Transform heroListEmpty;
[SerializeField] Toggle showConnTipToggleBtn;
[SerializeField] Transform heroSelectBehaviour;
HeroSelectBehaviour fiterManager; //武将筛选
[SerializeField] Button oneKeyOnBtn; //一键上阵
[SerializeField] Button saveBtn; //保存阵型
[SerializeField] Button backBtn; //退出界面
[SerializeField] GroupButtonEx mainFBBtn; //主线副本
//羁绊
[SerializeField] HeroConnectionCell connetionForm;
[SerializeField] HeroHeadBaseCell flyHead;
[SerializeField] CanvasGroup flyAlphaTween;
[SerializeField] ButtonEx lineupRecommendBtn; //阵容推荐
[SerializeField] Transform caseesObj;
FuncPresetChooseCells presetChooseCells;
Sequence sequence;
CancellationTokenSource _cts;
Queue showConnectTipQueue = new Queue();
private bool m_IsToggleOn = false;
private bool isToggleOn
{
get { return m_IsToggleOn; }
set
{
if (m_IsToggleOn != value)
{
m_IsToggleOn = value;
LocalSave.SetBool("ShowConn" + PlayerDatas.Instance.baseData.PlayerID, value);
}
}
}
protected override void InitComponent()
{
showConnTipToggleBtn.AddListener((value) =>
{
isToggleOn = showConnTipToggleBtn.isOn;
if (isToggleOn == false)
{
CancelCurrentTask();
}
});
oneKeyOnBtn.AddListener(OneKeyOnPos);
saveBtn.AddListener(SaveTeam);
backBtn.AddListener(CloseWindow);
countryOnBtn.AddListener(() =>
{
HeroUIManager.Instance.isCustonHeroFormation = false;
UIManager.Instance.OpenWindow();
});
lineupRecommendBtn.AddListener(() =>
{
UIManager.Instance.OpenWindow();
});
m_IsToggleOn = LocalSave.GetBool("ShowConn" + PlayerDatas.Instance.baseData.PlayerID, false);
fiterManager = HeroSelectBehaviour.Create(heroSelectBehaviour);
var presetObj = UIUtility.CreateWidget("FuncPresetChooseCells", "FuncPresetChooseCells");
presetObj.transform.SetParentEx(caseesObj, Vector3.zero, Quaternion.identity, Vector3.one);
presetChooseCells = presetObj.GetComponent();
presetChooseCells.ChangeAlignment(TextAnchor.MiddleCenter);
}
protected override void OnPreOpen()
{
HeroUIManager.Instance.SortHeroOnTeamList();
heroListScroller.OnRefreshCell += OnRefreshCell;
HeroUIManager.Instance.OnTeamPosChangeEvent += TeamChangeEvent;
TeamManager.Instance.OnTeamChange += OnTeamChange;
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
FuncPresetManager.Instance.OnFuncPresetUseDataEvent += OnFuncPresetUseDataEvent;
SelectTiltleBtn();
Display();
DisplayLineupRecommend();
}
protected override void OnPreClose()
{
CancelCurrentTask();
heroListScroller.OnRefreshCell -= OnRefreshCell;
HeroUIManager.Instance.OnTeamPosChangeEvent -= TeamChangeEvent;
TeamManager.Instance.OnTeamChange -= OnTeamChange;
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
FuncPresetManager.Instance.OnFuncPresetUseDataEvent -= OnFuncPresetUseDataEvent;
TeamManager.Instance.GetTeam(HeroUIManager.Instance.selectTeamType).RestoreTeam();
}
private void OnFuncStateChangeEvent(int obj)
{
if (obj != (int)FuncOpenEnum.LineupRecommend)
return;
DisplayLineupRecommend();
}
private void DisplayLineupRecommend()
{
bool isOpen = FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.LineupRecommend);
lineupRecommendBtn.SetActive(isOpen);
}
void SelectTiltleBtn()
{
//方案变更 只有主战
mainFBBtn.SelectBtn();
}
void OnFuncPresetUseDataEvent(int type)
{
HeroUIManager.Instance.selectTeamType = TeamManager.Instance.GetMainTeamID();
Display();
}
public void Display()
{
RefreshOnTeamCountry();
RefreshOnTeamBtn();
RefreshTeamHero();
RefreshFlyHead();
RefreshConn();
RefreshEmptyTip();
showConnTipToggleBtn.isOn = isToggleOn;
fiterManager.Display(0, SelectJobCountry);
fightPowerText.text = UIHelper.ReplaceLargeArtNum(FightPowerManager.Instance.GetTeamFightPower(HeroUIManager.Instance.selectTeamType, true));
presetChooseCells.Display((int)BattlePreSetType.Story, (int)FuncPresetType.Team);
}
void RefreshFlyHead()
{
var flyCanvas = flyAlphaTween.GetComponent