using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
///
/// 招募心愿
///
public class HeroCallHopeWin : UIBase
{
[SerializeField] HeroCallHopeAddCell shHero;
[SerializeField] HeroCallHopeAddCell csHero;
[SerializeField] Text tip;
[SerializeField] ScrollerController scroller;
[SerializeField] GroupButtonEx shBtn;
[SerializeField] GroupButtonEx csBtn;
[SerializeField] Button cancleBtn;
[SerializeField] Button confirmBtn;
[SerializeField] Toggle autoToggle1;
[SerializeField] Text itemCntText1;
[SerializeField] Image itemIcon1;
[SerializeField] Toggle autoToggle2;
[SerializeField] Text itemCntText2;
[SerializeField] Image itemIcon2;
protected override void InitComponent()
{
cancleBtn.AddListener(CloseWindow);
confirmBtn.AddListener(SendSelectHero);
shBtn.AddListener(()=>
{
HappyXBModel.Instance.selectWishListTab = 0;
Display();
});
csBtn.AddListener(()=>
{
HappyXBModel.Instance.selectWishListTab = 1;
Display();
});
}
protected override void OnPreOpen()
{
HappyXBModel.Instance.selectWishListTab = functionOrder;
HappyXBModel.Instance.RefreshXBTypeInfoAct += RefreshXBTypeInfo;
HappyXBModel.Instance.OnSelectWishHeroEvent += OnSelectWishHeroEvent;
InvestModel.Instance.onInvestUpdate += OnInvestUpdate;
scroller.OnRefreshCell += OnRefreshCell;
HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 5, out HappyXBModel.Instance.selectSHHeroWishID, out int shWishCnt, out bool shAuto);
HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 4, out HappyXBModel.Instance.selectCSHeroWishID, out int csWishCnt, out bool cqAuto);
Display();
}
protected override void OnPreClose()
{
HappyXBModel.Instance.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;
scroller.OnRefreshCell -= OnRefreshCell;
HappyXBModel.Instance.OnSelectWishHeroEvent -= OnSelectWishHeroEvent;
InvestModel.Instance.onInvestUpdate -= OnInvestUpdate;
}
void OnInvestUpdate(int type)
{
Display();
}
void Display()
{
bool isInvest = InvestModel.Instance.IsInvested(InvestModel.monthCardType);
if (isInvest)
{
tip.text = Language.Get("HeroCall17");
}
else
{
tip.text = Language.Get("HeroCall7", HappyXBModel.wishMaxOutCnt) + Language.Get("HeroCall18");
}
int shHeroID = 0;
if (HappyXBModel.Instance.selectSHHeroWishID == -1)
{
shHeroID = -1;
}
else if (HappyXBModel.Instance.selectSHHeroWishID == 0)
{
shHeroID = 0;
}
else
{
shHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectSHHeroWishID).ItemID;
}
int csHeroID = 0;
if (HappyXBModel.Instance.selectCSHeroWishID == -1)
{
csHeroID = -1;
}
else if (HappyXBModel.Instance.selectCSHeroWishID == 0)
{
csHeroID = 0;
}
else
{
csHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectCSHeroWishID).ItemID;
}
shHero.Display(5, AddHero, ShowHeroTip, shHeroID);
csHero.Display(4, AddHero, ShowHeroTip, csHeroID);
CreateScroller();
if (HappyXBModel.Instance.selectWishListTab == 0)
{
shBtn.SelectBtn();
}
else
{
csBtn.SelectBtn();
}
ShowToggle();
}
void ShowToggle()
{
var shData = HappyXBModel.Instance.GetWishDataByQuality(5);
int itemID = HappyXBModel.Instance.GetWishCardItemID(5);
autoToggle1.isOn = shData.auto;
itemIcon1.SetItemSprite(itemID);
itemCntText1.text = UIHelper.ShowUseItem(PackType.Item, itemID, 1);
var csData = HappyXBModel.Instance.GetWishDataByQuality(4);
itemID = HappyXBModel.Instance.GetWishCardItemID(4);
autoToggle2.isOn = csData.auto;
itemIcon2.SetItemSprite(itemID);
itemCntText2.text = UIHelper.ShowUseItem(PackType.Item, itemID, 1);
}
void CreateScroller()
{
int libID = HappyXBModel.Instance.selectToLibIDDict[HappyXBModel.Instance.selectWishListTab];
if (!TreasureSetConfig.Get((int)HappXBTitle.HeroCallAdvanced).WishLibSelect.ContainsKey(libID))
{
Debug.LogError("寻宝库ID变更,程序请核对qualityLibIDDict");
return;
}
scroller.Refresh();
var list = TreasureItemLibConfig.GetWishIDList(libID);
for (int i = 0; i < list.Count; i++)
{
if (i % 5 == 0)
{
scroller.AddCell(ScrollerDataType.Header, i);
}
}
scroller.Restart();
}
void AddHero(int quality)
{
SysNotifyMgr.Instance.ShowTip("HeroWishAdd");
HappyXBModel.Instance.selectWishListTab = quality == 4 ? 1 : 0;
Display();
}
void ShowHeroTip(int quality)
{
ItemTipUtility.Show(quality == 4 ? TreasureItemLibConfig.Get(HappyXBModel.Instance.selectCSHeroWishID).ItemID :
TreasureItemLibConfig.Get(HappyXBModel.Instance.selectSHHeroWishID).ItemID);
}
void RefreshXBTypeInfo()
{
HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 5, out HappyXBModel.Instance.selectSHHeroWishID, out int shWishCnt, out bool shAuto);
HappyXBModel.Instance.TryGetHeroWishIDByQuality((int)HappXBTitle.HeroCallAdvanced, 4, out HappyXBModel.Instance.selectCSHeroWishID, out int csWishCnt, out bool cqAuto);
Display();
}
void OnSelectWishHeroEvent()
{
int shHeroID = 0;
if (HappyXBModel.Instance.selectSHHeroWishID == -1)
{
shHeroID = -1;
}
else if (HappyXBModel.Instance.selectSHHeroWishID == 0)
{
shHeroID = 0;
}
else
{
shHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectSHHeroWishID).ItemID;
}
int csHeroID = 0;
if (HappyXBModel.Instance.selectCSHeroWishID == -1)
{
csHeroID = -1;
}
else if (HappyXBModel.Instance.selectCSHeroWishID == 0)
{
csHeroID = 0;
}
else
{
csHeroID = TreasureItemLibConfig.Get(HappyXBModel.Instance.selectCSHeroWishID).ItemID;
}
shHero.Display(5, AddHero, ShowHeroTip, shHeroID);
csHero.Display(4, AddHero, ShowHeroTip, csHeroID);
scroller.m_Scorller.RefreshActiveCellViews();
}
void SendSelectHero()
{
if (HappyXBModel.Instance.selectSHHeroWishID == 0 && HappyXBModel.Instance.selectCSHeroWishID == 0)
{
SysNotifyMgr.Instance.ShowTip("HeroWishAdd");
return;
}
var pack = new CA569_tagCSTreasureWishSelect();
pack.TreasureType = (int)HappXBTitle.HeroCallAdvanced;
pack.WishIDList = new uint[] { (uint)Math.Max(0, HappyXBModel.Instance.selectSHHeroWishID), (uint)Math.Max(0, HappyXBModel.Instance.selectCSHeroWishID) };
pack.WishCnt = 2;
pack.WishCardUseLibIDList = new ushort[] {
(ushort)(autoToggle1.isOn ? HappyXBModel.Instance.qualityToLibIDDict[5] : 0),
(ushort)(autoToggle2.isOn ? HappyXBModel.Instance.qualityToLibIDDict[4] : 0)
};
pack.WishCardUseCnt = (byte)pack.WishCardUseLibIDList.Length;
GameNetSystem.Instance.SendInfo(pack);
CloseWindow();
}
void OnRefreshCell(ScrollerDataType type, CellView cell)
{
var _cell = cell.GetComponent();
_cell.Display(HappyXBModel.Instance.selectToLibIDDict[HappyXBModel.Instance.selectWishListTab], cell.index);
}
}