| | |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | using Snxxz.UI; |
| | | using TableConfig; |
| | | namespace EnhancedUI.EnhancedScroller |
| | | { |
| | | public class OSAchieveCell : ScrollerUI |
| | | { |
| | | [SerializeField] Image m_AchieveIcon; |
| | | [SerializeField] Text m_AchieveName; |
| | | [SerializeField] Button m_AchiveGoto; |
| | | [SerializeField] Image m_AchiveComplete; |
| | | [SerializeField] Text m_AchieveDesc; |
| | | [SerializeField] Text m_AchieveProgress; |
| | | [SerializeField] Button m_RedPack; |
| | | |
| | | OSRedEnvelopeModel m_Model; |
| | | OSRedEnvelopeModel model |
| | | { |
| | | get |
| | | { |
| | | return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<OSRedEnvelopeModel>()); |
| | | } |
| | | } |
| | | |
| | | AchievementModel m_AchievementModel; |
| | | AchievementModel achieveModel |
| | | { |
| | | get |
| | | { |
| | | return m_AchievementModel ?? (m_AchievementModel = ModelCenter.Instance.GetModel<AchievementModel>()); |
| | | } |
| | | } |
| | | |
| | | public override void Refresh(CellView cell) |
| | | { |
| | | var _key = model.m_OSRedAchieves[cell.index]; |
| | | OSRedEnvelopeModel.OSRedAchieve _achieve = model.m_OSRedAchieveDict[_key]; |
| | | if (_achieve != null) |
| | | { |
| | | var _cfg = ConfigManager.Instance.GetTemplate<OSRedAchieveConfig>(_achieve.id); |
| | | m_AchieveIcon.SetSprite(_cfg.Icon); |
| | | m_AchieveName.text = _cfg.typeName; |
| | | m_AchiveGoto.onClick.RemoveAllListeners(); |
| | | m_RedPack.onClick.RemoveAllListeners(); |
| | | var _currentAchieve = _achieve.CurrentAchieve; |
| | | bool _isReach = false; |
| | | var _achieveCfg = ConfigManager.Instance.GetTemplate<SuccessConfig>(_currentAchieve); |
| | | Achievement achievement; |
| | | if (achieveModel.TryGetAchievement(_currentAchieve, out achievement)) |
| | | { |
| | | _isReach = Achievement.IsReach(_currentAchieve, achievement.progress) || achievement.completed; |
| | | m_AchieveDesc.text = _achieveCfg.Describe; |
| | | var _progress = achievement.completed ? _achieveCfg.NeedCnt : achievement.progress; |
| | | m_AchieveProgress.text = StringUtility.Contact(Mathf.Min(_progress, _achieveCfg.NeedCnt), |
| | | "/", _achieveCfg.NeedCnt); |
| | | m_AchiveComplete.gameObject.SetActive(achievement.completed); |
| | | m_AchiveGoto.gameObject.SetActive(!_isReach); |
| | | m_RedPack.gameObject.SetActive(_isReach && !achievement.completed); |
| | | if (_isReach && !achievement.completed) |
| | | { |
| | | m_RedPack.onClick.AddListener(() => |
| | | { |
| | | model.RequestSendAchieveEnvelope(_currentAchieve); |
| | | }); |
| | | } |
| | | } |
| | | if (!_isReach) |
| | | { |
| | | m_AchiveGoto.onClick.AddListener(() => |
| | | { |
| | | if (TimeUtility.OpenDay >= model.openDays) |
| | | { |
| | | SysNotifyMgr.Instance.ShowTip("ActiveOutTime"); |
| | | return; |
| | | } |
| | | achieveModel.GotoCompleteAchievement(_currentAchieve); |
| | | WindowCenter.Instance.CloseImmediately<OpenServerActivityWin>(); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using UnityEngine;
|
| | | using UnityEngine.UI;
|
| | | using Snxxz.UI;
|
| | | using TableConfig;
|
| | | namespace EnhancedUI.EnhancedScroller
|
| | | {
|
| | | public class OSAchieveCell : ScrollerUI
|
| | | {
|
| | | [SerializeField] Image m_AchieveIcon;
|
| | | [SerializeField] Text m_AchieveName;
|
| | | [SerializeField] Button m_AchiveGoto;
|
| | | [SerializeField] Image m_AchiveComplete;
|
| | | [SerializeField] Text m_AchieveDesc;
|
| | | [SerializeField] Text m_AchieveProgress;
|
| | | [SerializeField] Button m_RedPack;
|
| | |
|
| | | OSRedEnvelopeModel m_Model;
|
| | | OSRedEnvelopeModel model
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<OSRedEnvelopeModel>());
|
| | | }
|
| | | }
|
| | |
|
| | | AchievementModel m_AchievementModel;
|
| | | AchievementModel achieveModel
|
| | | {
|
| | | get
|
| | | {
|
| | | return m_AchievementModel ?? (m_AchievementModel = ModelCenter.Instance.GetModel<AchievementModel>());
|
| | | }
|
| | | }
|
| | |
|
| | | public override void Refresh(CellView cell)
|
| | | {
|
| | | var _key = model.m_OSRedAchieves[cell.index];
|
| | | OSRedEnvelopeModel.OSRedAchieve _achieve = model.m_OSRedAchieveDict[_key];
|
| | | if (_achieve != null)
|
| | | {
|
| | | var _cfg = Config.Instance.Get<OSRedAchieveConfig>(_achieve.id);
|
| | | m_AchieveIcon.SetSprite(_cfg.Icon);
|
| | | m_AchieveName.text = _cfg.typeName;
|
| | | m_AchiveGoto.onClick.RemoveAllListeners();
|
| | | m_RedPack.onClick.RemoveAllListeners();
|
| | | var _currentAchieve = _achieve.CurrentAchieve;
|
| | | bool _isReach = false;
|
| | | var _achieveCfg = Config.Instance.Get<SuccessConfig>(_currentAchieve);
|
| | | Achievement achievement;
|
| | | if (achieveModel.TryGetAchievement(_currentAchieve, out achievement))
|
| | | {
|
| | | _isReach = Achievement.IsReach(_currentAchieve, achievement.progress) || achievement.completed;
|
| | | m_AchieveDesc.text = _achieveCfg.Describe;
|
| | | var _progress = achievement.completed ? _achieveCfg.NeedCnt : achievement.progress;
|
| | | m_AchieveProgress.text = StringUtility.Contact(Mathf.Min(_progress, _achieveCfg.NeedCnt),
|
| | | "/", _achieveCfg.NeedCnt);
|
| | | m_AchiveComplete.gameObject.SetActive(achievement.completed);
|
| | | m_AchiveGoto.gameObject.SetActive(!_isReach);
|
| | | m_RedPack.gameObject.SetActive(_isReach && !achievement.completed);
|
| | | if (_isReach && !achievement.completed)
|
| | | {
|
| | | m_RedPack.onClick.AddListener(() =>
|
| | | {
|
| | | model.RequestSendAchieveEnvelope(_currentAchieve);
|
| | | });
|
| | | }
|
| | | }
|
| | | if (!_isReach)
|
| | | {
|
| | | m_AchiveGoto.onClick.AddListener(() =>
|
| | | {
|
| | | if (TimeUtility.OpenDay >= model.openDays)
|
| | | {
|
| | | SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
|
| | | return;
|
| | | }
|
| | | achieveModel.GotoCompleteAchievement(_currentAchieve);
|
| | | WindowCenter.Instance.CloseImmediately<OpenServerActivityWin>();
|
| | | });
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | |
|