少年修仙传客户端代码仓库
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
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace vnxbqy.UI
{
    
    public class DungeonUseBuffModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
    {
        Dictionary<int, List<int>> m_UseBuffMaps = new Dictionary<int, List<int>>();
        Dictionary<int, Dictionary<int, uint>> m_UseBuffTimes = new Dictionary<int, Dictionary<int, uint>>();
 
        public bool moneyCostRemind { get; set; }
 
        public event Action onUseBuffTimeRefresh;
        public override void Init()
        {
            ParseConfig();
            StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish;
        }
 
        public void OnBeforePlayerDataInitialize()
        {
            m_UseBuffTimes.Clear();
        }
 
        public void OnPlayerLoginOk()
        {
        }
 
        public override void UnInit()
        {
            StageLoad.Instance.onStageLoadFinish -= OnStageLoadFinish;
        }
 
        private void OnStageLoadFinish()
        {
            moneyCostRemind = true;
        }
 
        void ParseConfig()
        {
            var configs = DungeonUseBuffConfig.GetValues();
            foreach (var config in configs)
            {
                List<int> ids = null;
                if (!m_UseBuffMaps.TryGetValue(config.DataMapId, out ids))
                {
                    ids = new List<int>();
                    m_UseBuffMaps.Add(config.DataMapId, ids);
                }
                ids.Add(config.ID);
            }
        }
 
        public bool IsDungeonUseBuff(int mapId)
        {
            return m_UseBuffMaps.ContainsKey(mapId);
        }
 
        public List<int> GetDungeonUseBuffs(int mapId)
        {
            return m_UseBuffMaps.ContainsKey(mapId) ? m_UseBuffMaps[mapId] : null;
        }
 
        public uint GetUseBuffTime(int mapId, int moneyCnt)
        {
            if (m_UseBuffTimes.ContainsKey(mapId)
                && m_UseBuffTimes[mapId].ContainsKey(moneyCnt))
            {
                return m_UseBuffTimes[mapId][moneyCnt];
            }
            return 0;
        }
 
        public void ReceivePackage(HB215_tagMCFBBuyBuffInfo package)
        {
            for (int i = 0; i < package.Cnt; i++)
            {
                var data = package.InfoList[i];
                Dictionary<int, uint> dict = null;
                if (!m_UseBuffTimes.TryGetValue((int)data.MapID, out dict))
                {
                    dict = new Dictionary<int, uint>();
                    m_UseBuffTimes.Add((int)data.MapID, dict);
                }
                dict[data.MoneyCnt] = data.BuyTime;
            }
 
            if (onUseBuffTimeRefresh != null)
            {
                onUseBuffTimeRefresh();
            }
        }
    }
}