少年修仙传客户端代码仓库
client_Wu Xijin
2019-02-13 c7f64d977c4e2884d5411a5a2d0f37b6afa52963
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//--------------------------------------------------------
//    [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();
        }
 
    }
 
}