少年修仙传客户端代码仓库
leonard Wu
2018-08-03 c2d2d5d3a840bf50968b3f95e304929bc62a7b70
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
123
124
125
126
127
128
129
130
131
132
133
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Tuesday, July 10, 2018
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using TableConfig;
using System.Collections.Generic;
 
namespace Snxxz.UI
{
 
    public class BossRebornBehaviour : ScrollItem
    {
        [SerializeField] Text m_Decription;
        [SerializeField] Text m_surplusTimes;
        [SerializeField] RewardPreviewGroup m_Rewards;
        [SerializeField] RectTransform m_GotoOrGetReward;
        [SerializeField] Button m_Goto;
        [SerializeField] Button m_GetReward;
        [SerializeField] Text m_CompleteTimes;
        [SerializeField] RectTransform m_GotReward;
 
        BossRebornTask rebornTask;
        BossRebornModel model { get { return ModelCenter.Instance.GetModel<BossRebornModel>(); } }
 
        public override void Display(object _data)
        {
            base.Display(_data);
 
            rebornTask = (BossRebornTask)_data;
 
            DisplayBaseInfo();
            UpdateState();
            UpdateRewardableTimes();
 
            m_Goto.RemoveAllListeners();
            m_Goto.AddListener(Goto);
            m_GetReward.RemoveAllListeners();
            m_GetReward.AddListener(GetReward);
 
            rebornTask.gotRewardTimesChangeEvent -= UpdateState;
            rebornTask.gotRewardTimesChangeEvent -= UpdateRewardableTimes;
            rebornTask.gotRewardTimesChangeEvent += UpdateState;
            rebornTask.gotRewardTimesChangeEvent += UpdateRewardableTimes;
        }
 
        public override void Dispose()
        {
            base.Dispose();
 
            rebornTask.gotRewardTimesChangeEvent -= UpdateState;
            rebornTask.gotRewardTimesChangeEvent -= UpdateRewardableTimes;
        }
 
        private void DisplayBaseInfo()
        {
            var config = ConfigManager.Instance.GetTemplate<BossRebornConfig>(rebornTask.id);
            var surplusTime = config.TotalTimes == 0 ? -1 : ((config.TotalTimes - rebornTask.gotRewardTimes) / config.SingleTimes);
            var surplusTimeString = UIHelper.GetTextColorByItemColor(surplusTime == 0 ? TextColType.Red : TextColType.Green,
                surplusTime == -1 ? Language.Get("BossFHLanguage4") : surplusTime.ToString());
 
            m_surplusTimes.text = Language.Get("BossFHLanguage3", surplusTimeString);
            m_Decription.text = string.Format(config.Description, config.SingleTimes);
 
            var rewardIndex = config.WorldLevel.Length - 1;
            var worldLevel = model.GetWorldLevel();
            for (int i = 0; i < config.WorldLevel.Length; i++)
            {
                if (worldLevel < config.WorldLevel[i])
                {
                    rewardIndex = i;
                    break;
                }
            }
 
            var items = new List<Item>();
            if (config.Reward1.Length > rewardIndex && config.Reward1[rewardIndex] != 0)
            {
                items.Add(new Item(config.Reward1[rewardIndex], config.RewardCount1[rewardIndex]));
            }
 
            if (config.Reward2.Length > rewardIndex && config.Reward2[rewardIndex] != 0)
            {
                items.Add(new Item(config.Reward2[rewardIndex], config.RewardCount2[rewardIndex]));
            }
 
            if (config.Reward3.Length > rewardIndex && config.Reward3[rewardIndex] != 0)
            {
                items.Add(new Item(config.Reward3[rewardIndex], config.RewardCount3[rewardIndex]));
            }
 
            m_Rewards.Display(items);
        }
 
        private void Goto()
        {
            var config = ConfigManager.Instance.GetTemplate<BossRebornConfig>(rebornTask.id);
            WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)config.jump);
        }
 
        private void GetReward()
        {
            model.RequestTaskReward(rebornTask.id);
        }
 
        private void UpdateState()
        {
            var state = rebornTask.GetState();
            m_GotoOrGetReward.gameObject.SetActive(
                state == BossRebornTask.State.Normal || state == BossRebornTask.State.Rewardable);
 
            var config = ConfigManager.Instance.GetTemplate<BossRebornConfig>(rebornTask.id);
            var surplusTime = config.TotalTimes == 0 ? -1 : ((config.TotalTimes - rebornTask.gotRewardTimes) / config.SingleTimes);
            var surplusTimeString = UIHelper.GetTextColorByItemColor(surplusTime == 0 ? TextColType.Red : TextColType.Green,
                surplusTime == -1 ? Language.Get("BossFHLanguage4") : surplusTime.ToString());
            m_surplusTimes.text = Language.Get("BossFHLanguage3", surplusTimeString);
 
            m_Goto.gameObject.SetActive(state == BossRebornTask.State.Normal);
            m_GetReward.gameObject.SetActive(state == BossRebornTask.State.Rewardable);
            m_GotReward.gameObject.SetActive(state == BossRebornTask.State.Completed);
        }
 
        private void UpdateRewardableTimes()
        {
            var config = ConfigManager.Instance.GetTemplate<BossRebornConfig>(rebornTask.id);
            m_CompleteTimes.text = StringUtility.Contact(rebornTask.completedTimes - rebornTask.gotRewardTimes, "/", config.SingleTimes);
        }
 
    }
 
}