//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, April 18, 2019 //-------------------------------------------------------- using UnityEngine; namespace vnxbqy.UI { public class FairyAffinityLoginActWin : Window { [SerializeField] TextEx txtProfitRatio; [SerializeField] TextEx txtBuyValue; [SerializeField] TextEx txtBuy; [SerializeField] ButtonEx btnBuy; [SerializeField] ImageEx imgBuy; [SerializeField] ScrollerController m_Controller; TextEx orgPrice; VipModel vipModel { get { return ModelCenter.Instance.GetModel(); } } FairyAffinityLoginActModel model { get { return ModelCenter.Instance.GetModel(); } } FairyAffinityZhanLingModel fairyAffinityZhanLingModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { var obj = btnBuy.FindComponent("Text", "Txt_orgPrice"); if (obj != null) orgPrice = obj as TextEx; } protected override void AddListeners() { btnBuy.SetListener(() => { OperationLoginAct holiday; OperationTimeHepler.Instance.TryGetOperation(FairyAffinityLoginActModel.operaType, out holiday); if (holiday == null) return; bool isBuy = model.IsBuyAwardEx(); if (isBuy) return; vipModel.CTG(holiday.awardExCTGID); }); } protected override void OnPreOpen() { m_Controller.OnRefreshCell += OnRefreshCell; model.UpdateyLoginEvent += UpdateHolidayLogin; fairyAffinityZhanLingModel.UpdateGiftStateEvent += UpdateHolidayLogin; OperationTimeHepler.Instance.operationTimeUpdateEvent += OnOperationTimeUpdateEvent; vipModel.rechargeCountEvent += VipModel_rechargeCountEvent; Display(); DisplayScroll(); } protected override void OnAfterOpen() { } protected override void OnPreClose() { m_Controller.OnRefreshCell -= OnRefreshCell; model.UpdateyLoginEvent -= UpdateHolidayLogin; fairyAffinityZhanLingModel.UpdateGiftStateEvent -= UpdateHolidayLogin; OperationTimeHepler.Instance.operationTimeUpdateEvent -= OnOperationTimeUpdateEvent; vipModel.rechargeCountEvent -= VipModel_rechargeCountEvent; } private void VipModel_rechargeCountEvent(int obj) { m_Controller.m_Scorller.RefreshActiveCellViews(); Display(); } private void OnOperationTimeUpdateEvent(Operation operation) { if (operation == Operation.default44) { m_Controller.m_Scorller.RefreshActiveCellViews(); Display(); } } protected override void OnAfterClose() { } #endregion private void Display() { bool isBuy = model.IsBuyAwardEx(); btnBuy.SetActiveIL(!isBuy); imgBuy.SetActiveIL(isBuy); OperationLoginAct holiday; OperationTimeHepler.Instance.TryGetOperation(FairyAffinityLoginActModel.operaType, out holiday); if (holiday == null || holiday.awardExCTGID <= 0) return; OrderInfoConfig orderCfg; vipModel.TryGetOrderInfo(holiday.awardExCTGID, out orderCfg); txtBuy.text = Language.Get("PayMoneyNum", orderCfg.PayRMBNum); if (orgPrice != null) { orgPrice.SetActiveIL(PlayerDatas.Instance.baseData.IsActive90Off); orgPrice.text = Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderCfg.m_PayRMBNum)); } txtProfitRatio.text = Language.Get("BlessedLand039", CTGConfig.Get(holiday.awardExCTGID).Percentage); txtBuyValue.text = model.buyValue.ToString(); } private void DisplayScroll() { m_Controller.Refresh(); OperationLoginAct holiday; OperationTimeHepler.Instance.TryGetOperation(FairyAffinityLoginActModel.operaType, out holiday); if (holiday == null) return; for (int i = 0; i < holiday.loginAwards.Count; i++) { m_Controller.AddCell(ScrollerDataType.Header, i); } m_Controller.Restart(); m_Controller.m_Scorller.RefreshActiveCellViews(); m_Controller.JumpIndex(GetDefaultSelect()); } private void OnRefreshCell(ScrollerDataType type, CellView cell) { if (type != ScrollerDataType.Header) return; var _cell = cell as FairyAffinityLoginActCell; _cell.Display(_cell.index); } private void UpdateHolidayLogin() { m_Controller.m_Scorller.RefreshActiveCellViews(); Display(); } //优先选择可领取的,然后是已领取的下一天 private int GetDefaultSelect() { OperationLoginAct holiday; OperationTimeHepler.Instance.TryGetOperation(FairyAffinityLoginActModel.operaType, out holiday); if (holiday == null) return 0; int getYet = -1; int reSign = -1; for (int i = 0; i < holiday.loginAwards.Count; i++) { //0 不可领取(日期未到) 1 可领取 2 已领取 3补签(已过天) 4 继续签到(已购买) 5 继续签到(未购买) var state = model.GetLoginAwardState(i + 1); if (state == 1 || state == 4) return i; if (state == 2) getYet = i; if (state == 3 && reSign == -1) reSign = i; } if (reSign != -1) return reSign; return getYet; } } }