using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
using vnxbqy.UI;
|
|
namespace EnhancedUI.EnhancedScroller
|
{
|
public class OSAchieveCell : ScrollerUI
|
{
|
[SerializeField] AvatarCell avatarCell;
|
[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 = OSRedAchieveConfig.Get(_achieve.id);
|
avatarCell.bgImage.SetActive(false);
|
avatarCell.avatarFrameImage.SetActive(false);
|
avatarCell.avatarImage.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 = SuccessConfig.Get(_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.SetActive(achievement.completed);
|
m_AchiveGoto.SetActive(!_isReach);
|
m_RedPack.SetActive(_isReach && !achievement.completed);
|
if (_isReach && !achievement.completed)
|
{
|
m_RedPack.onClick.AddListener(() =>
|
{
|
model.RequestSendAchieveEnvelope(_currentAchieve);
|
});
|
}
|
}
|
if (!_isReach)
|
{
|
m_AchiveGoto.onClick.AddListener((UnityEngine.Events.UnityAction)(() =>
|
{
|
if (TimeUtility.OpenDay >= model.openDays)
|
{
|
SysNotifyMgr.Instance.ShowTip("ActiveOutTime");
|
return;
|
}
|
achieveModel.GotoCompleteAchievement(_currentAchieve);
|
WindowCenter.Instance.Close<OpenServerActivityWin>();
|
}));
|
}
|
}
|
}
|
}
|
}
|
|
|