using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class HolidayLimitedTimePackageItemBehaviour : MonoBehaviour { [SerializeField] RectTransform m_ContainerOpen; [SerializeField] RectTransform m_ContainerClose; [SerializeField] Text m_MoneyClose; [SerializeField] Text m_MoneyOpen; [SerializeField] Image m_OpenRedpoint; [SerializeField] Image m_CloseRedpoint; [SerializeField] Button m_Select; HolidayLimitedTimePackageModel model { get { return ModelCenter.Instance.GetModel(); } } int selectIndex = -1; private void Awake() { m_Select.onClick.AddListener(Select); } private void OnEnable() { model.selectUpdate += SelectUpdate; // model.accumulateRechargeUpdate += AccumulateRechargeUpdate; model.onStateUpdate += OnStateUpate; } private void OnDisable() { model.selectUpdate -= SelectUpdate; // model.accumulateRechargeUpdate -= AccumulateRechargeUpdate; model.onStateUpdate -= OnStateUpate; } private void OnStateUpate(int obj) { DisplayRedpoint(); } private void AccumulateRechargeUpdate() { DisplayRedpoint(); } public void Display(int index) { selectIndex = index; OperationBase operationBase; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayGiftPackage, out operationBase)) { GiftPackageClass operation = operationBase as GiftPackageClass; GiftPackageClass.Gift_Package reward; if (operation.TryGetGift(TimeUtility.ServerNow, out reward)) { if (index < reward.gifts.Length) { var showNum = UIHelper.GetMoneyFormat(reward.gifts[index].rmb); m_MoneyClose.text = showNum; m_MoneyOpen.text = showNum; DisplayRedpoint(); DisplaySelect(); } } } } void DisplaySelect() { m_ContainerOpen.SetActive(model.selectIndex == selectIndex); m_ContainerClose.SetActive(model.selectIndex != selectIndex); } void DisplayRedpoint() { OperationBase operationBase; bool satisfyGet = false; if (OperationTimeHepler.Instance.TryGetOperationTime(Operation.HolidayGiftPackage, out operationBase)) { GiftPackageClass operation = operationBase as GiftPackageClass; GiftPackageClass.Gift_Package reward; if (operation.TryGetGift(TimeUtility.ServerNow, out reward)) { if (selectIndex < reward.gifts.Length && selectIndex >= 0) { var recharge = reward.gifts[selectIndex]; satisfyGet = model.IsExpired(selectIndex) && model.IsOpen; } } } m_OpenRedpoint.SetActive(satisfyGet); m_CloseRedpoint.SetActive(satisfyGet); } private void SelectUpdate(int index) { m_ContainerOpen.SetActive(index == selectIndex); m_ContainerClose.SetActive(index != selectIndex); } private void Select() { if (model.selectIndex != selectIndex && selectIndex != -1) { model.selectIndex = selectIndex; } } } }