| | |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using TableConfig; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | namespace Snxxz.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 (GeneralConfig.Instance.ancientGrandTotalAchievements.Contains(achieveId) |
| | | || GeneralConfig.Instance.ancientContinueKillAchievements.Contains(achieveId)) |
| | | { |
| | | ShowAncientAchieve(); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | private void ShowAncientAchieve() |
| | | { |
| | | ParseAchieve(GeneralConfig.Instance.ancientGrandTotalAchievements, m_Achievements[0]); |
| | | ParseAchieve(GeneralConfig.Instance.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 = ConfigManager.Instance.GetTemplate<SuccessConfig>(presentAchieve.id); |
| | | _achievement.m_ContainerUnComplete.gameObject.SetActive(true); |
| | | _achievement.m_ContainerComplete.gameObject.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.gameObject.SetActive(true); |
| | | ItemCellModel _itemCellModel = new ItemCellModel(presentAchieve.rewardItem[0].id, false, |
| | | (ulong)presentAchieve.rewardItem[0].count, presentAchieve.rewardItem[0].bind); |
| | | _achievement.m_ItemCell.Init(_itemCellModel); |
| | | _achievement.m_ItemCell.cellBtn.RemoveAllListeners(); |
| | | _achievement.m_ItemCell.cellBtn.onClick.AddListener(() => |
| | | { |
| | | if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0) |
| | | { |
| | | var _item = presentAchieve.rewardItem[0]; |
| | | ItemAttrData _itemAttr = new ItemAttrData(_item.id, false, (ulong)_item.count, -1, _item.bind); |
| | | ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(_itemAttr); |
| | | } |
| | | }); |
| | | } |
| | | else |
| | | { |
| | | _achievement.m_ItemCell.gameObject.SetActive(false); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | _achievement.m_ContainerUnComplete.gameObject.SetActive(false); |
| | | _achievement.m_ContainerComplete.gameObject.SetActive(true); |
| | | _achievement.m_ItemCell.cellBtn.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; |
| | | } |
| | | } |
| | | } |
| | | |
| | | using System;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using TableConfig;
|
| | | using UnityEngine;
|
| | | using UnityEngine.UI;
|
| | | namespace Snxxz.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 (GeneralConfig.Instance.ancientGrandTotalAchievements.Contains(achieveId)
|
| | | || GeneralConfig.Instance.ancientContinueKillAchievements.Contains(achieveId))
|
| | | {
|
| | | ShowAncientAchieve();
|
| | | }
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | private void ShowAncientAchieve()
|
| | | {
|
| | | ParseAchieve(GeneralConfig.Instance.ancientGrandTotalAchievements, m_Achievements[0]);
|
| | | ParseAchieve(GeneralConfig.Instance.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 = Config.Instance.Get<SuccessConfig>(presentAchieve.id);
|
| | | _achievement.m_ContainerUnComplete.gameObject.SetActive(true);
|
| | | _achievement.m_ContainerComplete.gameObject.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.gameObject.SetActive(true);
|
| | | ItemCellModel _itemCellModel = new ItemCellModel(presentAchieve.rewardItem[0].id, false,
|
| | | (ulong)presentAchieve.rewardItem[0].count, presentAchieve.rewardItem[0].bind);
|
| | | _achievement.m_ItemCell.Init(_itemCellModel);
|
| | | _achievement.m_ItemCell.cellBtn.RemoveAllListeners();
|
| | | _achievement.m_ItemCell.cellBtn.onClick.AddListener(() =>
|
| | | {
|
| | | if (presentAchieve.rewardItem != null && presentAchieve.rewardItem.Length > 0)
|
| | | {
|
| | | var _item = presentAchieve.rewardItem[0];
|
| | | ItemAttrData _itemAttr = new ItemAttrData(_item.id, false, (ulong)_item.count, -1, _item.bind);
|
| | | ModelCenter.Instance.GetModel<ItemTipsModel>().SetItemTipsModel(_itemAttr);
|
| | | }
|
| | | });
|
| | | }
|
| | | else
|
| | | {
|
| | | _achievement.m_ItemCell.gameObject.SetActive(false);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | _achievement.m_ContainerUnComplete.gameObject.SetActive(false);
|
| | | _achievement.m_ContainerComplete.gameObject.SetActive(true);
|
| | | _achievement.m_ItemCell.cellBtn.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;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|