//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Thursday, October 19, 2017 //-------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using EnhancedUI.EnhancedScroller; namespace vnxbqy.UI { public class SignInWin : Window { [SerializeField] ScrollerController m_SignInController; [SerializeField] ScrollerController m_KeepSignInController; [SerializeField] Text m_SignInRemind; SignInModel m_Model; SignInModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } #region Built-in protected override void BindController() { m_KeepSignInController.lockType = EnhanceLockType.KeepVertical; m_SignInController.lockType = EnhanceLockType.KeepVertical; } protected override void AddListeners() { } protected override void OnPreOpen() { DisplaySignIn(); DisplayKeepSignIn(); model.OnSignRefresh += OnSignRefresh; } protected override void OnActived() { base.OnActived(); JumpToTodaySign(); } protected override void OnAfterOpen() { HandleAchievement(); } protected override void OnPreClose() { model.OnSignRefresh -= OnSignRefresh; AchievementGoto.achievementType = 0; } protected override void OnAfterClose() { } #endregion private void OnSignRefresh() { DisplaySignIn(); DisplayKeepSignIn(); } private void HandleAchievement() { if (AchievementGoto.achievementType == AchievementGoto.SignInAchievement) { var _cfg = SuccessConfig.Get(AchievementGoto.SignInAchievement); if (!model.todaySignIn || model.keepSignInCount > 0) { var _num = Mathf.Max(0, model.alreadySignInCount); var _line = _num / 5; m_SignInController.JumpIndex(_line); } else { SysNotifyMgr.Instance.ShowTip("Achievement_16"); AchievementGoto.achievementType = 0; } } m_SignInController.m_Scorller.RefreshActiveCellViews(); } private void DisplaySignIn() { var configs = SignInConfig.GetValues(); if (m_SignInController.GetNumberOfCells(m_SignInController.m_Scorller) == 0) { m_SignInController.Refresh(); int page = Mathf.CeilToInt((float)configs.Count / 5); for (int i = 0; i < page; i++) { m_SignInController.AddCell(ScrollerDataType.Header, i); } m_SignInController.Restart(); } else { m_SignInController.m_Scorller.RefreshActiveCellViews(); } m_SignInRemind.text = Language.Get("SignIn_3", model.alreadySignInCount, model.keepSignInCount); } private void DisplayKeepSignIn() { var configs = ContinueSignInConfig.GetValues(); if (m_KeepSignInController.GetNumberOfCells(m_KeepSignInController.m_Scorller) == 0) { m_KeepSignInController.Refresh(); for (int i = 0; i < configs.Count; i++) { m_KeepSignInController.AddCell(ScrollerDataType.Header, i); } m_KeepSignInController.Restart(); } else { m_KeepSignInController.m_Scorller.RefreshActiveCellViews(); } } private void JumpToTodaySign() { var _num = Mathf.Max(0, model.alreadySignInCount); var _line = _num / 5; m_SignInController.JumpIndex(_line); } } }