少年修仙传客户端代码仓库
leonard Wu
2018-08-02 a38909a99dd4108c110611a3575122fe77915a99
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
using System;
using System.Collections;
using System.Collections.Generic;
using TableConfig;
using UnityEngine;
namespace Snxxz.UI
{
    public class FairyBossModel : Model
    {
        public override void Init()
        {
            ParseConfig();
            TimeMgr.Instance.OnHourEvent += UpdateRedPoint;
            StageManager.Instance.onStageLoadFinish+= OnStageLoadFinish;
        }
 
        public override void UnInit()
        {
            TimeMgr.Instance.OnHourEvent -= UpdateRedPoint;
            StageManager.Instance.onStageLoadFinish -= OnStageLoadFinish;
        }
 
        DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
 
        public int MapId { get; private set; }
        public int OpenFairyBossNeed { get; private set; }
        public int FairyBossStartHour { get; private set; }
        public int FairyBossEndHour { get; private set; }
        public int FairyBossWeekCnt { get; private set; }
        public string fairyBossInfo { get; private set; }
        public int fairyBossNpcId { get; private set; }
        public int fairyBossFood { get; private set; }
        public int fairyBossContinueTime { get; private set; }
        public int fairyBossPrepareTime { get; private set; }
        /// <summary>
        /// key---世界等级上限 value---预览物品id
        /// </summary>
        public Dictionary<int, int[]> fairyBossAwardDict { get; private set; }
 
        public List<int> m_LeagueTableHides { get; private set; }
        public string leagueTableName { get; private set; }
 
        private void ParseConfig()
        {
            FuncConfigConfig cfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("FamilyBossOpen");
            MapId = int.Parse(cfg.Numerical1);
            OpenFairyBossNeed = int.Parse(cfg.Numerical2);
            FairyBossStartHour = ConfigParse.GetMultipleStr<int>(cfg.Numerical3)[0];
            FairyBossEndHour = ConfigParse.GetMultipleStr<int>(cfg.Numerical3)[1];
            FairyBossWeekCnt = int.Parse(cfg.Numerical4);
            cfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("FamilyBossInfo");
            fairyBossInfo = cfg.Numerical1;
            fairyBossNpcId = int.Parse(cfg.Numerical2);
            fairyBossFood = int.Parse(cfg.Numerical3);
            fairyBossAwardDict = new Dictionary<int, int[]>();
            cfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("FamilyBossDrop");
            var _json = LitJson.JsonMapper.ToObject(cfg.Numerical1);
            foreach (var _key in _json.Keys)
            {
                var _worldLv = int.Parse(_key);
                fairyBossAwardDict.Add(_worldLv, LitJson.JsonMapper.ToObject<int[]>(_json[_key].ToJson()));
            }
            cfg = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("LeagueTable");
            m_LeagueTableHides = new List<int>();
            m_LeagueTableHides.AddRange(ConfigParse.GetMultipleStr<int>(cfg.Numerical1));
            leagueTableName = cfg.Numerical2;
 
            GetDungeonContinueTime();
        }
 
        Redpoint redpoint = new Redpoint(10701, 1070102);
 
        private void OnStageLoadFinish()
        {
            UpdateRedPoint();
            GameObject _go = GameObject.Find(leagueTableName);
            if (_go != null)
            {
                if (m_LeagueTableHides.Contains(PlayerDatas.Instance.baseData.MapID))
                {
                    _go.SetActive(false);
                }
                else
                {
                    _go.SetActive(true);
                }
            }
        }
 
        public void UpdateRedPoint()
        {
            redpoint.state = RedPointState.None;
            PlayerFairyData fairyData = PlayerDatas.Instance.fairyData;
            if (!fairyData.HasFairy)
            {
                return;
            }
            if (fairyData.weekBossOpenCnt >= FairyBossWeekCnt)
            {
                return;
            }
            if (PlayerDatas.Instance.baseData.MapID == MapId)
            {
                return;
            }
            if (TimeUtility.Hour < FairyBossStartHour || TimeUtility.Hour >= FairyBossEndHour)
            {
                return;
            }
            if (fairyData.IsBossOpen == 0)
            {
                if (fairyData.fairy.FamilyHornor < OpenFairyBossNeed)
                {
                    return;
                }
                if (fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanOpenBoss))
                {
                    redpoint.state = RedPointState.Simple;
                }
            }
            else
            {
                redpoint.state = RedPointState.Simple;
            }
        }
 
        public bool IsFairyBossOpen()
        {
            PlayerFairyData fairyData = PlayerDatas.Instance.fairyData;
            if (!fairyData.HasFairy)
            {
                return false;
            }
            if (TimeUtility.Hour < FairyBossStartHour || TimeUtility.Hour >= FairyBossEndHour)
            {
                return false;
            }
            return fairyData.IsBossOpen > 0;
        }
 
        private void GetDungeonContinueTime()
        {
            var _list = dungeonModel.DungeonMapDungeons(MapId);
            var _dungeonCfg = ConfigManager.Instance.GetTemplate<DungeonConfig>(_list[0]);
            var _stepTime = _dungeonCfg.StepTime;
            _stepTime = _stepTime.Replace("[", string.Empty);
            _stepTime = _stepTime.Replace("]", string.Empty);
            fairyBossContinueTime = int.Parse(_stepTime.Split(',')[1]);
            fairyBossPrepareTime = int.Parse(_stepTime.Split(',')[0]);
        }
    }
}