//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, June 11, 2019
|
//--------------------------------------------------------
|
|
using vnxbqy.UI;
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
|
public class GodKingGiftWin : ILWindow
|
{
|
|
Button closeBtn;
|
Button giftBtn0;
|
Button giftBtn1;
|
Button giftBtn2;
|
Button giftBtn3;
|
List<Text> selectTxts = new List<Text>();//已选个数
|
List<Image> selectImgs = new List<Image>();
|
ScrollerController preSelectsScroller; //预选择奖励
|
Text canSelectCnt; //还可选择个数
|
Transform noSelectTip;
|
ScrollerController selectedScroller; //已选择的物品
|
Text selectInfo;
|
Button checkSelect;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
closeBtn = proxy.GetWidgtEx<Button>("Img_Close");
|
giftBtn0 = proxy.GetWidgtEx<Button>("giftBtn0");
|
giftBtn1 = proxy.GetWidgtEx<Button>("giftBtn1");
|
giftBtn2 = proxy.GetWidgtEx<Button>("giftBtn2");
|
giftBtn3 = proxy.GetWidgtEx<Button>("giftBtn3");
|
|
for (int i = 0; i < 4; i++)
|
{
|
selectImgs.Add(proxy.GetWidgtEx<Image>("selectImg" + i));
|
selectTxts.Add(proxy.GetWidgtEx<Text>("selectTxt" + i));
|
}
|
preSelectsScroller = proxy.GetWidgtEx<ScrollerController>("preSelectsScroller");
|
canSelectCnt = proxy.GetWidgtEx<Text>("canSelectCnt");
|
noSelectTip = proxy.GetWidgtEx<Transform>("noSelectTip");
|
selectedScroller = proxy.GetWidgtEx<ScrollerController>("selectedScroller");
|
selectInfo = proxy.GetWidgtEx<Text>("selectInfo");
|
checkSelect = proxy.GetWidgtEx<Button>("checkSelect");
|
}
|
|
protected override void AddListeners()
|
{
|
closeBtn.SetListener(()=> {
|
WindowCenter.Instance.CloseIL<GodKingGiftWin>();
|
});
|
giftBtn0.SetListener(()=> {
|
GodKingGiftModel.Instance.selectType = 0;
|
});
|
giftBtn1.SetListener(() => {
|
GodKingGiftModel.Instance.selectType = 1;
|
});
|
giftBtn2.SetListener(() => {
|
GodKingGiftModel.Instance.selectType = 2;
|
});
|
giftBtn3.SetListener(() => {
|
GodKingGiftModel.Instance.selectType = 3;
|
});
|
checkSelect.SetListener(ChooseItems);
|
}
|
|
protected override void OnPreOpen()
|
{
|
closeBtn.SetActiveIL(true);
|
GodKingGiftModel.Instance.SelectLimitedCnt = GodKingGiftModel.Instance.GetMaxSelectCnt();
|
GodKingGiftModel.Instance.selectType = 0;
|
GodKingGiftModel.Instance.RefreshItemsByType();
|
GodKingGiftModel.Instance.OnSelectUpdate += OnSelectUpdate;
|
preSelectsScroller.OnRefreshCell += OnRefreshCell;
|
GodKingGiftModel.Instance.OnSelectItemEvent += OnSelectItemEvent;
|
selectedScroller.OnRefreshCell += OnRefreshSelectedCell;
|
ILOperationTimeHepler.Instance.operationTimeUpdateEvent += operationTimeUpdateEvent;
|
|
ShowSelectedCnt();
|
noSelectTip.SetActiveIL(GodKingGiftModel.Instance.selectedItems.Count == 0);
|
selectInfo.text = Language.Get(GodKingGiftModel.Instance.selectedItems.Count < GodKingGiftModel.Instance.SelectLimitedCnt ? "tdlb4" : "tdlb8");
|
}
|
|
|
protected override void OnPreClose()
|
{
|
GodKingGiftModel.Instance.OnSelectUpdate -= OnSelectUpdate;
|
preSelectsScroller.OnRefreshCell -= OnRefreshCell;
|
GodKingGiftModel.Instance.OnSelectItemEvent -= OnSelectItemEvent;
|
selectedScroller.OnRefreshCell -= OnRefreshSelectedCell;
|
ILOperationTimeHepler.Instance.operationTimeUpdateEvent -= operationTimeUpdateEvent;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
OnSelectUpdate();
|
OnSelectItemEvent();
|
}
|
#endregion
|
|
|
void OnSelectItemEvent()
|
{
|
noSelectTip.SetActiveIL(GodKingGiftModel.Instance.selectedItems.Count == 0);
|
selectInfo.text = Language.Get(GodKingGiftModel.Instance.selectedItems.Count < GodKingGiftModel.Instance.SelectLimitedCnt ? "tdlb4" : "tdlb8");
|
ShowCanSelectCnt();
|
OnCreateSelectedScroller();
|
var cnt = GodKingGiftModel.Instance.SelectdCountByLib(GodKingGiftModel.Instance.selectType + 1);
|
var maxCnt = GodKingGiftModel.Instance.GetLibSelectCnt(GodKingGiftModel.Instance.selectType + 1);
|
selectTxts[GodKingGiftModel.Instance.selectType].text = Language.Get("L1502") + cnt + "/" + maxCnt;
|
checkSelect.SetColorful(null, GodKingGiftModel.Instance.selectedItems.Count == GodKingGiftModel.Instance.SelectLimitedCnt);
|
checkSelect.interactable = GodKingGiftModel.Instance.selectedItems.Count == GodKingGiftModel.Instance.SelectLimitedCnt;
|
}
|
|
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<GodKingSelectItemsCell>();
|
_cell?.Display(cell.index);
|
}
|
|
|
void OnSelectImages()
|
{
|
for (int i = 0; i < 4; i++)
|
{
|
selectImgs[i].SetActiveIL(GodKingGiftModel.Instance.selectType == i);
|
}
|
}
|
|
void OnSelectUpdate()
|
{
|
GodKingGiftModel.Instance.RefreshItemsByType();
|
OnSelectImages();
|
OnCreatePreSelectsScroller();
|
ShowCanSelectCnt();
|
|
}
|
|
void OnCreatePreSelectsScroller()
|
{
|
preSelectsScroller.Refresh();
|
for (int i = 0; i < GodKingGiftModel.Instance.itemsLib.Length; i++)
|
{
|
if (i % 3 == 0)
|
{
|
preSelectsScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
preSelectsScroller.Restart();
|
preSelectsScroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void ShowSelectedCnt()
|
{
|
for (int i = 0; i < 4; i++)
|
{
|
var cnt = GodKingGiftModel.Instance.SelectdCountByLib(i + 1);
|
var maxCnt = i + 1;
|
selectTxts[i].text = Language.Get("L1502") + cnt + "/" + maxCnt;
|
}
|
}
|
|
//还可选几个
|
void ShowCanSelectCnt()
|
{
|
var cnt = GodKingGiftModel.Instance.SelectdCountByLib(GodKingGiftModel.Instance.selectType + 1);
|
var maxCnt = GodKingGiftModel.Instance.GetLibSelectCnt(GodKingGiftModel.Instance.selectType + 1);
|
canSelectCnt.text = Language.Get("tdlb2", maxCnt - cnt);
|
}
|
|
|
void OnCreateSelectedScroller()
|
{
|
selectedScroller.Refresh();
|
int count = 0;
|
//倒序
|
for (int i = GodKingGiftModel.Instance.selectedItems.Count - 1; i >= 0; i--)
|
{
|
if (count % 3 == 0)
|
{
|
selectedScroller.AddCell(ScrollerDataType.Header, i);
|
}
|
count++;
|
}
|
selectedScroller.Restart();
|
selectedScroller.m_Scorller.RefreshActiveCellViews();
|
}
|
|
void OnRefreshSelectedCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetILBehaviour<GodKingSelectedCell>();
|
_cell?.Display(cell.index);
|
}
|
|
void ChooseItems()
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("tdlb9"), (bool isOk) =>
|
{
|
if (isOk)
|
{
|
Dictionary<int, List<byte>> tmpDict = new Dictionary<int, List<byte>>();
|
for (int i = 0; i < GodKingGiftModel.Instance.selectedItems.Count; i++)
|
{
|
var itemInfo = GodKingGiftModel.Instance.selectedItems[i];
|
if (!tmpDict.ContainsKey(itemInfo.libType))
|
{
|
tmpDict[itemInfo.libType] = new List<byte>();
|
}
|
|
tmpDict[itemInfo.libType].Add(itemInfo.itemNum);
|
}
|
|
List<IL_CAA20_tagCMActGodGiftChooseItem.tagCMActGodGiftChooseItemInfo> tmpList = new List<IL_CAA20_tagCMActGodGiftChooseItem.tagCMActGodGiftChooseItemInfo>();
|
var keyList = tmpDict.Keys.ToList();
|
for (int i = 0; i < keyList.Count; i++)
|
{
|
tmpList.Add(new IL_CAA20_tagCMActGodGiftChooseItem.tagCMActGodGiftChooseItemInfo()
|
{
|
ItemLibType = (byte)keyList[i],
|
Count = (byte)tmpDict[keyList[i]].Count,
|
ItemNumList = tmpDict[keyList[i]].ToArray()
|
});
|
}
|
|
var pack = new IL_CAA20_tagCMActGodGiftChooseItem();
|
pack.ActNum = 10;
|
pack.ChooseLibCount = (byte)tmpList.Count;
|
pack.ChooseItemList = tmpList.ToArray();
|
GameNetSystem.Instance.SendInfo(pack);
|
|
closeBtn.SetActiveIL(false);
|
}
|
});
|
|
}
|
|
private void operationTimeUpdateEvent(Operation type)
|
{
|
if (type == GodKingGiftModel.operationType)
|
{
|
//避免意外界面不能关闭
|
closeBtn.SetActiveIL(true);
|
}
|
}
|
}
|