少年修仙传客户端代码仓库
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
namespace vnxbqy.UI
{
    public class SuccessBPCell : CellView
    {
        [SerializeField] ItemCell[] m_Items;
        [SerializeField] ItemCell[] m_BPItems;
        [SerializeField] Image[] m_GotImages;
        [SerializeField] Text SuccessCond;
        [SerializeField] Text SuccessProcess;
        [SerializeField] Button m_GetBtn;
        [SerializeField] Text m_GetText;
        [SerializeField] Image m_GetYetImg;
        [SerializeField] UIEffect m_GetEffect;
 
        AchievementModel model { get { return ModelCenter.Instance.GetModel<AchievementModel>(); } }
        VipModel vipModel { get { return ModelCenter.Instance.GetModel<VipModel>(); } }
        public void Display(int successID)
        {
            Achievement achievement;
            if (!model.TryGetAchievement(successID, out achievement))
            {
                return;
            }
            var config = SuccessConfig.Get(successID);
 
            SuccessCond.text = AchievementModel.ParseAchievementDescription(successID);
            int process = Mathf.Min(achievement.progress, config.NeedCnt);
            if (achievement.completed)
            {
                //已领取完成的 服务端不通知,则根据领取算满值
                process = config.NeedCnt;
            }
            if (process >= config.NeedCnt)
            {
                SuccessProcess.text = "(" + UIHelper.AppendColor(TextColType.DarkGreen, process.ToString()) + "/" + config.NeedCnt + ")";
            }
            else
            {
                SuccessProcess.text = "(" + UIHelper.AppendColor(TextColType.Red, process.ToString()) + "/" + config.NeedCnt + ")";
            }
            for (int i = 0; i < m_Items.Length; i++)
            {
                if (i < achievement.rewardItem.Length)
                {
                    m_Items[i].SetActive(true);
                    m_GotImages[i].SetActive(achievement.completed);
                    var _item = achievement.rewardItem[i];
                    ItemCellModel _ItemData = new ItemCellModel(_item.id, true, (ulong)_item.count);
                    m_Items[i].Init(_ItemData);
                    m_Items[i].button.RemoveAllListeners();
                    m_Items[i].button.AddListener(() =>
                    {
                        ItemTipUtility.Show(_item.id);
                    });
                }
                else
                {
                    m_Items[i].SetActive(false);
                }
            }
 
            //战令道具
            for (int i = 0; i < m_BPItems.Length; i++)
            {
                if (i < achievement.rewardItemBP.Length)
                {
                    m_BPItems[i].SetActive(true);
                    m_GotImages[achievement.rewardItem.Length + i].SetActive(achievement.completedBP);
                    var _item = achievement.rewardItemBP[i];
                    ItemCellModel _ItemData = new ItemCellModel(_item.id, true, (ulong)_item.count);
                    m_BPItems[i].Init(_ItemData);
                    m_BPItems[i].button.RemoveAllListeners();
                    m_BPItems[i].button.AddListener(() =>
                    {
                        ItemTipUtility.Show(_item.id);
                    });
                }
                else
                {
                    m_BPItems[i].SetActive(false);
                }
            }
 
            m_GetYetImg.SetActive(achievement.completedBP && achievement.completed);
            m_GetBtn.SetActive(!(achievement.completedBP && achievement.completed));
            // 1. 提交不满足两个奖励都不可领取 - 灰色(滚动遮挡bug改不显示)  
            // 2. 可以领取1-2个奖励 -亮+特效
            // 3. 普通及奖励已领取 但不能领取高级 显示继续领取 - 亮无特效
 
            bool isBuy = model.isBuyBP();
 
            m_GetText.text = Language.Get("Z1043");
            m_GetEffect.SetActive(false);
            m_GetEffect.Stop();
            bool isReach = false;
            if (!achievement.completed && !Achievement.IsReach(successID, achievement.progress))
            {
                //m_GetBtn.SetColorful(m_GetText, false);
                m_GetBtn.SetActive(false);
            }
            else
            {
                isReach = true;
                //m_GetBtn.SetColorful(m_GetText, true);
                //m_GetBtn.SetActive(true);
                if (!achievement.completed || (isBuy && !achievement.completedBP))
                {
                    m_GetEffect.SetActive(true);
                    m_GetEffect.Play();
                }
                if (achievement.completed && !achievement.completedBP)
                {
                    m_GetText.text = Language.Get("Z1049");
                }
            }
 
            m_GetBtn.SetListener(()=> {
                GetGift(successID, isBuy, isReach, achievement.completed, achievement.completedBP);
            }
            );
        }
 
        private void GetGift(int successID, bool isBuy, bool isReach, bool completed, bool completedBP)
        {
            if (!isReach)
            {
                return;
            }
            if (!completed)
            {
                //GetAchievementReward(successID, 0);
                ILAchievementModel.Instance.GetAchievementReward(successID, 0);
            }
            if (isBuy && !completedBP)
            {
                //GetAchievementReward(successID, 1);
                ILAchievementModel.Instance.GetAchievementReward(successID, 1);
            }
            if (completed && !isBuy)
            {
                ConfirmCancel.ShowPopConfirm(
                    Language.Get("Mail101"),
                    Language.Get("SuccessBuyTip"),
                    (bool _ok) =>
                    {
                        if (_ok)
                        {
                            vipModel.CTG(model.BPCTGID);
                        }
                    }
                    );
            }
        }
 
        //public void GetAchievementReward(int _achievementId, byte getBP)
        //{
        //    var sendInfo = new CA542_tagMCGetSuccessAward();
        //    sendInfo.SuccID = (uint)_achievementId;
        //    sendInfo.IsPassport = getBP;
        //    GameNetSystem.Instance.SendInfo(sendInfo);
        //}
 
    }
}