少年修仙传客户端代码仓库
client_Wu Xijin
2019-02-25 cdb0198fb8e85811ec1e06b15f36df9cbe0fdb9a
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
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
using System;
using Snxxz.UI;
//仙盟宝库
public class FamilyStoreItem//家族仓库物品信息
{
    public int Index;//仓库格子索引
    public int ItemID;//物品ID
    public ItemJsonData ItemData;
    public Dictionary<int, List<int>> _UserData;
    [Serializable]
    public class ItemJsonData
    {
        public string UserData;
        public int IsSuit;
        public int EquipGS;
    }
}
 
public class FamilyActionInfoClass//接收家族行为信息
{
    public int FamilyID;//家族ID
    public int ActionType;//类型
    public int Time;//时间
    public string Name;//玩家名
    public int OperationType;//操作类型1-捐献,2-兑换,3-销毁
    public int PlayerID;//操作的玩家ID;
    public int ItemID;//物品ID
    public ItemJsonData ItemData;
    public Dictionary<int, List<int>> _UserData;
    [Serializable]
    public class ItemJsonData
    {
        public int ItemID;
        public string UserData;
        public int IsSuit;
        public int EquipGS;
    }
 
}
 
 
public class PlayerFairyAuTreasureData : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
{
 
    public Dictionary<int, FamilyStoreItem> _DicfamilyStoreItem = new Dictionary<int, FamilyStoreItem>();//家族仓库物品信息
 
