少年修仙传客户端代码仓库
hch
2025-06-12 204ef05a831c9484e2abc561d27ecbff7c797453
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
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
using vnxbqy.UI;
using System.Collections;
using System.Collections.Generic;
 
using UnityEngine;
using System;
//心法科技
public class SkillsInformation
{
    public int id;//单位数id
    public int SkillID;//技能ID
    public int SkillLV;//技能等级
}
 
public class PlayerMethodData : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
{
    public Dictionary<int, SkillsInformation> _DicSkill = new Dictionary<int, SkillsInformation>();//存储心法
 
    public Dictionary<int, Redpoint> MethodRedPointDic = new Dictionary<int, Redpoint>();//心法列表红点
    public Dictionary<int, Redpoint> MethodRedPointBtnDic = new Dictionary<int, Redpoint>();//心法按钮红点
 
    public delegate void MtehodHA504();
    public static event MtehodHA504 EventHA504;//刷新心发技能信息
    public delegate void OnCepaContribution();
    public static event OnCepaContribution Event_CepaContribution;//用于仙盟贡献度的刷新
 
    public int _ContributionNumber = 0;//仙盟贡献度
    public Dictionary<int, int> MethodDataNeedLVDic = new Dictionary<int, int>();//心法下表对应的所需学习等级
 
    FairyModel fairyModel { get { return ModelCenter.Instance.GetModel<FairyModel>(); } }
    public  int FairyHallMax = 0;//获取仙盟大厅最大等级
    public override void Init()
    {
        string str = FuncConfigConfig.Get("FamilyTechNeedLV").Numerical1;
        MethodDataNeedLVDic = ConfigParse.GetDic<int, int>(str);
        var fairy = FamilyConfig.GetValues();
        foreach (var value in fairy)
        {
            if (value.familyLV > FairyHallMax)
            {
                FairyHallMax = value.familyLV;
            }
 
        }
 
    }
 
    public override void UnInit()
    {
 
    }
 
    public void OnBeforePlayerDataInitialize()
    {
 
        _ContributionNumber = 0;
    }
 
