//-------------------------------------------------------- // [Author]: 第二世界 // [ Date ]: Monday, October 09, 2017 //-------------------------------------------------------- using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using TableConfig; namespace Snxxz.UI { public class TreasureCollectPanel : MonoBehaviour { [SerializeField] SmoothSlider m_CompleteSlider; [SerializeField] AchievementAwardEffectResponse m_AwardEffectResponse; [SerializeField] Text m_Progress; [SerializeField] TreasureCyclicScroll m_AchievementScroll; AchievementModel achievementModel { get { return ModelCenter.Instance.GetModel(); } } Treasure m_Treasure; public void Display(Treasure _treasure) { achievementModel.achievementCompletedEvent -= OnAchievementCompleted; m_Treasure = _treasure; if (m_Treasure == null) { return; } DisplayProgress(); DisplayAchievements(true); achievementModel.achievementCompletedEvent += OnAchievementCompleted; } public void Dispose() { m_AchievementScroll.Dispose(); achievementModel.achievementCompletedEvent -= OnAchievementCompleted; } private void DisplayProgress() { var config = Config.Instance.Get(m_Treasure.id); var total = config.RequirementTotal; m_CompleteSlider.value = total > 0 ? (float)m_Treasure.progress / total : 1f; m_Progress.text = StringUtility.Contact(m_Treasure.progress, "/", total); var effectType = m_Treasure.progress == 0 ? 0 : m_Treasure.progress < total ? 1 : 2; m_AwardEffectResponse.ActiveEffect(effectType); } private void DisplayAchievements(bool _stepByStep) { if (m_Treasure.achievementGroups != null) { m_AchievementScroll.HideAll(); m_AchievementScroll.gameObject.SetActive(true); var achievementGroups = new List(m_Treasure.achievementGroups.Values); m_AchievementScroll.ShowTreasures(achievementGroups, _stepByStep); } else { m_AchievementScroll.gameObject.SetActive(false); } } private void OnAchievementCompleted(int _achievementId) { DisplayProgress(); } } }