    public List<FamilyActionInfoClass> _InformationList = new List<FamilyActionInfoClass>();
    public delegate void OnFairyAuIntegral();
    public static event OnFairyAuIntegral Event_FairyAuIntegral;//用于仙盟积分的刷新
    public delegate void OnFamilyActionInfo();
    public static event OnFamilyActionInfo Event_FamilyActionInfo;//家族行为信息的刷新
    public delegate void OnFamilyStoreItemInfo();
    public static event OnFamilyStoreItemInfo Event_FamilyStoreItemInfo;//仓库信息的刷新
    public static event Action<List<int>> Del_FamilyStoreItemInfo;//仓库信息物品的删除
    PackModel _playerPack;
    PackModel playerPack { get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); } }
    public int _FairyAuIntegral = 0;//获取仙盟积分
 
    public List<int> JumpItemID = new List<int>();//从跳转到仙盟仓库需要选中高亮
    List<int> EquipmentList = new List<int>();//关于装备位置
    public bool IsShowPoint = false;//是否显示红点
    private const int Redpoint_key1 = 1070103;
    public Redpoint redPointStre1 = new Redpoint(10701, Redpoint_key1);//仙盟仓库红点
 
    public override void Init()
    {
        var funConfig = FuncConfigConfig.Get("StrengthenDisplay");
        int[] List = ConfigParse.GetMultipleStr<int>(funConfig.Numerical1);
        EquipmentList.Clear();
        for (int i = 0; i < List.Length; i++)
        {
            EquipmentList.Add(List[i]);
        }
    }
 
    public override void UnInit()
    {
 
    }
 
    public void OnBeforePlayerDataInitialize()
    {
        _DicfamilyStoreItem.Clear();
        _FairyAuIntegral = 0;
    }
    public void OnPlayerLoginOk()
    {
        PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= Updatefighting;//数据的刷新(h0418)
        PlayerDatas.Instance.PlayerDataRefreshInfoEvent += Updatefighting;
        WarehouseTipsWin.RedPointUpdate -= RedPointUpdate;
        WarehouseTipsWin.RedPointUpdate += RedPointUpdate;
    }
 
   
 
    public void FairyAuIntegral(int value)//获取仙盟积分
    {
        _FairyAuIntegral = value;
        if (Event_FairyAuIntegral != null)
            Event_FairyAuIntegral();
    }
 
    public void FamilyStoreItemInfo(HA406_tagGCFamilyStoreItemInfo info)//家族仓库信息
    {
        if (!_DicfamilyStoreItem.ContainsKey(0))
        {
            FamilyStoreItem _FamilyStoreItemP = new FamilyStoreItem();
            _FamilyStoreItemP.Index = 0;
            FuncConfigConfig _PetFoodExchange = FuncConfigConfig.Get("PetFoodExchange");
            _FamilyStoreItemP.ItemID = int.Parse(_PetFoodExchange.Numerical1);
            _DicfamilyStoreItem.Add(0, _FamilyStoreItemP);
        }
 
        for (int i = 0; i < info.Count; i++)
        {
            if (_DicfamilyStoreItem.ContainsKey(info.StoreItemList[i].Index + 1))
                continue;
            FamilyStoreItem _FamilyStoreItem = new FamilyStoreItem();
            _FamilyStoreItem.ItemData = JsonUtility.FromJson<FamilyStoreItem.ItemJsonData>(info.StoreItemList[i].ItemData);
            _FamilyStoreItem.Index = info.StoreItemList[i].Index + 1;
            _FamilyStoreItem.ItemID = (int)info.StoreItemList[i].ItemID;
            _FamilyStoreItem._UserData = ConfigParse.Analysis(_FamilyStoreItem.ItemData.UserData);
            _DicfamilyStoreItem.Add((int)info.StoreItemList[i].Index + 1, _FamilyStoreItem);
        }
 
        if (Event_FamilyStoreItemInfo != null)
        {
            Event_FamilyStoreItemInfo();
        }          
        IsShowRedPoint();
    }
    List<int> List = new List<int>();
    public void WarehouseToRefresh(byte[] _list)//仓库刷新
    {
        List.Clear();
        for (int i = 0; i < _list.Length; i++)
        {
            List.Add(_list[i] + 1);
        }
        if (Del_FamilyStoreItemInfo != null)
        {
            Del_FamilyStoreItemInfo(List);
        }
        IsShowRedPoint();
 
 
    }
    public void FamilyStoreDel(int _index, int ClearType)//家族仓库物品删除(清除的格子索引, 仅单格子清除时有效,从0开始代表第一格,0-单格子清除; 1-所有物品清除)
    {
        if (_DicfamilyStoreItem.ContainsKey(_index + 1) && ClearType == 0)
        {
            _DicfamilyStoreItem.Remove(_index + 1);
        }
        if (ClearType == 1)
        {
            _DicfamilyStoreItem.Clear();
            if (!_DicfamilyStoreItem.ContainsKey(0))
            {
                FamilyStoreItem _FamilyStoreItemP = new FamilyStoreItem();
                _FamilyStoreItemP.Index = 0;
                FuncConfigConfig _PetFoodExchange = FuncConfigConfig.Get("PetFoodExchange");
                _FamilyStoreItemP.ItemID = int.Parse(_PetFoodExchange.Numerical1);
                _DicfamilyStoreItem.Add(0, _FamilyStoreItemP);
            }
        }
    }
 
    public void FamilyActionInfo(HA403_tagGCFamilyActionInfo info)//接收家族行为信息
    {
        _InformationList.Clear();
        for (int i = 0; i < info.Count; i++)
        {
            FamilyActionInfoClass _FamilyActionInfoClass = new FamilyActionInfoClass();
            _FamilyActionInfoClass.FamilyID = (int)info.FamilyID;
            _FamilyActionInfoClass.ActionType = (int)info.ActionType;
            _FamilyActionInfoClass.Time = (int)info.FamilyActionList[i].Time;
            _FamilyActionInfoClass.Name = info.FamilyActionList[i].Name;
            _FamilyActionInfoClass.OperationType = (int)info.FamilyActionList[i].Value1;
            _FamilyActionInfoClass.PlayerID = (int)info.FamilyActionList[i].Value2;
            _FamilyActionInfoClass.ItemID = (int)info.FamilyActionList[i].Value3;
            _FamilyActionInfoClass.ItemData = JsonUtility.FromJson<FamilyActionInfoClass.ItemJsonData>(info.FamilyActionList[i].UseData);
            _FamilyActionInfoClass._UserData = ConfigParse.Analysis(_FamilyActionInfoClass.ItemData.UserData);
            _InformationList.Add(_FamilyActionInfoClass);
 
        }
        if (Event_FamilyActionInfo != null)
            Event_FamilyActionInfo();//家族行为信息的刷新
 
    }
 
    private bool IsEquipmentComparison()
    {
        bool IsBool = false;
        SinglePack singlePack = playerPack.GetSinglePack(PackType.Equip);
        for (int i = 0; i < EquipmentList.Count; i++)
        {
            ItemModel ItemModel = singlePack.GetItemByIndex(i);
            int Type = i;
            if (ItemModel != null)
            {
                foreach (var key in _DicfamilyStoreItem.Keys)
                {
                    if (key == 0)
                    {
                        continue;
                    }
                    int ItemId = _DicfamilyStoreItem[key].ItemID;
                    var itemConfig = ItemConfig.Get(ItemId);
                    int RealmLevel = PlayerDatas.Instance.baseData.realmLevel;
                    int equipScore = ItemLogicUtility.Instance.GetEquipScore(PackType.Equip, ItemId, _DicfamilyStoreItem[key]._UserData);
                    if (ItemModel.config.EquipPlace == Type && RealmLevel >= itemConfig.RealmLimit && equipScore >= ItemModel.equipScore)
                    {
                        IsBool = true;
                    }
                }
            }
            else
            {
                foreach (var key in _DicfamilyStoreItem.Keys)
                {
                    if (key == 0)
                    {
                        continue;
                    }
                    int ItemId = _DicfamilyStoreItem[key].ItemID;
                    var itemConfig = ItemConfig.Get(ItemId);
                    int RealmLevel = PlayerDatas.Instance.baseData.realmLevel;
                    if (itemConfig.EquipPlace == Type && RealmLevel >= itemConfig.RealmLimit)
                    {
                        IsBool = true;
                    }
                }
            }
        }
        return IsBool;
    }
    private void IsShowRedPoint()
    {
        int GetDayOfYear = DateTime.Now.DayOfYear;
        string strKey= "Treasure"+ PlayerDatas.Instance.baseData.PlayerID;
        int day = LocalSave.GetInt(strKey);
        if (day != GetDayOfYear && IsEquipmentComparison())
        {
            LocalSave.SetInt(strKey, GetDayOfYear);
            IsShowPoint = true;
        }
        if (IsShowPoint)
        {
            redPointStre1.state = RedPointState.Simple;
        }
        else
        {
            redPointStre1.state = RedPointState.None;
        }
       
    }
    private void Updatefighting(PlayerDataRefresh obj)//刷新境界
    {
        if (obj == PlayerDataRefresh.OfficialRank)
        {
            IsShowRedPoint();
        }
    }
    private void RedPointUpdate()
    {
        IsShowRedPoint();
    }
}