    public void OnPlayerLoginOk()
    {
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
        PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;//加入仙盟
        PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine;//退出仙盟
        PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418)
        PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418)
        FairyAuMethodDic();
        FairyAuMethodRedPoint();
    }
 
    private void Updatefighting(PlayerDataType obj)
    {
        if (obj == PlayerDataType.LV)
        {
            FairyAuMethodDic();
            FairyAuMethodRedPoint();
        }
    }
 
    private void OnRefreshFairyInfo()//加入仙盟
    {
        FairyAuHallRedPoint();
        FairyAuMethodDic();
        FairyAuMethodRedPoint();
    }
 
    private void OnRefreshFairyMine()//退出仙盟
    {
        if (!PlayerDatas.Instance.fairyData.HasFairy)
        {
            foreach (var key in MethodRedPointBtnDic.Keys)
            {
                MethodRedPointBtnDic[key].state = RedPointState.None;
            }
        }
    }
    private const int RedPoint_key1 = 1070101;//心法红点
    private Redpoint redPointStre1 = new Redpoint(MainRedDot.FAIRY_REDPOINT_KEY2, RedPoint_key1);
    public Redpoint fairyHeartRedpoint { get { return redPointStre1; } }
    private const int RedPoint_key2 = 1070104;//仙盟大厅红点
    private Redpoint redPointStre2 = new Redpoint(MainRedDot.FAIRY_REDPOINT_KEY2, RedPoint_key2);
    private void FairyAuMethodDic()//仙盟心法列表红点
    {
        if (MethodRedPointDic.Count != 0)
        {
            return;
        }
        foreach (var key in _DicSkill.Keys)
        {
            if (!MethodRedPointDic.ContainsKey(key))
            {
                int redPointId = RedPoint_key1 * 10 + key;
                Redpoint redPointMountStare = new Redpoint(RedPoint_key1, redPointId);
                MethodRedPointDic.Add(key, redPointMountStare);
                int redPointId1 = redPointId * 10 + key;
                Redpoint redPointMountStare1 = new Redpoint(redPointId, redPointId1);
                MethodRedPointBtnDic.Add(key, redPointMountStare1);
            }
        }
    }
    private void FairyAuMethodRedPoint()//仙盟心法红点
    {
        if (MethodRedPointBtnDic.Count == 0)
        {
            return;
        }
        foreach (var key in MethodRedPointBtnDic.Keys)
        {
            MethodRedPointBtnDic[key].state = RedPointState.None;
        }
        if (!fairyModel.fairyMethodToOpen)
        {
            return;
        }
        foreach (var key in _DicSkill.Keys)
        {
            if (MethodDataNeedLVDic.ContainsKey(_DicSkill[key].id) && PlayerDatas.Instance.baseData.LV >= MethodDataNeedLVDic[_DicSkill[key].id])
            {
                var familyTechConfig = FamilyTechConfig.Get(_DicSkill[key].SkillID + 1);
                if (_DicSkill[key].SkillLV > 0)
                {
 
                    if (familyTechConfig == null)
                    {
                        continue;
                    }
                    if (_ContributionNumber >= familyTechConfig.needPoint)
                    {
                        MethodRedPointBtnDic[key].state = RedPointState.Simple;
                    }
                }
                else
                {
                    if (familyTechConfig == null)
                    {
                        continue;
                    }
                    if (_ContributionNumber >= familyTechConfig.needPoint)
                    {
                        MethodRedPointBtnDic[key].state = RedPointState.Simple;
                    }
                }
            }
        }
    }
 
    public void FairyAuHallRedPoint()//仙盟大厅红点
    {
        redPointStre2.state = RedPointState.None;
        if (!PlayerDatas.Instance.fairyData.HasFairy)
        {
            return;
        }
        if ((int)PlayerDatas.Instance.fairyData.mine.FamilyLV >= 2 && (int)PlayerDatas.Instance.fairyData.fairy.FamilyLV < FairyHallMax)
        {
            int _familyLV = (int)PlayerDatas.Instance.fairyData.fairy.FamilyLV;
            if ((int)PlayerDatas.Instance.fairyData.fairy.FamilyMoney >= FamilyConfig.Get(_familyLV).needMoney)
            {
                redPointStre2.state = RedPointState.Simple;
            }
        }
    }
 
    public void MethodHA504(HA504_tagMCPlayerTechInfo info)//获取心法技能信息
    {
        for (int i = 0; i < info.TechCnt; i++)
        {
 
            if (!_DicSkill.ContainsKey(info.TechInfoList[i].TechID))
            {
 
                SkillsInformation _skill = new SkillsInformation();
                _skill.id = info.TechInfoList[i].TechID;
                _skill.SkillID = Skill_ID(info.TechInfoList[i].TechID, info.TechInfoList[i].TechLV);
                _skill.SkillLV = info.TechInfoList[i].TechLV;
                _DicSkill.Add(info.TechInfoList[i].TechID, _skill);
 
            }
            else
            {
 
                _DicSkill[info.TechInfoList[i].TechID].id = info.TechInfoList[i].TechID;
                _DicSkill[info.TechInfoList[i].TechID].SkillID = Skill_ID(info.TechInfoList[i].TechID, info.TechInfoList[i].TechLV);
                _DicSkill[info.TechInfoList[i].TechID].SkillLV = info.TechInfoList[i].TechLV;
                if (EventHA504 != null)
                    EventHA504();
 
            }
        }
 
        FairyAuMethodRedPoint();
        FairyAuMethodDic();
    }
 
    int Skill_ID(int _id, int _lv)
    {
        string _strID = _id.ToString();
        string _strLV = _lv.ToString();
        string _strAll = null;
        if (_lv < 10)
        {
            _strAll = _strID + "00" + _strLV;
            return int.Parse(_strAll);
        }
        else if (_lv >= 10 && _lv < 100)
        {
            _strAll = _strID + "0" + _strLV;
            return int.Parse(_strAll);
        }
        _strAll = _strID + _strLV;
        return int.Parse(_strAll);
    }
 
    public void CepaContribution(int value)//获取仙盟的贡献度
    {
        _ContributionNumber = value;
        FairyAuMethodDic();
        FairyAuMethodRedPoint();
        if (Event_CepaContribution != null)
            Event_CepaContribution();
    }
 
 
}