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(); } } 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; } /// /// key---世界等级上限 value---预览物品id /// public Dictionary fairyBossAwardDict { get; private set; } public List m_LeagueTableHides { get; private set; } public string leagueTableName { get; private set; } private void ParseConfig() { FuncConfigConfig cfg = Config.Instance.Get("FamilyBossOpen"); MapId = int.Parse(cfg.Numerical1); OpenFairyBossNeed = int.Parse(cfg.Numerical2); FairyBossStartHour = ConfigParse.GetMultipleStr(cfg.Numerical3)[0]; FairyBossEndHour = ConfigParse.GetMultipleStr(cfg.Numerical3)[1]; FairyBossWeekCnt = int.Parse(cfg.Numerical4); cfg = Config.Instance.Get("FamilyBossInfo"); fairyBossInfo = cfg.Numerical1; fairyBossNpcId = int.Parse(cfg.Numerical2); fairyBossFood = int.Parse(cfg.Numerical3); fairyBossAwardDict = new Dictionary(); cfg = Config.Instance.Get("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(_json[_key].ToJson())); } cfg = Config.Instance.Get("LeagueTable"); m_LeagueTableHides = new List(); m_LeagueTableHides.AddRange(ConfigParse.GetMultipleStr(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 = Config.Instance.Get(_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]); } } }