using System; using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using System.Linq; using System.Collections; namespace Snxxz.UI { public class XBWarehouseWin : Window { [SerializeField] ScrollerController itemlistCtrl; [SerializeField] ScrollerController getLogCtrl; [SerializeField] Button putOutBtn; [SerializeField] Button sortBtn; [SerializeField] Image sortImage; [SerializeField] Text sortBtnText; [SerializeField] int gridCount = 100; PackModel _playerPack; PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } HappyXBModel XBModel { get { return ModelCenter.Instance.GetModel(); } } int SingleLineCnt = 5; int logCreateCnt = 0; List itemGetTimeArray = new List(); protected override void BindController() { itemlistCtrl.OnRefreshCell += RefreshGridCell; getLogCtrl.OnRefreshCell += RefreshGetItemLog; } protected override void AddListeners() { sortBtn.AddListener(ClickSortBtn); putOutBtn.AddListener(ClickPutOutBtn); } protected override void OnPreOpen() { playerPack.refrechPackEvent += RefreshPack; CreateGridLine(); TimeDownMgr.CoolTimeData data; if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.HappyXBWarehouse, out data)) { data.func = RefreshTime; sortImage.SetSprite("BlackBtn"); sortBtnText.text = Language.Get("BagWin_SortCDbtn_Text_1", Mathf.CeilToInt(data.duration - data.time)); sortBtn.enabled = false; } else { sortImage.SetSprite("SecondBtn1"); sortBtnText.text = Language.Get("BagWin_Sortbtn_Text_3"); sortBtn.enabled = true; } RefreshXBResult(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { playerPack.refrechPackEvent -= RefreshPack; } protected override void OnAfterClose() { } private void RefreshPack(PackType type) { if (type != PackType.Treasure) return; itemlistCtrl.JumpIndex(0); itemlistCtrl.m_Scorller.RefreshActiveCellViews(); } private void RefreshXBResult() { if (PlayerPrefs.HasKey(HappyXBModel.HAPPYXBITEMKEY)) { itemGetTimeArray = LocalSave.GeStringArray(HappyXBModel.HAPPYXBITEMKEY).ToList(); } else { itemGetTimeArray.Clear(); } CreateGetItemLog(); XBModel.ClearXBRusltData(); } private void CreateGridLine() { int line = gridCount / SingleLineCnt; itemlistCtrl.Refresh(); for(int i = 0; i < line; i++) { itemlistCtrl.AddCell(ScrollerDataType.Header,i); } itemlistCtrl.Restart(); } private void RefreshGridCell(ScrollerDataType type, CellView cell) { int length = cell.transform.childCount; for(int i = 0; i < length;i++) { int cellCount = length * cell.index + (i + 1); XBGridCell xBGrid = cell.transform.GetChild(i).GetComponent(); ItemModel itemModel = playerPack.GetItemByIndex(PackType.Treasure, cellCount-1); if(itemModel != null) { xBGrid.SetModel(itemModel.guid,cellCount-1); } else { xBGrid.SetModel("",cellCount-1); } } } private void CreateGetItemLog() { getLogCtrl.Refresh(); for(int i = 0; i < itemGetTimeArray.Count;i++) { getLogCtrl.AddCell(ScrollerDataType.Header,i); } getLogCtrl.Restart(); } private void RefreshGetItemLog(ScrollerDataType type, CellView cell) { Text logText = cell.transform.Find("LogText").GetComponent(); Image greyImg = cell.transform.Find("Image").GetComponent(); logText.text = itemGetTimeArray[cell.index]; if(cell.index % 2 == 0) { greyImg.gameObject.SetActive(true); } else { greyImg.gameObject.SetActive(false); } } private void ClickSortBtn() { ItemLogicUtility.Instance.ResetPack(PackType.Treasure); TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.HappyXBWarehouse, 5.0f, RefreshTime); sortBtnText.text = Language.Get("BagWin_SortCDbtn_Text_1", 5); sortImage.SetSprite("BlackBtn"); sortBtn.enabled = false; } private void RefreshTime(float time) { if (time <= 0) { sortImage.SetSprite("SecondBtn1"); sortBtnText.text = Language.Get("BagWin_Sortbtn_Text_3"); sortBtn.enabled = true; } else { sortBtnText.text = Language.Get("BagWin_SortCDbtn_Text_1", time); sortBtn.enabled = false; } } private void ClickPutOutBtn() { SinglePack singlePack = playerPack.GetSinglePack(PackType.Treasure); if (singlePack == null) return; Dictionary pairs = singlePack.GetAllItems(); bool isHaveItem = false; bool isHaveRune = false; foreach(var value in pairs.Values) { if(value.config.Type == 30 || value.config.Type == 31) { isHaveRune = true; } else { isHaveItem = true; } if(isHaveRune && isHaveItem) { break; } } if((isHaveItem && XBModel.CheckIsEmptyGrid(PackType.Item)) || (isHaveRune && XBModel.CheckIsEmptyGrid(PackType.RunePack))) { XBModel.SendPutOutXBItem(PackType.Treasure, PackType.Item, 0, 1); } } } }