//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, September 07, 2017 //-------------------------------------------------------- using Snxxz.UI; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Snxxz.UI { public class DepotWin : TempKnapSackBasic { #region 成员变量 [SerializeField] private Button _depotSortBtn; [SerializeField] private Button _bagSortBtn; [SerializeField] private Image _bagSortImage; [SerializeField] private Image _depotSortImage; [SerializeField] private Text _timeDepotDown; [SerializeField] private Text _timeBagDown; [SerializeField] private ScrollerController _gridlineCtrl; #endregion private SinglePack packModel; ItemTipsModel _itemTipsModel; ItemTipsModel itemTipsModel { get { return _itemTipsModel ?? (_itemTipsModel = ModelCenter.Instance.GetModel()); } } PackModel _playerPack; PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { _gridlineCtrl.OnRefreshCell += OnRefreshGridCell; _gridlineCtrl.vertical = true; _gridlineCtrl.lockType = EnhanceLockType.KeepVertical; } protected override void AddListeners() { _depotSortBtn.onClick.RemoveAllListeners(); _depotSortBtn.onClick.AddListener(() => { OnClickDepotSortBtn(); }); _bagSortBtn.onClick.RemoveAllListeners(); _bagSortBtn.onClick.AddListener(() => { OnClickSortBtn(); }); } protected override void OnPreOpen() { playerPack.gridRefreshEvent += OnPackCanUseGrid; playerPack.refreshItemCountEvent += OnAddItemCell; playerPack.refrechPackEvent += RefreshPackModel; packModel = playerPack.GetSinglePack(PackType.Warehouse); OnCreateGridLineCell(_gridlineCtrl); TimeDownMgr.CoolTimeData bagData; if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.BagSort, out bagData)) { bagData.func = RefreshBagSortTime; _bagSortImage.SetSprite("BlackBtn"); _timeBagDown.text = Language.Get("BagWin_SortCDbtn_Text_1", Mathf.CeilToInt(bagData.duration - bagData.time)); _bagSortBtn.enabled = false; } else { _bagSortImage.SetSprite("SecondBtn1"); _timeBagDown.text = Language.Get("BagWin_Sortbtn_Text_2"); _bagSortBtn.enabled = true; } TimeDownMgr.CoolTimeData depotData; if (TimeDownMgr.Instance.Get(TimeDownMgr.CoolTimeType.DepotSort, out depotData)) { depotData.func = RefreshDepotSortTime; _depotSortImage.SetSprite("BlackBtn"); _timeDepotDown.text = Language.Get("BagWin_SortCDbtn_Text_1", Mathf.CeilToInt(depotData.duration - depotData.time)); _depotSortBtn.enabled = false; } else { _depotSortImage.SetSprite("SecondBtn1"); _timeDepotDown.text = Language.Get("BagWin_Sortbtn_Text_3"); _depotSortBtn.enabled = true; } } protected override void OnAfterOpen() { _gridlineCtrl.JumpIndex(0); } protected override void OnPreClose() { playerPack.refrechPackEvent -= RefreshPackModel; playerPack.refreshItemCountEvent -= OnAddItemCell; playerPack.gridRefreshEvent -= OnPackCanUseGrid; } protected override void OnAfterClose() { } #endregion private void RefreshPackModel(PackType type) { if (type != PackType.Warehouse) return; _gridlineCtrl.JumpIndex(0); OnCreateGridLineCell(_gridlineCtrl); } #region 共用部分 public override void OnCreateGridLineCell(ScrollerController gridCtrl) { base.OnCreateGridLineCell(gridCtrl); } public void OnRefreshGridCell(ScrollerDataType type, CellView cell) { int gridlineIndex = cell.index; int childCode = 0; if (packModel == null) { for (childCode = 0; childCode < cell.transform.childCount; childCode++) { GridCell gridCell = cell.transform.GetChild(childCode).GetComponent(); if (gridCell == null) gridCell = cell.transform.GetChild(childCode).gameObject.AddComponent(); gridCell.gridLock.SetActive(true); gridCell.itemCell.gameObject.SetActive(false); } return; } for (childCode = 0; childCode < cell.transform.childCount; childCode++) { GridCell gridCell = cell.transform.GetChild(childCode).GetComponent(); if (gridCell == null) gridCell = cell.transform.GetChild(childCode).gameObject.AddComponent(); int cellCount = (cell.transform.childCount) * gridlineIndex + (childCode + 1); gridCell.itemCell.gameObject.SetActive(false); if (cellCount > packModel.unlockedGridCount) gridCell.gridLock.SetActive(true); else gridCell.gridLock.SetActive(false); ItemModel itemModel = packModel.GetItemByIndex(cellCount - 1); if (itemModel != null) { gridCell.itemCell.gameObject.SetActive(true); //pdr ToDo gridCell.itemCell.Init(itemModel, true); gridCell.itemCellBtn.onceClick = null; gridCell.itemCellBtn.doubleClick = null; gridCell.itemCellBtn.onceClick = (int info) => { itemTipsModel.SetItemTipsModel(PackType.Warehouse, itemModel.guid, false, true); itemTipsModel.ShowUICtrl(); }; gridCell.itemCellBtn.doubleClick = () => { ItemOperateUtility.Instance.TakeOutFromWarehouse(itemModel.guid); }; } gridCell.lockBtn.onClick.RemoveAllListeners(); gridCell.lockBtn.onClick.AddListener(() => { int selectGridIndex = cell.index * 5 + int.Parse(gridCell.gameObject.name.Substring(gridCell.gameObject.name.Length - 1, 1)); OnClickLockBtn(selectGridIndex, packModel); }); } } public override void OnPackCanUseGrid(PackType type) { if (type != PackType.Warehouse) return; OnCreateGridLineCell(_gridlineCtrl); } public override void OnAddItemCell(PackType type, int index, int id) { if (type != PackType.Warehouse) return; OnCreateGridLineCell(_gridlineCtrl); } public void OnClickSortBtn() { ItemLogicUtility.Instance.ResetPack(PackType.Item); TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.BagSort, 5.0f, RefreshBagSortTime); _timeBagDown.text = Language.Get("BagWin_SortCDbtn_Text_1", 5); _bagSortImage.SetSprite("BlackBtn"); _bagSortBtn.enabled = false; } public void OnClickDepotSortBtn() { ItemLogicUtility.Instance.ResetPack(PackType.Warehouse); TimeDownMgr.Instance.Begin(TimeDownMgr.CoolTimeType.DepotSort, 5.0f, RefreshDepotSortTime); _timeDepotDown.text = Language.Get("BagWin_SortCDbtn_Text_1", 5); _depotSortImage.SetSprite("BlackBtn"); _depotSortBtn.enabled = false; } private void RefreshBagSortTime(float time) { if (time <= 0) { _bagSortImage.SetSprite("SecondBtn1"); _timeBagDown.text = Language.Get("BagWin_Sortbtn_Text_2"); _bagSortBtn.enabled = true; } else { _bagSortBtn.enabled = false; _timeBagDown.text = Language.Get("BagWin_SortCDbtn_Text_1", time); } } private void RefreshDepotSortTime(float time) { if (time <= 0) { _depotSortImage.SetSprite("SecondBtn1"); _timeDepotDown.text = Language.Get("BagWin_Sortbtn_Text_3"); _depotSortBtn.enabled = true; } else { _timeDepotDown.text = Language.Get("BagWin_SortCDbtn_Text_1", time); _depotSortBtn.enabled = false; } } #endregion } }