//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, September 18, 2017 //-------------------------------------------------------- using Snxxz.UI; using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class UnionStoreWin : StoreUIBasic { #region 成员变量 [SerializeField] private ScrollerController _shopCtrl; [SerializeField] private Text _moneyNumText; [SerializeField] private Toggle _toolToggle; [SerializeField] Button getPathBtn; [SerializeField] private Toggle _mountStoneToggle; [SerializeField] private Toggle _mountSkillBookToggle; [SerializeField] private Button _closeBtn; #endregion private int _unionLv; PackModelInterface _modelInterface; PackModelInterface modelInterface { get { return _modelInterface ?? (_modelInterface = ModelCenter.Instance.GetModel()); } } StoreModel _storeModel; StoreModel m_storeModel { get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel()); } } int shopId = 0; #region Built-in protected override void BindController() { _shopCtrl.OnRefreshCell += RefreshShopLineCell; _shopCtrl.lockType = EnhanceLockType.KeepVertical; } protected override void AddListeners() { _toolToggle.onValueChanged.AddListener((bool isOn)=> { OnClickToolToggle(isOn); }); _mountStoneToggle.onValueChanged.AddListener((bool isOn) => { OnClickMountStoneToggle(isOn); }); _mountSkillBookToggle.onValueChanged.AddListener((bool isOn) => { OnClickMountSkillBookToggle(isOn); }); _closeBtn.onClick.AddListener(CloseWin); getPathBtn.AddListener(ClickGetPathBtn); } protected override void OnPreOpen() { m_storeModel.storeFuncType = StoreFunc.ToolStore; m_storeModel.RefreshTCBPlayerDataEvent += OnRefreshPlayerInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += CreateCell; m_storeModel.RefreshBuyShopLimitEvent += CreateCell; CreateCell(); RefreshUI(); } protected override void OnAfterOpen() { switch (m_storeModel.storeFuncType) { case StoreFunc.ToolStore: _toolToggle.isOn = true; break; case StoreFunc.MountStoneStore: _mountStoneToggle.isOn = true; break; case StoreFunc.MountSkillBookStore: _mountSkillBookToggle.isOn = true; break; } _shopCtrl.JumpIndex(0); CheckJumpToModel(); } protected override void OnPreClose() { m_storeModel.RefreshBuyShopLimitEvent -= CreateCell; m_storeModel.RefreshTCBPlayerDataEvent -= OnRefreshPlayerInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= CreateCell; } protected override void OnAfterClose() { } #endregion private void CheckJumpToModel() { if (AchievementGoto.guideAchievementId != 0) { SuccessConfig successConfig = Config.Instance.Get(AchievementGoto.guideAchievementId); if (successConfig.Type == 97) { p_shopItemlist = StoreConfig.GetTypeStoreModel((int)m_storeModel.storeFuncType); List orderlist = new List(); orderlist.AddRange(p_shopItemlist); orderlist.Sort(CompareByMoney); for (int i = 0; i < p_shopItemlist.Count; i++) { if (p_shopItemlist[i].ID == orderlist[0].ID) { shopId = p_shopItemlist[i].ID; int index = i / 2; _shopCtrl.JumpIndex(index); _shopCtrl.m_Scorller.RefreshActiveCellViews(); break; } } AchievementGoto.guideAchievementId = 0; } } } public int CompareByMoney(StoreConfig start, StoreConfig end) { int money1 = start.MoneyNumber; int money2 = end.MoneyNumber; if (money1.CompareTo(money2) != 0) return money1.CompareTo(money2); int index1 = p_shopItemlist.IndexOf(start); int index2 = p_shopItemlist.IndexOf(end); if (index1.CompareTo(index2) != 0) return index1.CompareTo(index2); return 0; } private void RefreshUI() { _moneyNumText.text = modelInterface.OnChangeCoinsUnit(UIHelper.GetMoneyCnt(15)); } private void OnRefreshPlayerInfo(PlayerDataRefresh refreshType) { if (refreshType == PlayerDataRefresh.UnionLiven) RefreshUI(); } private void CreateCell() { shopId = 0; _unionLv = 0; if(PlayerDatas.Instance.fairyData.HasFairy) { _unionLv = PlayerDatas.Instance.fairyData.fairy.FamilyLV; } base.CreateShopItemCell(_shopCtrl,2); } private void RefreshShopLineCell(ScrollerDataType type, CellView cell) { int childCode = 0; for (childCode = 0; childCode < cell.transform.childCount; childCode++) { int cellCount = (cell.transform.childCount) * cell.index + (childCode + 1); UnionShopCell shopItemCell = cell.transform.GetChild(childCode).GetComponent(); if (shopItemCell == null) { shopItemCell = cell.transform.GetChild(childCode).gameObject.AddComponent(); } if (p_shopItemlist.Count >= cellCount) { StoreConfig shopInfo = p_shopItemlist[cellCount - 1]; cell.transform.GetChild(childCode).gameObject.SetActive(true); if (shopInfo.SalesStatus.Trim() != "") { shopItemCell.stateImage.gameObject.SetActive(true); shopItemCell.stateImage.SetSprite(shopInfo.SalesStatus); } else { shopItemCell.stateImage.gameObject.SetActive(false); } ItemConfig chinModel = Config.Instance.Get(m_storeModel.ReplaceItemIdByJob(shopInfo.ID, shopInfo.ItemID)); if (chinModel != null) { ItemCellModel cellModel = new ItemCellModel(chinModel.ID,false, 0, shopInfo.IsBind); shopItemCell.itemCell.Init(cellModel); shopItemCell.itemNameText.text = chinModel.ItemName; shopItemCell.itemNameText.color = UIHelper.GetUIColor(chinModel.ItemColor); shopItemCell.coinsIcon.SetIconWithMoneyType(shopInfo.MoneyType); ulong shopCost = (ulong)(shopInfo.MoneyNumber); shopItemCell.coinNumText.text = UIHelper.ReplaceLargeNum(shopCost); BuyItemPopModel buyItem = BuyItemPopModel.Instance; int curVipIndex = -1; int nextVipIndex = -1; bool isVipBuy = buyItem.CheckIsVipBuy(shopInfo, out curVipIndex, out nextVipIndex); int canBuyCnt = 0; int addBuyCnt = 0; bool isLimitBuy = buyItem.CheckIsLimitBuyCnt(shopInfo, out canBuyCnt, out addBuyCnt); bool isShowBuyPrice = true; shopItemCell.buyBtn.gameObject.SetActive(true); if (isVipBuy) { if (curVipIndex == -1 && nextVipIndex != -1) { shopItemCell.coinsIcon.gameObject.SetActive(false); shopItemCell.vipText.gameObject.SetActive(true); shopItemCell.vipText.text = Language.Get("StoreWin101", shopInfo.VIPLV[nextVipIndex]); shopItemCell.sellImage.gameObject.SetActive(false); isShowBuyPrice = false; } } if (isShowBuyPrice) { shopItemCell.coinsIcon.gameObject.SetActive(true); shopItemCell.vipText.gameObject.SetActive(false); shopItemCell.sellImage.gameObject.SetActive(false); shopItemCell.itemCell.countText.gameObject.SetActive(false); if (canBuyCnt > 0) { shopItemCell.itemCell.countText.gameObject.SetActive(true); BuyShopItemLimit shopItemLimit = m_storeModel.GetBuyShopLimit((uint)shopInfo.ID); int remainNum = canBuyCnt; if (shopItemLimit != null) { remainNum = canBuyCnt - shopItemLimit.BuyCnt; } if (remainNum > 0) { shopItemCell.itemCell.countText.text = StringUtility.Contact(remainNum.ToString(), "/" + canBuyCnt.ToString()); shopItemCell.sellImage.gameObject.SetActive(false); } else { shopItemCell.itemCell.countText.text = StringUtility.Contact(UIHelper.GetTextColorByItemColor(TextColType.Red, remainNum.ToString()), "/" + canBuyCnt.ToString()); shopItemCell.sellImage.gameObject.SetActive(true); shopItemCell.buyBtn.gameObject.SetActive(false); shopItemCell.stateImage.gameObject.SetActive(false); } } } if(_unionLv >= shopInfo.LimitValue) { shopItemCell.moneyObj.SetActive(true); shopItemCell.buyNeedText.gameObject.SetActive(false); //shopItemCell.buyBtnIcon.SetSprite(""); shopItemCell.buyBtn.interactable = true; shopItemCell.LoadGuidEffectCtrl(shopInfo.ID, shopId); } else { shopItemCell.buyNeedText.gameObject.SetActive(true); shopItemCell.buyNeedText.text = Language.Get("FairyStore101",shopInfo.LimitValue); shopItemCell.buyBtn.interactable = false; shopItemCell.moneyObj.SetActive(false); //shopItemCell.buyBtnIcon.SetSprite(""); } } shopItemCell.buyBtn.RemoveAllListeners(); shopItemCell.buyBtn.AddListener(() => { if(shopInfo.ID == shopId) { shopId = 0; shopItemCell.LoadGuidEffectCtrl(shopInfo.ID, shopId); } m_storeModel.SendBuyShopItem(shopInfo, 1); }); shopItemCell.ShopCellBtn.RemoveAllListeners(); shopItemCell.ShopCellBtn.AddListener(() => { if (shopInfo.ID == shopId) { shopId = 0; shopItemCell.LoadGuidEffectCtrl(shopInfo.ID, shopId); } m_storeModel.OnClickShopCell(shopInfo); }); } else { cell.transform.GetChild(childCode).gameObject.SetActive(false); } } } private void OnClickMountSkillBookToggle(bool isOn) { m_storeModel.storeFuncType = StoreFunc.MountSkillBookStore; CreateCell(); _shopCtrl.JumpIndex(0); } private void OnClickToolToggle(bool isOn) { m_storeModel.storeFuncType = StoreFunc.ToolStore; CreateCell(); _shopCtrl.JumpIndex(0); } private void OnClickMountStoneToggle(bool isOn) { m_storeModel.storeFuncType = StoreFunc.MountStoneStore; CreateCell(); _shopCtrl.JumpIndex(0); } private void ClickGetPathBtn() { int itemId = GeneralConfig.Instance.moneyDisplayIds[15]; ModelCenter.Instance.GetModel().SetChinItemModel(itemId); } private void CloseWin() { Close(); } } }