//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, June 11, 2019
|
//--------------------------------------------------------
|
|
using UnityEngine.UI;
|
using System.Collections.Generic;
|
using vnxbqy.UI;
|
using UnityEngine;
|
using System.Linq;
|
|
public class TreasurePavilionWin : ILWindow
|
{
|
Button m_Close;
|
ScrollerController scroller;
|
Text fightPower;
|
List<ButtonEx> gubaoTypeList = new List<ButtonEx>();
|
List<ButtonEx> gubaoTypeFakeList = new List<ButtonEx>(); //为了实现遮挡效果做的假按钮,实际点击gubaoTypeList
|
List<Image> gubaoBtnSelectImageList = new List<Image>(); //为了实现遮挡效果做的假按钮
|
List<Text> gubaoBtnTextList = new List<Text>(); //为了实现遮挡效果做的假按钮
|
Canvas mask1;
|
Canvas mask2;
|
//古宝共鸣 标签控制
|
ButtonEx btnTagAll; //二级标签:全部
|
ButtonEx btnTagReverberation; //二级标签:共鸣
|
ButtonEx btnTagUpgradeStar; //二级标签:可升星
|
ButtonEx btnTagAllFake; //为了实现遮挡效果做的假按钮,实际点击btnTagAll
|
ButtonEx btnTagReverberationFake; //为了实现遮挡效果做的假按钮,实际点击btnTagReverberation
|
ButtonEx btnTagUpgradeStarFake; //为了实现遮挡效果做的假按钮,实际点击btnTagUpgradeStar
|
ImageEx imgTagAllChoose;
|
ImageEx imgTagReverberationChoose;
|
ImageEx imgTagUpgradeStarChoose;
|
Transform FightInfo;
|
//古宝共鸣 内容界面
|
TreasureReverberationBehavior treasureReverberation;
|
//古宝抽奖 标签控制
|
ButtonEx btnFakeLuckyDraw; //为了实现遮挡效果做的假按钮,实际点击btnLuckyDraw
|
ButtonEx btnLuckyDraw;
|
Transform TreasureFakeTags;
|
Transform TreasureTags;
|
//古宝抽奖 内容界面
|
TreasureLuckyDrawBehavior treasureLuckyDraw;
|
|
XBFuncSet funcSet;
|
int type;
|
HappyXBModel XBModel { get { return ModelCenter.Instance.GetModel<HappyXBModel>(); } }
|
RoleParticularModel model { get { return ModelCenter.Instance.GetModelEx<RoleParticularModel>(); } }
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
#region Built-in
|
protected override void BindController()
|
{
|
m_Close = proxy.GetWidgtEx<Button>("Button_Close");
|
scroller = proxy.GetWidgtEx<ScrollerController>("scroller");
|
fightPower = proxy.GetWidgtEx<Text>("Txt_FightPower");
|
for (int i = 0; i < 4; i++)
|
{
|
gubaoTypeList.Add(proxy.GetWidgtEx<ButtonEx>("gubaoType" + i));
|
gubaoTypeFakeList.Add(proxy.GetWidgtEx<ButtonEx>("gubaoTypeFake" + i));
|
gubaoBtnSelectImageList.Add(proxy.GetWidgtEx<Image>("SelectImage" + i));
|
gubaoBtnTextList.Add(proxy.GetWidgtEx<Text>("btnText" + i));
|
}
|
btnTagAll = proxy.GetWidgtEx<ButtonEx>("btnTagAll");
|
btnTagReverberation = proxy.GetWidgtEx<ButtonEx>("btnTagReverberation");
|
btnTagUpgradeStar = proxy.GetWidgtEx<ButtonEx>("btnTagUpgradeStar");
|
btnTagAllFake = proxy.GetWidgtEx<ButtonEx>("btnTagAllFake");
|
btnTagReverberationFake = proxy.GetWidgtEx<ButtonEx>("btnTagReverberationFake");
|
btnTagUpgradeStarFake = proxy.GetWidgtEx<ButtonEx>("btnTagUpgradeStarFake");
|
|
mask1 = proxy.GetWidgtEx<Canvas>("mask1");
|
mask2 = proxy.GetWidgtEx<Canvas>("mask2");
|
imgTagAllChoose = proxy.GetWidgtEx<ImageEx>("imgTagAllChoose");
|
imgTagReverberationChoose = proxy.GetWidgtEx<ImageEx>("imgTagReverberationChoose");
|
imgTagUpgradeStarChoose = proxy.GetWidgtEx<ImageEx>("imgTagUpgradeStarChoose");
|
mask1.sortingLayerName = "UI"; //使图片在特效上层
|
mask2.sortingLayerName = "UI"; //使图片在特效上层
|
FightInfo = proxy.GetWidgtEx<Transform>("FightInfo");
|
TreasureFakeTags = proxy.GetWidgtEx<Transform>("TreasureFakeTags");
|
TreasureTags = proxy.GetWidgtEx<Transform>("TreasureTags");
|
|
btnFakeLuckyDraw = proxy.GetWidgtEx<ButtonEx>("btnFakeLuckyDraw");
|
btnLuckyDraw = proxy.GetWidgtEx<ButtonEx>("btnLuckyDraw");
|
|
|
treasureReverberation = proxy.GetWidgtEx<TreasureReverberationBehavior>("treasureReverberation");
|
treasureLuckyDraw = proxy.GetWidgtEx<TreasureLuckyDrawBehavior>("treasureLuckyDraw");
|
}
|
|
protected override void AddListeners()
|
{
|
m_Close.SetListener(() =>
|
{
|
CloseWin<TreasurePavilionWin>();
|
});
|
for (int i = 0; i < gubaoTypeList.Count; i++)
|
{
|
int index = i;
|
gubaoTypeList[i].SetListener(() =>
|
{
|
TreasurePavilionModel.Instance.selectIndex = index;
|
TreasurePavilionModel.Instance.isShowLuckyDraw = false;
|
DisPlaySecondaryLabel();
|
});
|
}
|
btnTagAll.SetListener(() =>
|
{
|
TreasurePavilionModel.Instance.selectTagIndex = 0;
|
TreasurePavilionModel.Instance.isShowLuckyDraw = false;
|
});
|
btnTagReverberation.SetListener(() =>
|
{
|
TreasurePavilionModel.Instance.selectTagIndex = 1;
|
TreasurePavilionModel.Instance.selectResonanceID = 0;
|
TreasurePavilionModel.Instance.isShowLuckyDraw = false;
|
});
|
btnTagUpgradeStar.SetListener(() =>
|
{
|
TreasurePavilionModel.Instance.selectTagIndex = 2;
|
TreasurePavilionModel.Instance.isShowLuckyDraw = false;
|
});
|
btnLuckyDraw.SetListener(() =>
|
{
|
if (!TreasurePavilionModel.Instance.isShowLuckyDraw)
|
{
|
TreasurePavilionModel.Instance.isEffectPlaying = false;
|
}
|
TreasurePavilionModel.Instance.isShowLuckyDraw = true;
|
XBModel.title = HappXBTitle.Gubao1;
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
ItemLogicUtility.Instance.hidePickItem = true;
|
TreasurePavilionModel.Instance.isWinOpen = true;
|
model.PowerUpdate += PowerUpdate;
|
scroller.OnRefreshCell += OnRefreshCell;
|
TreasurePavilionModel.Instance.UpdateGubaoEvent += UpdateGubaoEvent;
|
TreasurePavilionModel.Instance.OnSelectUpdate += SelectUpdate;
|
TreasurePavilionModel.Instance.isEffectPlaying = false;
|
DisplayLuckyDrawEntrance();
|
DisplayFristLabel();
|
DisPlaySecondaryLabel();
|
InitHappXBTitle();
|
}
|
|
void InitHappXBTitle()
|
{
|
if (TreasurePavilionModel.Instance.xbIndex == 0)
|
{
|
XBModel.title = HappXBTitle.Gubao1;
|
}
|
else if (TreasurePavilionModel.Instance.xbIndex == 1)
|
{
|
XBModel.title = HappXBTitle.Gubao2;
|
}
|
else if (TreasurePavilionModel.Instance.xbIndex == 2)
|
{
|
XBModel.title = HappXBTitle.Gubao3;
|
}
|
else if (TreasurePavilionModel.Instance.xbIndex == 3)
|
{
|
XBModel.title = HappXBTitle.Gubao4;
|
}
|
}
|
|
void DisplayGubao()
|
{
|
List<int> tmpList = new List<int>();
|
if (TreasurePavilionModel.Instance.selectTagIndex == 2)
|
{
|
TreasurePavilionModel.Instance.TryGetUpgradeStarList(out tmpList);
|
}
|
else if (TreasurePavilionModel.Instance.selectTagIndex == 0)
|
{
|
tmpList = TreasurePavilionModel.Instance.GetGubaoList();
|
}
|
scroller.Refresh();
|
for (int i = 0; i < tmpList.Count; i++)
|
{
|
if (i % 5 == 0)
|
{
|
CellInfo cellInfo = new CellInfo();
|
cellInfo.infoInt1 = TreasurePavilionModel.Instance.selectTagIndex;
|
scroller.AddCell(ScrollerDataType.Header, i, cellInfo);
|
}
|
}
|
scroller.Restart();
|
}
|
|
//显示一级标签内容
|
void DisplayFristLabel()
|
{
|
TreasurePavilionModel.Instance.SortGubaoList();
|
ShowGubaoTypeBtn();
|
}
|
|
//显示二级标签内容
|
void DisPlaySecondaryLabel()
|
{
|
bool isTypeNoReverberation = TreasurePavilionModel.Instance.IsTypeNoReverberation(); //当前类型的古宝一个共鸣套装也没有
|
bool isShowLuckyDraw = TreasurePavilionModel.Instance.isShowLuckyDraw; //正在显示古宝抽奖内容
|
bool isHaveUpgradeStar = TreasurePavilionModel.Instance.TryGetUpgradeStarList(out var upgradeStarList); //当前类型的古宝一个可升星的也没有
|
btnTagReverberationFake.SetActive(!isTypeNoReverberation && !isShowLuckyDraw);
|
btnTagReverberation.SetActive(!isTypeNoReverberation && !isShowLuckyDraw);
|
btnTagAll.SetActive(!isShowLuckyDraw);
|
btnTagAllFake.SetActive(!isShowLuckyDraw);
|
btnTagUpgradeStar.SetActive(isHaveUpgradeStar && !isShowLuckyDraw);
|
btnTagUpgradeStarFake.SetActive(isHaveUpgradeStar && !isShowLuckyDraw);
|
FightInfo.SetActive(!isShowLuckyDraw); //显示古宝共鸣时隐藏战力
|
PowerUpdate();
|
imgTagAllChoose.SetActive(TreasurePavilionModel.Instance.selectTagIndex == 0);
|
imgTagReverberationChoose.SetActive(TreasurePavilionModel.Instance.selectTagIndex == 1);
|
imgTagUpgradeStarChoose.SetActive(TreasurePavilionModel.Instance.selectTagIndex == 2);
|
if (TreasurePavilionModel.Instance.selectTagIndex == 2)
|
{
|
TreasurePavilionModel.Instance.selectTagIndex = !isHaveUpgradeStar ? 0 : TreasurePavilionModel.Instance.selectTagIndex;
|
}
|
else if (TreasurePavilionModel.Instance.selectTagIndex == 1)
|
{
|
TreasurePavilionModel.Instance.selectTagIndex = isTypeNoReverberation ? 0 : TreasurePavilionModel.Instance.selectTagIndex;
|
}
|
|
}
|
|
//显示抽奖入口
|
void DisplayLuckyDrawEntrance()
|
{
|
bool isShowLuckyDraw = TreasurePavilionModel.Instance.isShowLuckyDraw;
|
var luckyDrawFuncIDDict = TreasurePavilionModel.Instance.luckyDrawFuncIDDict;
|
var keyList = luckyDrawFuncIDDict.Keys.ToList();
|
int funcID = luckyDrawFuncIDDict[keyList[0]];
|
btnFakeLuckyDraw.SetActive(FuncOpen.Instance.IsFuncOpen(funcID));
|
btnLuckyDraw.SetActive(FuncOpen.Instance.IsFuncOpen(funcID));
|
TreasureFakeTags.SetActive(isShowLuckyDraw); //显示共鸣相关二级标签
|
TreasureTags.SetActive(isShowLuckyDraw);
|
}
|
|
//显示内容
|
void Display()
|
{
|
int treasureID = TreasurePavilionModel.Instance.xbIDArr[TreasurePavilionModel.Instance.xbIndex];
|
int selectTagIndex = TreasurePavilionModel.Instance.selectTagIndex;
|
bool isShowLuckyDraw = TreasurePavilionModel.Instance.isShowLuckyDraw;
|
type = XBGetItemConfig.Get(treasureID).TreasureType;
|
//寻宝界面
|
if (isShowLuckyDraw)
|
{
|
scroller.SetActive(false);
|
treasureReverberation.Close();
|
treasureLuckyDraw.Open();
|
treasureLuckyDraw.Display(type);
|
}
|
else
|
{
|
treasureLuckyDraw.Close();
|
//所有古宝
|
if (selectTagIndex == 0)
|
{
|
treasureReverberation.Close();
|
scroller.SetActive(true);
|
DisplayGubao();
|
}
|
//古宝共鸣
|
else if (selectTagIndex == 1)
|
{
|
scroller.SetActive(false);
|
treasureReverberation.Open();
|
treasureReverberation.Display();
|
}
|
//可升星古宝
|
else if (selectTagIndex == 2)
|
{
|
treasureReverberation.Close();
|
scroller.SetActive(true);
|
DisplayGubao();
|
}
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
ItemLogicUtility.Instance.hidePickItem = false;
|
TreasurePavilionModel.Instance.isWinOpen = false;
|
model.PowerUpdate -= PowerUpdate;
|
scroller.OnRefreshCell -= OnRefreshCell;
|
TreasurePavilionModel.Instance.OnSelectUpdate -= SelectUpdate;
|
TreasurePavilionModel.Instance.UpdateGubaoEvent -= UpdateGubaoEvent;
|
}
|
|
#endregion
|
|
|
void ShowGubaoTypeBtn()
|
{
|
for (int i = 0; i < gubaoTypeList.Count; i++)
|
{
|
if (i < TreasurePavilionModel.Instance.gubaoTypeList.Count)
|
{
|
gubaoTypeList[i].SetActiveIL(true);
|
gubaoTypeFakeList[i].SetActiveIL(true);
|
gubaoBtnSelectImageList[i].SetActiveIL(TreasurePavilionModel.Instance.selectIndex == i && !TreasurePavilionModel.Instance.isShowLuckyDraw);
|
gubaoBtnTextList[i].GetComponent<TextEx>().text = Language.Get("gubaoType" + TreasurePavilionModel.Instance.gubaoTypeList[i]);
|
}
|
else
|
{
|
gubaoTypeList[i].SetActiveIL(false);
|
gubaoTypeFakeList[i].SetActiveIL(false);
|
}
|
}
|
}
|
|
void PowerUpdate()
|
{
|
fightPower.text = UIHelper.ReplaceLargeArtNum(model.GetFuncFightPower(29));
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<TreasurePavilionObjsCell>();
|
_cell?.Display(cell.index, cell);
|
}
|
|
void UpdateGubaoEvent()
|
{
|
DisplayLuckyDrawEntrance();
|
DisplayFristLabel();
|
DisPlaySecondaryLabel();
|
Display();
|
}
|
|
void SelectUpdate()
|
{
|
DisplayLuckyDrawEntrance();
|
DisplayFristLabel();
|
DisPlaySecondaryLabel();
|
Display();
|
}
|
}
|