少年修仙传客户端代码仓库
hch
3 天以前 600733c8f592cb9e65f2b7a3e110ac1d686e6bfe
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
using vnxbqy.UI;
using System;
using System.Collections.Generic;
using UnityEngine.UI;
using System.Linq;
using LitJson;
 
 
public class NewGuyGiftModel : ILModel<NewGuyGiftModel>
{
    //上一档位购买后才显示下一档位,记录上一档位的购买时间  和当前档位的剩余时间
    VipModel vipModel { get { return ModelCenter.Instance.GetModelEx<VipModel>(); } }
    public List<int> ctgIDs = new List<int>();
    List<int> showAfterTimes = new List<int>();  //上一档位结束后多久显示下一档位
    int buyShowSeconds = 24 * 3600;  //档位显示的最长时间
    public int buyPlayerID = 0; //记录购买的玩家ID, 防切账号导致问题(充值是切出应用外太久会导致掉线)
    public int buyCTGID = 0;
    public List<int> salePerInfo = new List<int>();
    protected override void Init()
    {
        GameEvent.afterPlayerDataInitializeEvent += OnAfterPlayerDataInitialize;
        vipModel.rechargeCountEvent += RechargeCountEvent;
        var config = FuncConfigConfig.Get("newguygift");
        ctgIDs = JsonMapper.ToObject<List<int>>(config.Numerical1);
        showAfterTimes = JsonMapper.ToObject<List<int>>(config.Numerical2);
        buyShowSeconds = int.Parse(config.Numerical3);
        salePerInfo = JsonMapper.ToObject<List<int>>(config.Numerical4);
    }
    protected override void UnInit()
    {
        GameEvent.afterPlayerDataInitializeEvent -= OnAfterPlayerDataInitialize;
        vipModel.rechargeCountEvent -= RechargeCountEvent;
    }
 
    public void OnAfterPlayerDataInitialize()
    {
        if (buyPlayerID != PlayerDatas.Instance.PlayerId)
        { 
            buyPlayerID = 0;
            buyCTGID = 0;
        }
    }
 
 
    private void RechargeCountEvent(int id)
    {
        if (buyPlayerID == PlayerDatas.Instance.PlayerId && buyCTGID == id)
        {
            VipModel.RechargeCount rechargeCount;
            vipModel.TryGetRechargeCount(id, out rechargeCount);
            if (rechargeCount.totalCount > 0)
            { 
                LocalSave.SetInt("xrlbbuy" + PlayerDatas.Instance.PlayerId, TimeUtility.AllSeconds);
                LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, 0);
                buyPlayerID = 0;
                buyCTGID = 0;
            }
        }
    }
 
    //获取当前要显示的充值档位 0表示不显示
    //xrlbbuy 记录上一档位的购买时间
    //showxrlb 记录上一次开始显示的时间
    //xrlbPassIndex 记录当前显示的档位
    public int RefreshShowCtgID()
    {
        return 0;
        if (PlayerDatas.Instance.baseData.LV < 70)
            return 0;
 
        int index = LocalSave.GetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId); //当前显示的档位
        index--;
 
        if (index >= ctgIDs.Count)
            return 0;
 
        int buyIndex = -1;
        //重置数据
        VipModel.RechargeCount rechargeCount;
        
        for (int i = 0; i < ctgIDs.Count; i++)
        {
            if (vipModel.TryGetRechargeCount(ctgIDs[i], out rechargeCount))
            {
                if (rechargeCount.totalCount == 0)
                {
                    buyIndex = i;
                    break;
                }
            }
        }
 
        if (buyIndex == -1)
        {
            //全部已购买
            LocalSave.SetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId, ctgIDs.Count + 1);
            return 0;
        }
        if (buyIndex > index)
        {
            //已购买的档位大于当前显示的档位,更新显示档位
            index = buyIndex;
            LocalSave.SetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId, index + 1);
        }
 
        //判断是否到可显示时间
        if (TimeUtility.AllSeconds - LocalSave.GetInt("xrlbbuy" + PlayerDatas.Instance.PlayerId) >= showAfterTimes[index])
        {
            if (LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId) == 0)
            {
                //开始显示
                LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, TimeUtility.AllSeconds);
                AutoOpen();
            }
            else if (TimeUtility.AllSeconds - LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId) >= buyShowSeconds)
            {
                //过期进入下一档位的显示流程
                index++;
                LocalSave.SetInt("xrlbbuy" + PlayerDatas.Instance.PlayerId, TimeUtility.AllSeconds);
                LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, 0);
                LocalSave.SetInt("xrlbPassIndex" + PlayerDatas.Instance.PlayerId, index + 1);
                if (index >= ctgIDs.Count)
                {
                    //全部已购买
                    return 0;
                }
 
            }
            return ctgIDs[index];
        }
 
        if (LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId) != 0)
        {
            LocalSave.SetInt("showxrlb" + PlayerDatas.Instance.PlayerId, 0);
        }
        //还未到显示时间
        return 0;
    }
 
    void AutoOpen()
    {
        if (WindowCenter.Instance.IsOpen<MainInterfaceWin>() && !NewBieCenter.Instance.inGuiding
            && !WindowCenter.Instance.ExistAnyFullScreenOrMaskWin() && !StageLoad.Instance.isLoading
            && !ModelCenter.Instance.GetModel<TreasureModel>().newGotShowing)
        {
            WindowCenter.Instance.OpenIL<NewGuyGiftWin>();
        }
    }
 
    public int GetShowCTGTime()
    {
        return Math.Max(buyShowSeconds - (TimeUtility.AllSeconds - LocalSave.GetInt("showxrlb" + PlayerDatas.Instance.PlayerId)), 0);
    }
 
}