using vnxbqy.UI; using System.Collections; using System.Collections.Generic; using UnityEngine; using System; //心法科技 public class SkillsInformation { public int id;//单位数id public int SkillID;//技能ID public int SkillLV;//技能等级 } public class PlayerMethodData : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public Dictionary _DicSkill = new Dictionary();//存储心法 public Dictionary MethodRedPointDic = new Dictionary();//心法列表红点 public Dictionary MethodRedPointBtnDic = new Dictionary();//心法按钮红点 public delegate void MtehodHA504(); public static event MtehodHA504 EventHA504;//刷新心发技能信息 public delegate void OnCepaContribution(); public static event OnCepaContribution Event_CepaContribution;//用于仙盟贡献度的刷新 public int _ContributionNumber = 0;//仙盟贡献度 public Dictionary MethodDataNeedLVDic = new Dictionary();//心法下表对应的所需学习等级 FairyModel fairyModel { get { return ModelCenter.Instance.GetModel(); } } public int FairyHallMax = 0;//获取仙盟大厅最大等级 public override void Init() { string str = FuncConfigConfig.Get("FamilyTechNeedLV").Numerical1; MethodDataNeedLVDic = ConfigParse.GetDic(str); var fairy = FamilyConfig.GetValues(); foreach (var value in fairy) { if (value.familyLV > FairyHallMax) { FairyHallMax = value.familyLV; } } } public override void UnInit() { } public void OnBeforePlayerDataInitialize() { _ContributionNumber = 0; } public void OnPlayerLoginOk() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine; PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;//加入仙盟 PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine;//退出仙盟 PlayerDatas.Instance.playerDataRefreshEvent -= Updatefighting;//数据的刷新(h0418) PlayerDatas.Instance.playerDataRefreshEvent += Updatefighting;//数据的刷新(h0418) FairyAuMethodDic(); FairyAuMethodRedPoint(); } private void Updatefighting(PlayerDataType obj) { if (obj == PlayerDataType.LV) { FairyAuMethodDic(); FairyAuMethodRedPoint(); } } private void OnRefreshFairyInfo()//加入仙盟 { FairyAuHallRedPoint(); FairyAuMethodDic(); FairyAuMethodRedPoint(); } private void OnRefreshFairyMine()//退出仙盟 { if (!PlayerDatas.Instance.fairyData.HasFairy) { foreach (var key in MethodRedPointBtnDic.Keys) { MethodRedPointBtnDic[key].state = RedPointState.None; } } } private const int RedPoint_key1 = 1070101;//心法红点 private Redpoint redPointStre1 = new Redpoint(MainRedDot.FAIRY_REDPOINT_KEY2, RedPoint_key1); public Redpoint fairyHeartRedpoint { get { return redPointStre1; } } private const int RedPoint_key2 = 1070104;//仙盟大厅红点 private Redpoint redPointStre2 = new Redpoint(MainRedDot.FAIRY_REDPOINT_KEY2, RedPoint_key2); private void FairyAuMethodDic()//仙盟心法列表红点 { if (MethodRedPointDic.Count != 0) { return; } foreach (var key in _DicSkill.Keys) { if (!MethodRedPointDic.ContainsKey(key)) { int redPointId = RedPoint_key1 * 10 + key; Redpoint redPointMountStare = new Redpoint(RedPoint_key1, redPointId); MethodRedPointDic.Add(key, redPointMountStare); int redPointId1 = redPointId * 10 + key; Redpoint redPointMountStare1 = new Redpoint(redPointId, redPointId1); MethodRedPointBtnDic.Add(key, redPointMountStare1); } } } private void FairyAuMethodRedPoint()//仙盟心法红点 { if (MethodRedPointBtnDic.Count == 0) { return; } foreach (var key in MethodRedPointBtnDic.Keys) { MethodRedPointBtnDic[key].state = RedPointState.None; } if (!fairyModel.fairyMethodToOpen) { return; } foreach (var key in _DicSkill.Keys) { if (MethodDataNeedLVDic.ContainsKey(_DicSkill[key].id) && PlayerDatas.Instance.baseData.LV >= MethodDataNeedLVDic[_DicSkill[key].id]) { var familyTechConfig = FamilyTechConfig.Get(_DicSkill[key].SkillID + 1); if (_DicSkill[key].SkillLV > 0) { if (familyTechConfig == null) { continue; } if (_ContributionNumber >= familyTechConfig.needPoint) { MethodRedPointBtnDic[key].state = RedPointState.Simple; } } else { if (familyTechConfig == null) { continue; } if (_ContributionNumber >= familyTechConfig.needPoint) { MethodRedPointBtnDic[key].state = RedPointState.Simple; } } } } } public void FairyAuHallRedPoint()//仙盟大厅红点 { redPointStre2.state = RedPointState.None; if (!PlayerDatas.Instance.fairyData.HasFairy) { return; } if ((int)PlayerDatas.Instance.fairyData.mine.FamilyLV >= 2 && (int)PlayerDatas.Instance.fairyData.fairy.FamilyLV < FairyHallMax) { int _familyLV = (int)PlayerDatas.Instance.fairyData.fairy.FamilyLV; if ((int)PlayerDatas.Instance.fairyData.fairy.FamilyMoney >= FamilyConfig.Get(_familyLV).needMoney) { redPointStre2.state = RedPointState.Simple; } } } public void MethodHA504(HA504_tagMCPlayerTechInfo info)//获取心法技能信息 { for (int i = 0; i < info.TechCnt; i++) { if (!_DicSkill.ContainsKey(info.TechInfoList[i].TechID)) { SkillsInformation _skill = new SkillsInformation(); _skill.id = info.TechInfoList[i].TechID; _skill.SkillID = Skill_ID(info.TechInfoList[i].TechID, info.TechInfoList[i].TechLV); _skill.SkillLV = info.TechInfoList[i].TechLV; _DicSkill.Add(info.TechInfoList[i].TechID, _skill); } else { _DicSkill[info.TechInfoList[i].TechID].id = info.TechInfoList[i].TechID; _DicSkill[info.TechInfoList[i].TechID].SkillID = Skill_ID(info.TechInfoList[i].TechID, info.TechInfoList[i].TechLV); _DicSkill[info.TechInfoList[i].TechID].SkillLV = info.TechInfoList[i].TechLV; if (EventHA504 != null) EventHA504(); } } FairyAuMethodRedPoint(); FairyAuMethodDic(); } int Skill_ID(int _id, int _lv) { string _strID = _id.ToString(); string _strLV = _lv.ToString(); string _strAll = null; if (_lv < 10) { _strAll = _strID + "00" + _strLV; return int.Parse(_strAll); } else if (_lv >= 10 && _lv < 100) { _strAll = _strID + "0" + _strLV; return int.Parse(_strAll); } _strAll = _strID + _strLV; return int.Parse(_strAll); } public void CepaContribution(int value)//获取仙盟的贡献度 { _ContributionNumber = value; FairyAuMethodDic(); FairyAuMethodRedPoint(); if (Event_CepaContribution != null) Event_CepaContribution(); } }