using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
namespace vnxbqy.UI
|
{
|
public class AchieveTargetBehaviour : MonoBehaviour
|
{
|
[SerializeField] List<AchievementDesc> m_Achievements;
|
|
private int currentDungeonId;
|
|
AchievementModel m_AchievementModel;
|
AchievementModel achievementModel {
|
get {
|
return m_AchievementModel ?? (m_AchievementModel = ModelCenter.Instance.GetModel<AchievementModel>());
|
}
|
}
|
|
DungeonModel m_DungeonModel;
|
DungeonModel dungeonModel {
|
get {
|
return m_DungeonModel ?? (m_DungeonModel = ModelCenter.Instance.GetModel<DungeonModel>());
|
}
|
}
|
|
public void Init(int mapId)
|
{
|
currentDungeonId = mapId;
|
ShowAncientAchieve();
|
}
|
|
private void OnEnable()
|
{
|
achievementModel.achievementCompletedEvent += UpdateAchieveEvent;
|
achievementModel.achievementProgressUpdateEvent += UpdateAchieveEvent;
|
}
|
|
private void UpdateAchieveEvent(int achieveId)
|
{
|
switch (currentDungeonId)
|
{
|
case 31160:
|
if (GeneralDefine.ancientGrandTotalAchievements.Contains(achieveId)
|
|| GeneralDefine.ancientContinueKillAchievements.Contains(achieveId))
|
{
|
ShowAncientAchieve();
|
}
|
break;
|
}
|
}
|
|
private void ShowAncientAchieve()
|
{
|
ParseAchieve(GeneralDefine.ancientGrandTotalAchievements, m_Achievements[0]);
|
ParseAchieve(GeneralDefine.ancientContinueKillAchievements, m_Achievements[1]);
|
}
|
|
private void ParseAchieve(List<int> _achieveList, AchievementDesc _achievement)
|
{
|
Achievement presentAchieve = null;
|
int _index = 0;
|
if (_achieveList != null)
|
{
|
Achievement achievement;
|
for (int i = 0; i < _achieveList.Count; i++)
|
{
|
if (achievementModel.TryGetAchievement(_achieveList[i], out achievement))
|
{
|
if (!Achievement.IsReach(_achieveList[i], achievement.progress) && !achievement.completed)
|
{
|
presentAchieve = achievement;
|
_index = i;
|
break;
|
}
|
}
|
}
|
}
|
if (presentAchieve != null)
|
{
|
SuccessConfig _tagSuccessModel = SuccessConfig.Get(presentAchieve.id);
|
_achievement.m_ContainerUnComplete.SetActive(true);
|
_achievement.m_ContainerComplete.SetActive(false);
|
_achievement.m_AwardDesc.text = _tagSuccessModel.Describe.Replace("@NeedCnt@", string.Empty);
|
_achievement.m_AchieveTarget.text = StringUtility.Contact(presentAchieve.progress, "/", _tagSuccessModel.NeedCnt);
|
if (_achievement.m_AchieveProgressDesc != null)
|
{
|
_achievement.m_AchieveProgressDesc.text = Language.Get("SGZC_Text_2", _tagSuccessModel.Condition.Length > 0 ? _tagSuccessModel.Condition[0] : 0);
|
}
|
if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0)
|
{
|
_achievement.m_ItemCell.SetActive(true);
|
ItemCellModel _itemCellModel = new ItemCellModel(presentAchieve.rewardItem[0].id, false, (ulong)presentAchieve.rewardItem[0].count);
|
_achievement.m_ItemCell.Init(_itemCellModel);
|
_achievement.m_ItemCell.button.RemoveAllListeners();
|
_achievement.m_ItemCell.button.onClick.AddListener(() =>
|
{
|
if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0)
|
{
|
var _item = presentAchieve.rewardItem[0];
|
ItemTipUtility.Show(_item.id);
|
}
|
});
|
}
|
else
|
{
|
_achievement.m_ItemCell.SetActive(false);
|
}
|
}
|
else
|
{
|
_achievement.m_ContainerUnComplete.SetActive(false);
|
_achievement.m_ContainerComplete.SetActive(true);
|
_achievement.m_ItemCell.button.RemoveAllListeners();
|
}
|
}
|
|
private void OnDisable()
|
{
|
achievementModel.achievementCompletedEvent -= UpdateAchieveEvent;
|
achievementModel.achievementProgressUpdateEvent -= UpdateAchieveEvent;
|
}
|
|
[Serializable]
|
public class AchievementDesc
|
{
|
public ItemCell m_ItemCell;
|
public Text m_AwardDesc;
|
public Text m_AchieveTarget;
|
public Text m_AchieveProgressDesc;
|
public RectTransform m_ContainerUnComplete;
|
public RectTransform m_ContainerComplete;
|
}
|
}
|
}
|
|