using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; using System; namespace vnxbqy.UI { public class MysticalQGWin : Window { [SerializeField] Text opreationTimeText; [SerializeField] Image moneyIcon; [SerializeField] Text moneyNumText; [SerializeField] GameObject activityOpenObj; [SerializeField] GameObject activityCloseObj; [SerializeField] RectTransform saleItemsContent; [SerializeField] List saleItems = new List(); Vector3 startPos = Vector3.zero; StoreModel storeModel { get { return ModelCenter.Instance.GetModel(); } } MysticalQGModel qgModel { get { return ModelCenter.Instance.GetModel(); } } int moneyType = 0; #region Built-in protected override void BindController() { } protected override void AddListeners() { } protected override void OnPreOpen() { OpenServerActivityWin.tryCloseEvent += CloseOpenServerActivity; qgModel.UpdateMysticalShopEvent += UpdateSaleItems; storeModel.RefreshBuyShopLimitEvent += UpdateMoney; SetDisplay(); } protected override void OnAfterOpen() { startPos = saleItemsContent.anchoredPosition3D; } protected override void OnPreClose() { OpenServerActivityWin.tryCloseEvent -= CloseOpenServerActivity; qgModel.UpdateMysticalShopEvent -= UpdateSaleItems; storeModel.RefreshBuyShopLimitEvent -= UpdateMoney; saleItemsContent.anchoredPosition3D = startPos; } protected override void OnAfterClose() { } #endregion private void SetDisplay() { qgModel.CloseRedPoint(); UpdateSaleItems(); UpdateMoneyInfo(); } private void UpdateSaleItems() { List mysticalShops = null; bool isHaveSell = qgModel.TryGetCurSellShop(out mysticalShops); activityCloseObj.SetActive(!isHaveSell); activityOpenObj.SetActive(isHaveSell); if (isHaveSell) { for (int i = 0; i < saleItems.Count; i++) { var saleItem = saleItems[i]; if (i < mysticalShops.Count) { var mysticalShop = mysticalShops[i]; moneyType = mysticalShop.storeConfig.MoneyType; saleItem.SetDisplay(mysticalShop); saleItem.SetActive(true); } else { saleItem.SetActive(false); } } } } private void UpdateMoneyInfo() { moneyIcon.SetIconWithMoneyType(moneyType); moneyNumText.text = UIHelper.GetMoneyCnt(moneyType).ToString(); } private void UpdateMoney() { UpdateMoneyInfo(); } private bool CloseOpenServerActivity() { List mysticalShops = null; bool isHaveSell = qgModel.TryGetCurSellShop(out mysticalShops); if (!isHaveSell) return true; if(qgModel.isOpenPrompting) { ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"), Language.Get("MysticalQG103"), Language.Get("ConfirmCancel102"), (Action)((bool isOk, bool isToggle) => { if (isOk) { WindowCenter.Instance.Close(); } qgModel.isOpenPrompting = !isToggle; })); return false; } return true; } } }