using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class OSGiftBehaviour : MonoBehaviour { [SerializeField] Text m_GiftName; [SerializeField] RareItem[] m_Items; [SerializeField] Text m_GiftDescription; [SerializeField] Image m_CostMoneyIcon; [SerializeField] Text m_CostValue; [SerializeField] Image m_OriginalMoneyIcon; [SerializeField] Text m_OriginalMoneyValue; [SerializeField] Button m_BuyBtn; [SerializeField] Image m_Complete; [SerializeField] Text m_OwnMoney; StoreModel m_StoreModel; StoreModel storeModel { get { return m_StoreModel ?? (m_StoreModel = ModelCenter.Instance.GetModel()); } } OSTimeLimitGiftModel m_TimeLimitGiftModel; OSTimeLimitGiftModel timeLimitGiftModel { get { return m_TimeLimitGiftModel ?? (m_TimeLimitGiftModel = ModelCenter.Instance.GetModel()); } } OSGiftModel giftModel { get { return ModelCenter.Instance.GetModel(); } } private int storeId = 0; private void Awake() { m_BuyBtn.onClick.AddListener(OnBuyBtn); for (int i = 0; i < m_Items.Length; i++) { var _index = i; m_Items[i].button.onClick.AddListener(() => { OnItemClick(_index); }); } } private void OnEnable() { storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent; PlayerDatas.Instance.playerDataRefreshEvent += PlayerDataRefreshInfoEvent; } private void OnDisable() { storeModel.RefreshBuyShopLimitEvent -= RefreshBuyShopLimitEvent; PlayerDatas.Instance.playerDataRefreshEvent -= PlayerDataRefreshInfoEvent; } private void PlayerDataRefreshInfoEvent(PlayerDataType refreshType) { if (refreshType == PlayerDataType.Gold || refreshType == PlayerDataType.GoldPaper) { DisplayOwnMoney(); } } private void RefreshBuyShopLimitEvent() { Display(storeId); } public void Display(int _id) { var _storeConfig = StoreConfig.Get(_id); if (_storeConfig == null) { return; } storeId = _id; List _shopItems; if (m_GiftName != null) { m_GiftName.text = Language.Get(StringUtility.Contact("OSGiftName_"), _storeConfig.MoneyNumber); } if (m_GiftDescription != null) { m_GiftDescription.text = Language.Get(StringUtility.Contact("OSGiftDesc_", _storeConfig.MoneyNumber)); } if (storeModel.TryGetShopItemInfo((StoreFunc)_storeConfig.ShopType, _id, out _shopItems)) { for (int i = 0; i < m_Items.Length; i++) { if (i >= _shopItems.Count) { m_Items[i].SetActive(false); continue; } m_Items[i].SetActive(true); var _item = _shopItems[i]; var _itemModel = new ItemCellModel(_item.itemId, false, (ulong)_item.count); m_Items[i].SetItemRare(_itemModel, _storeConfig.MainItemID == _item.itemId); } } m_CostMoneyIcon.SetIconWithMoneyType(_storeConfig.MoneyType); m_CostValue.text = _storeConfig.MoneyNumber.ToString(); if (m_OriginalMoneyIcon != null) { m_OriginalMoneyIcon.SetIconWithMoneyType(_storeConfig.MoneyType); } if (m_OriginalMoneyValue != null) { m_OriginalMoneyValue.text = _storeConfig.MoneyOriginal.ToString(); } DisplayOwnMoney(); var _limit = storeModel.GetBuyShopLimit((uint)storeId); m_Complete.SetActive(_limit != null && _limit.BuyCnt >= _storeConfig.GoumaiNumber[0]); m_BuyBtn.SetActive(_limit == null || _limit.BuyCnt < _storeConfig.GoumaiNumber[0]); } private void DisplayOwnMoney() { if (m_OwnMoney != null) { var config = StoreConfig.Get(storeId); m_OwnMoney.text = UIHelper.GetMoneyCnt(config == null ? 1 : config.MoneyType).ToString(); } } private void OnBuyBtn() { var _storeConfig = StoreConfig.Get(storeId); if (_storeConfig == null) { return; } switch ((StoreFunc)_storeConfig.ShopType) { case StoreFunc.OSTimeLimitGift: if (timeLimitGiftModel.currentDay > timeLimitGiftModel.openDays) { SysNotifyMgr.Instance.ShowTip("ActiveOutTime"); return; } ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("OSTimeLimitGiftConfirm", _storeConfig.MoneyNumber), (bool isOk) => { if (isOk) { storeModel.SendBuyShopItem(_storeConfig, 1); } }); return; case StoreFunc.OSGift: { if (!giftModel.IsGiftExist(_storeConfig.ID)) { SysNotifyMgr.Instance.ShowTip("ActiveOutTime"); return; } ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("OSTimeLimitGiftConfirm", _storeConfig.MoneyNumber), (bool isOk) => { if (isOk) { storeModel.SendBuyShopItem(_storeConfig, 1); } }); } return; } storeModel.SendBuyShopItem(_storeConfig, 1); } private void OnItemClick(int _index) { var _storeConfig = StoreConfig.Get(storeId); if (_storeConfig == null) { return; } List _shopItems; if (storeModel.TryGetShopItemInfo((StoreFunc)_storeConfig.ShopType, storeId, out _shopItems)) { if (_index < _shopItems.Count) { var item = _shopItems[_index]; ItemTipUtility.Show(item.itemId); } } } } }