//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, October 09, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine.UI;
|
|
|
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<AchievementModel>(); } }
|
|
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 = TreasureConfig.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<AchievementGroup>(m_Treasure.achievementGroups.Values);
|
m_AchievementScroll.ShowTreasures(achievementGroups, _stepByStep);
|
}
|
else
|
{
|
m_AchievementScroll.gameObject.SetActive(false);
|
}
|
}
|
|
private void OnAchievementCompleted(int _achievementId)
|
{
|
DisplayProgress();
|
}
|
|
}
|
|
}
|