少年修仙传客户端代码仓库
lcy
2024-12-16 a39c35fc6449430cd02bccb681c4a0a880e46cd9
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
using System;
 
namespace vnxbqy.UI
{
    
    public class KingThreeDimensionsBehaviour : MonoBehaviour
    {
        [SerializeField] RectTransform m_ContainerSeasonNotStart;
        [SerializeField] RectTransform m_ContainerSeasonStartOrEnd;
        [SerializeField] Text m_Season;
        [SerializeField] Image m_EndState;
        [SerializeField] Image m_OnGoingState;
        [SerializeField] Text m_Division;
        [SerializeField] Text m_Score;
        [SerializeField] RectTransform m_ContainerWearToggle;
        [SerializeField] Image m_WearCheck;
        [SerializeField] TreasureUIEvent m_Wear;
 
        KingTreasureModel model
        {
            get { return ModelCenter.Instance.GetModel<KingTreasureModel>(); }
        }
 
        TreasureModel treasureModel { get { return ModelCenter.Instance.GetModel<TreasureModel>(); } }
 
        CrossServerOneVsOneModel oneVsOneModel
        {
            get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); }
        }
 
        int displayTreasureId = 0;
 
        private void Awake()
        {
            m_Wear.onClick += OnWear;
        }
 
        public void Display(int treasureId)
        {
            displayTreasureId = treasureId;
 
            var season = 0;
            Treasure treasure;
            if (model.TryGetSeason(treasureId, out season)
                && treasureModel.TryGetTreasure(treasureId, out treasure))
            {
                var seasonNotStart = model.GetSeasonState(treasureId) == 0;
                m_ContainerSeasonNotStart.SetActive(seasonNotStart);
                m_ContainerSeasonStartOrEnd.SetActive(!seasonNotStart);
 
                bool seasonEnd = model.GetSeasonState(treasureId) == 2;
                if (!seasonNotStart)
                {
                    m_EndState.SetActive(seasonEnd);
                    m_OnGoingState.SetActive(!seasonEnd);
                    m_Season.text = season.ToString();
                    m_Division.SetActive(seasonEnd && treasure.state == TreasureState.Collected);
                    CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
                    if (oneVsOneModel.TryGetOneVsOneHistory(season, out history))
                    {
                        var divisionConfig = CrossServerArenaConfig.Get(history.division);
                        if (divisionConfig != null)
                        {
                            m_Division.text = divisionConfig.Name;
                            m_Division.color = UIHelper.GetDanLVColor(history.division);
                        }
                        m_Score.SetActive(treasure.state == TreasureState.Collected);
                        m_Score.text = Language.Get("KingTreasureScore", model.GetSeasonScore(treasureId));
                    }
                    else
                    {
                        m_Division.SetActive(false);
                        m_Score.SetActive(false);
                    }
                }
            }
 
            DisplayWear();
 
            model.treasureWearRefresh -= TreasureWearRefresh;
            model.treasureWearRefresh += TreasureWearRefresh;
        }
 
        void DisplayWear()
        {
            Treasure treasure;
            if (treasureModel.TryGetTreasure(displayTreasureId, out treasure))
            {
                m_ContainerWearToggle.SetActive(treasure.state == TreasureState.Collected);
                m_WearCheck.SetActive(model.IsWear(displayTreasureId));
            }
            else
            {
                m_ContainerWearToggle.SetActive(false);
            }
        }
 
        public void OnWear()
        {
            if (displayTreasureId != 0)
            {
                model.TryWearTreasure(displayTreasureId);
            }
        }
 
        private void TreasureWearRefresh()
        {
            DisplayWear();
        }
 
        public void Dispose()
        {
            model.treasureWearRefresh -= TreasureWearRefresh;
        }
    }
}