using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace vnxbqy.UI { public class AccumulateRechargeBehaviour : 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; AccumulateRechargeModel 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.AccumulateRecharge, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; var reward = operation.GetReward(TimeUtility.ServerNow); if (reward != null) { if (index < reward.recharges.Count) { var recharge = reward.recharges[index]; var showNum = recharge.requireGold; m_MoneyClose.text = UIHelper.GetMoneyFormat(showNum); m_MoneyOpen.text = UIHelper.GetMoneyFormat(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.AccumulateRecharge, out operationBase)) { OperationAccumulateRecharge operation = operationBase as OperationAccumulateRecharge; var reward = operation.GetReward(TimeUtility.ServerNow); if (reward != null) { if (selectIndex < reward.recharges.Count && selectIndex >= 0) { var recharge = reward.recharges[selectIndex]; satisfyGet = model.SatisfyGetReward(recharge) && 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; } } } }