using System; using System.Collections; using System.Collections.Generic; using System.Text; using UnityEngine; namespace vnxbqy.UI { public class FairyModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk { public int changeNotifyLevelLimit { get; private set; } DungeonModel dungeonModel { get { return ModelCenter.Instance.GetModel(); } } FairyBossModel fairyBossModel { get { return ModelCenter.Instance.GetModel(); } } public Dictionary> familyActions = new Dictionary>(); public event Action FamilyActionInfoEvent; public event Action fairyCreateTimesUpdate; public override void Init() { ParseConfig(); ParseJiaFairy(); PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine; TimeMgr.Instance.OnSyntonyEvent += OnSyntonyEvent; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; dungeonModel.dungeonCoolDownEvent += OnBeginTimeEvent; StageLoad.Instance.onStageLoadFinish += OnStageLoadFinish; GlobalTimeEvent.Instance.secondEvent += SecondEvent; } private void OnSyntonyEvent(TimeMgr.SyntonyType _type) { if (_type == TimeMgr.SyntonyType.GetFairyInfo) { if (m_RequestFairyInfoCount > 1) { C0F07_tagCGetFamilyInfo pack = new C0F07_tagCGetFamilyInfo(); pack.Type = 0; GameNetSystem.Instance.SendInfo(pack); TimeMgr.Instance.Register(TimeMgr.SyntonyType.GetFairyInfo, 1); m_RequestFairyInfoCount = 1; } else { m_RequestFairyInfoCount = 0; } } } public override void UnInit() { } public void OnBeforePlayerDataInitialize() { fairyRequestRedPoint.state = RedPointState.Quantity; ClearAllFairyRequest(); m_FairyRequesteds.Clear(); m_RequestFairyInfoCount = 0; fairyCreateTimes = 0; completeGuardSky = false; fairyLeagueDugeonCoolDown = false; familyActions.Clear(); } private void OnRefreshFairyInfo() { if (PlayerDatas.Instance.fairyData.HasFairy) { if (!AddFairyRed) { LocalSave.SetBool(StringUtility.Contact(FairyKey, PlayerDatas.Instance.PlayerId), true); } AddFairyRed = true; ClearAllFairyRequest(); } UpdateRedpoint(); UpdateAddFairyRedpoint(); } private void OnRefreshFairyMine() { if (!PlayerDatas.Instance.fairyData.HasFairy) { familyActions.Clear(); } UpdateRedpoint(); } public void GotoFairyWin(int functionOrder = 0) { if (functionOrder == 0) { if (PlayerDatas.Instance.fairyData.HasFairy) { functionOrder = 1; if (RedpointCenter.Instance.GetRedpointState(10701) == RedPointState.Simple) { functionOrder = 1; } else if (RedpointCenter.Instance.GetRedpointState(10702) == RedPointState.Simple) { functionOrder = 2; } else if (RedpointCenter.Instance.GetRedpointState(10704) == RedPointState.Simple) { functionOrder = 4; } else if (RedpointCenter.Instance.GetRedpointState(10705) == RedPointState.Simple) { functionOrder = 5; } } else { functionOrder = 3; } } WindowCenter.Instance.Open(false, functionOrder); } #region 发包 public void SendKickFairy(uint playerID) { var auctionModel = ModelCenter.Instance.GetModel(); if (!auctionModel.SatisfyQuitFairy((int)playerID)) { SysNotifyMgr.Instance.ShowTip("Paimai7"); return; } var pak = new C0F09_tagCDeleteFamilyMember(); pak.MemberID = playerID; GameNetSystem.Instance.SendInfo(pak); } public void SendApplyFairy(uint id) { int limit = FuncOpenLVConfig.Get((int)FuncOpenEnum.Fairy).LimitLV; if (PlayerDatas.Instance.baseData.LV < limit) { ServerTipDetails.DisplayNormalTip(Language.Get("L1106", limit)); return; } if (PlayerDatas.Instance.fairyData.HasFairy) { ServerTipDetails.DisplayNormalTip(Language.Get("HasFairyTip")); return; } CA602_tagCGRequesJoinFamily rqPack = new CA602_tagCGRequesJoinFamily(); rqPack.Type = 0; rqPack.AddFamilyID = id; GameNetSystem.Instance.SendInfo(rqPack); } #endregion public int presentChangeMember { get; set; } private bool m_IsOnAllot = false; public bool IsOnAllot { get { return m_IsOnAllot; } set { m_IsOnAllot = value; } } private int m_RequestFairyInfoCount = 0; #region 配置 public int createFairyLv { get; private set; } public int createFairyCost { get; private set; } public int createFairyFreeCount { get; private set; } public readonly int changeFairyNameItem = 947; public int freeNotifyCount { get; private set; } public int changeNotifyCost { get; private set; } public int fairyFeastDeskNpc { get; private set; } public int fairyCreateTimes { get; private set; } void ParseConfig() { var config = FuncConfigConfig.Get("CreateFamilyMinLV"); createFairyLv = int.Parse(config.Numerical1); config = FuncConfigConfig.Get("CreateFamilyNeedMoney"); createFairyCost = int.Parse(config.Numerical1); createFairyFreeCount = int.Parse(config.Numerical3); config = FuncConfigConfig.Get("FamilyBroadcast"); freeNotifyCount = int.Parse(config.Numerical1); changeNotifyCost = int.Parse(config.Numerical2); config = FuncConfigConfig.Get("FamilyShop"); fairyStoreLimit = int.Parse(config.Numerical2); config = FuncConfigConfig.Get("FamilyPartyDeskNpcID"); fairyFeastDeskNpc = int.Parse(config.Numerical1); config = FuncConfigConfig.Get("SWRHFamilyLV"); guardSkyOpenFairyLv = int.Parse(config.Numerical1); config = FuncConfigConfig.Get("TechFamilyLV"); fairyMethodToLimit = int.Parse(config.Numerical1); config = FuncConfigConfig.Get("FamilyMatchSet"); fairyLeagueLimit = int.Parse(config.Numerical1); config = FuncConfigConfig.Get("FamilyPurview"); changeNotifyLevelLimit = int.Parse(config.Numerical2); config = FuncConfigConfig.Get("FamilyDonate"); donateMaxCount = int.Parse(config.Numerical3); donateCostInfo = ConfigParse.ParseJsonDict(config.Numerical4); } public static string GetFairyGradeLabel(int rank) { rank = Mathf.CeilToInt((float)rank / 4); switch (rank) { case 1: return Language.Get("Fairy_S"); case 2: return Language.Get("Fairy_A"); case 3: return Language.Get("Fairy_B"); case 4: return Language.Get("Fairy_C"); default: return Language.Get("Fairy_D"); } } #endregion public List fairyList = new List(); public int page = 0; public int presentFairy = -1; public bool fairySalaryGet { get; private set; } public int donateCount { get; private set; } public int donateMaxCount { get; private set; } public Dictionary> donateCostInfo = new Dictionary>(); //货币:[额度,获得贡献,活跃令] public void OnSearchPageList() { SendSearchFairyList(page, PlayerFairyData.PageCnt); } public void SendSearchFairyList(int _page, int _pageCnt) { CA401_tagCGViewFamilyPage searchPack = new CA401_tagCGViewFamilyPage(); searchPack.PageIndex = (ushort)_page; searchPack.ShowCount = (byte)_pageCnt; searchPack.SortRulex = 0; searchPack.ViewType = 3; GameNetSystem.Instance.SendInfo(searchPack); } public void SendGetFairySalary() { CA504_tagCMPlayerGetReward _pak = new CA504_tagCMPlayerGetReward(); _pak.RewardType = (byte)GotServerRewardType.Def_RewardType_FairyDayAward; _pak.DataEx = (uint)0; _pak.DataExStrLen = 0; _pak.DataExStr = string.Empty; GameNetSystem.Instance.SendInfo(_pak); } public event Action UpdateFairySalaryEvent; public void UpdateFairySalary(HA506_tagMCFamilyDayAward netPack) { fairySalaryGet = netPack.GetState == 1; donateCount = netPack.MoneyDonateCount; if (UpdateFairySalaryEvent != null) { UpdateFairySalaryEvent(); } UpdateRedpoint(); } private List m_FairyRequesteds = new List(); public void UpdateFairyRequested(HA501_tagMCNotifyRequestJoinFamilyInfo _package) { m_FairyRequesteds.Clear(); for (int i = 0; i < _package.RequestCount; i++) { m_FairyRequesteds.Add((int)_package.RequestAddFamilyInfo[i].RequestFamilyID); } } public void ReceivePackage(HA40D_tagGCServerCreatFamilyTimes package) { fairyCreateTimes = (int)package.Times; if (fairyCreateTimesUpdate != null) { fairyCreateTimesUpdate(); } } public bool FairyRequested(int _fairyId) { return m_FairyRequesteds.Contains(_fairyId); } public void UpdateFairyInfo() { if (m_RequestFairyInfoCount == 0) { C0F07_tagCGetFamilyInfo pack = new C0F07_tagCGetFamilyInfo(); pack.Type = 0; GameNetSystem.Instance.SendInfo(pack); TimeMgr.Instance.Register(TimeMgr.SyntonyType.GetFairyInfo, 1); } m_RequestFairyInfoCount++; } public bool InSameFairy(int playerId) { if (!PlayerDatas.Instance.fairyData.HasFairy) { return false; } return PlayerDatas.Instance.fairyData.GetMember(playerId) != null; } #region 成员列表排序 private int m_SortType = 4; public int sortType { get { return m_SortType; } set { m_SortType = value; } } private bool m_Up = false; public bool up { get { return m_Up; } set { m_Up = value; } } public List sortFairyMembers = new List(); public void OnSort(int type) { if (sortType == type) { up = !up; } else { up = false; } sortType = type; if (sortFairyMembers.Count > 0) { sortFairyMembers.Sort(Compare); } } public int Compare(PlayerFairyData.FairyMember x, PlayerFairyData.FairyMember y) { int attach = up ? 1 : -1; //在线0 挂机1 离线2 uint olx = 2 - (x.Exattr2 > 1 ? 2 : x.Exattr2); uint oly = 2 - (y.Exattr2 > 1 ? 2 : y.Exattr2); switch (sortType) { case 1: { if (x.LV.CompareTo(y.LV) != 0) return attach * x.LV.CompareTo(y.LV); if (olx.CompareTo(oly) != 0) return -olx.CompareTo(oly); if (x.Exattr2.CompareTo(y.Exattr2) != 0) return x.Exattr2.CompareTo(y.Exattr2); if (x.FamilyLV.CompareTo(y.FamilyLV) != 0) return -x.FamilyLV.CompareTo(y.FamilyLV); if (x.FamilyActiveValue.CompareTo(y.FamilyActiveValue) != 0) return -x.FamilyActiveValue.CompareTo(y.FamilyActiveValue); } break; case 2: { if (x.FamilyLV.CompareTo(y.FamilyLV) != 0) return attach * x.FamilyLV.CompareTo(y.FamilyLV); if (olx.CompareTo(oly) != 0) return -olx.CompareTo(oly); if (x.Exattr2.CompareTo(y.Exattr2) != 0) return x.Exattr2.CompareTo(y.Exattr2); if (x.LV.CompareTo(y.LV) != 0) return -x.LV.CompareTo(y.LV); if (x.FamilyActiveValue.CompareTo(y.FamilyActiveValue) != 0) return -x.FamilyActiveValue.CompareTo(y.FamilyActiveValue); } break; case 3: { if (x.FamilyActiveValue.CompareTo(y.FamilyActiveValue) != 0) return attach * x.FamilyActiveValue.CompareTo(y.FamilyActiveValue); if (olx.CompareTo(oly) != 0) return -olx.CompareTo(oly); if (x.Exattr2.CompareTo(y.Exattr2) != 0) return x.Exattr2.CompareTo(y.Exattr2); if (x.FamilyLV.CompareTo(y.FamilyLV) != 0) return -x.FamilyLV.CompareTo(y.FamilyLV); if (x.LV.CompareTo(y.LV) != 0) return -x.LV.CompareTo(y.LV); } break; case 4: { if (olx.CompareTo(oly) != 0) return attach * olx.CompareTo(oly); if (x.Exattr2.CompareTo(y.Exattr2) != 0) return attach * x.Exattr2.CompareTo(y.Exattr2); if (x.FamilyLV.CompareTo(y.FamilyLV) != 0) return -x.FamilyLV.CompareTo(y.FamilyLV); if (x.LV.CompareTo(y.LV) != 0) return -x.LV.CompareTo(y.LV); if (x.FamilyActiveValue.CompareTo(y.FamilyActiveValue) != 0) return -x.FamilyActiveValue.CompareTo(y.FamilyActiveValue); } break; } return 1; } #endregion #region 邀请入盟 public void SendInviteFairy(int _playerId, string _playerName) { C0F05_tagCAddFamilyPlayer _pak = new C0F05_tagCAddFamilyPlayer(); _pak.TagID = (uint)_playerId; _pak.TagName = _playerName; GameNetSystem.Instance.SendInfo(_pak); } public Dictionary fairyRequestDict = new Dictionary(); public event Action UpdateFairyRequestEvent; private Redpoint fairyRequestRedPoint = new Redpoint(33); public Redpoint FairyRequestRedPoint { get { return fairyRequestRedPoint; } } public void UpdateFairyRequest(H0F04_tagFamilyAskIfJoin vNetData) { if (!fairyRequestDict.ContainsKey((int)vNetData.FamilyID)) { FairyRequest _request = new FairyRequest() { fairyId = (int)vNetData.FamilyID, leaderId = (int)vNetData.LeaderID, leaderName = vNetData.LeaderName, fairyName = vNetData.FamilyName, }; fairyRequestDict.Add((int)vNetData.FamilyID, _request); } fairyRequestRedPoint.count = fairyRequestDict.Count; if (UpdateFairyRequestEvent != null) { UpdateFairyRequestEvent(); } } public void RemoveFairyRequest(int _fairyId) { if (fairyRequestDict.ContainsKey(_fairyId)) { fairyRequestDict.Remove(_fairyId); } fairyRequestRedPoint.count = fairyRequestDict.Count; if (UpdateFairyRequestEvent != null) { UpdateFairyRequestEvent(); } } public void ClearAllFairyRequest() { fairyRequestRedPoint.count = 0; fairyRequestDict.Clear(); if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } if (UpdateFairyRequestEvent != null) { UpdateFairyRequestEvent(); } } public void AgreeFairyRequest(int _fairyId) { if (fairyRequestDict.ContainsKey(_fairyId)) { C0F08_tagAskJoinFamilyReply _pak = new C0F08_tagAskJoinFamilyReply(); _pak.TagPlayerID = (uint)fairyRequestDict[_fairyId].leaderId; _pak.IsOK = 1; GameNetSystem.Instance.SendInfo(_pak); if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } } } public class FairyRequest { public int fairyId; public int leaderId; public string leaderName; public string fairyName; } #endregion #region 仙盟名限制 public bool CheckFairyNameLimit(string _name, out int errorCode) { errorCode = 0; if (string.IsNullOrEmpty(_name)) { errorCode = 0; return false; } if (DirtyWordConfig.IsDirtWord(_name) || UIHelper.HasSpecialCharac(_name) || DirtyNameConfig.IsDirtName(_name)) { errorCode = 1; return false; } return true; } public void ShowFairyNameErrorTip(int _errorCode) { switch (_errorCode) { case 0: SysNotifyMgr.Instance.ShowTip("FamilyNameChangeNoNull"); break; case 1: SysNotifyMgr.Instance.ShowTip("FamilyNameChangeUnlegal"); break; } } public void SendChangeFairyName(string _name, int _itemIndex) { LanguageVerify.Instance.VerifyFairy(_name, 2, PlayerDatas.Instance.fairyData.fairy.FamilyName, PlayerDatas.Instance.fairyData.mine.FamilyLV, (bool ok, string content) => { CA611_tagCMRenameFamily _pak = new CA611_tagCMRenameFamily(); _pak.NewName = content; _pak.ItemIndex = (byte)_itemIndex; _pak.NewNameLen = (byte)Encoding.UTF8.GetBytes(content).Length; GameNetSystem.Instance.SendInfo(_pak); }); } public event Action UpdateFairyChangeNameEvent; public void UpdateFairyChangeName(H0F07_tagFamilyRenameResult _package) { if (UpdateFairyChangeNameEvent != null) { UpdateFairyChangeNameEvent(_package.Reasult); } } #endregion #region 守卫人皇 public bool completeGuardSky { get;private set; } public int guardSkyOpenFairyLv { get; private set; } public bool SatisfyGuardSkyFairyLv() { var fairyData = PlayerDatas.Instance.fairyData; if (!fairyData.HasFairy || fairyData.fairy == null) { return false; } return fairyData.fairy.FamilyLV >= guardSkyOpenFairyLv; } public event Action guardSkyCompleteEvent; public void UpdateGuardSky(bool _hasJoin) { completeGuardSky = _hasJoin; if (guardSkyCompleteEvent != null) { guardSkyCompleteEvent(); } } #endregion #region 红点 private Redpoint m_SalaryRedpoint = new Redpoint(10701, 1070110); private Redpoint m_DonateRedpoint = new Redpoint(10701, 1070111); public Redpoint fairySalaryRedpoint { get { return m_SalaryRedpoint; } } private void UpdateRedpoint() { //m_SalaryRedpoint.state = RedPointState.None; m_DonateRedpoint.state = RedPointState.None; if (!PlayerDatas.Instance.fairyData.HasFairy) { return; } //m_SalaryRedpoint.state = fairySalaryGet ? RedPointState.None : RedPointState.Simple; m_DonateRedpoint.state = donateCount < donateMaxCount ? RedPointState.Simple : RedPointState.None; } private void OnFuncStateChangeEvent(int _id) { if (_id == (int)FuncOpenEnum.Fairy) { UpdateAddFairyRedpoint(); } } private Redpoint m_FairyListRedpoint = new Redpoint(107, 10703); private Redpoint m_AddFairyRedpoint = new Redpoint(10703, 1070301); private const string FairyKey = "FairyAdd"; private bool AddFairyRed = false; public void UpdateAddFairyRedpoint() { m_AddFairyRedpoint.state = RedPointState.None; if (AddFairyRed) { return; } if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Fairy)) { return; } if (PlayerDatas.Instance.fairyData.HasFairy) { return; } if (jiaFairyIds.Count > 0) { m_AddFairyRedpoint.state = RedPointState.Simple; return; } var _list = PlayerDatas.Instance.fairyData.GetFairyListByPage(0); if (_list != null && _list.Count > 0) { for (int i = 0; i < _list.Count; i++) { var _cfg = FamilyConfig.Get(_list[i].FamilyLV); if (_cfg != null) { if (_list[i].AcceptJoin == 1 && _list[i].MemberCount < _cfg.memberCnt) { m_AddFairyRedpoint.state = RedPointState.Simple; break; } } } } } public void OnPlayerLoginOk() { page = 0; OnSearchPageList(); AddFairyRed = LocalSave.GetBool(StringUtility.Contact(FairyKey, PlayerDatas.Instance.PlayerId)); UpdateFairyInfo(); } #endregion #region 假仙盟 public List jiaFairyNames { get; private set; } public int jiaFairyCount { get; private set; } public List jiaFairyIds { get; private set; } public event Action JiaFairyUpdateEvent; public const int JiaFairyStartIndex = 100000000; private void ParseJiaFairy() { jiaFairyIds = new List(); jiaFairyNames = new List(); var config = FuncConfigConfig.Get("FakeFamilyName"); jiaFairyNames.AddRange(LitJson.JsonMapper.ToObject(config.Numerical1)); jiaFairyCount = int.Parse(config.Numerical2); } public void UpdateJiaId(uint[] _ids) { jiaFairyIds.Clear(); if (_ids != null && _ids.Length > 0) { for (int i = 0; i < _ids.Length; i++) { jiaFairyIds.Add((int)_ids[i]); } } if (JiaFairyUpdateEvent != null) { JiaFairyUpdateEvent(); } } #endregion #region 仙盟商店开启 public int fairyStoreLimit { get; private set; } public bool fairyStoreOpen { get { if (PlayerDatas.Instance.fairyData.HasFairy) { var fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null && fairy.FamilyLV >= fairyStoreLimit) { return true; } } return false; } } public void ProcessErrorTip() { if (!PlayerDatas.Instance.fairyData.HasFairy) { SysNotifyMgr.Instance.ShowTip("DailyQuestwinUnionLimit"); } else if (PlayerDatas.Instance.fairyData.fairy.FamilyLV < fairyStoreLimit) { SysNotifyMgr.Instance.ShowTip("FairyStoreOpenLimit", fairyStoreLimit); } } #endregion #region 仙盟心法开启 public int fairyMethodToLimit { get; private set; } public bool fairyMethodToOpen { get { if (PlayerDatas.Instance.fairyData.HasFairy) { var fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null && fairy.FamilyLV >= fairyMethodToLimit) { return true; } } return false; } } public void ProcessMethodToErrorTip() { if (!PlayerDatas.Instance.fairyData.HasFairy) { SysNotifyMgr.Instance.ShowTip("DailyQuestwinUnionLimit"); } else if (PlayerDatas.Instance.fairyData.fairy.FamilyLV < fairyMethodToLimit) { SysNotifyMgr.Instance.ShowTip("FairyMethodToLimit", fairyMethodToLimit); } } #endregion #region 仙盟联赛开启 public int fairyLeagueLimit { get; private set; } public bool SatisfyOpenFairyLeagueLv() { if (PlayerDatas.Instance.fairyData.HasFairy) { var fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null && fairy.FamilyLV >= fairyLeagueLimit) { return true; } } return false; } #endregion #region 仙盟Boss开启 public bool fairyBossFuncOpen { get { if (PlayerDatas.Instance.fairyData.HasFairy) { if (TimeUtility.Hour == 4 || TimeUtility.Hour == 5) { return false; } //var fairy = PlayerDatas.Instance.fairyData.fairy; //if (fairy != null && fairy.FamilyLV >= fairyBossModel.fairyLevelLimit) return true; } return false; } } public void ProcessFairyBossErrorTip() { if (!PlayerDatas.Instance.fairyData.HasFairy) { SysNotifyMgr.Instance.ShowTip("DailyQuestwinUnionLimit"); } else if (PlayerDatas.Instance.fairyData.fairy.FamilyLV < fairyBossModel.fairyLevelLimit) { SysNotifyMgr.Instance.ShowTip("FairyBossLimit", fairyBossModel.fairyLevelLimit); } else if (TimeUtility.Hour == 4 || TimeUtility.Hour == 5) { SysNotifyMgr.Instance.ShowTip("FamilyBoss1"); return; } } #endregion public bool InFairyLeagueDungeon { get { if (StageLoad.Instance.currentStage is DungeonStage) { var mapId = dungeonModel.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID); if (mapId == FairyLeagueModel.FAIRY_LEAGUE_DUNGEON) { return true; } } return false; } } private bool fairyLeagueDugeonCoolDown = false; DateTime fairyLeagueBeginTime = DateTime.Now; private void OnBeginTimeEvent(DungeonCoolDownType type) { if (type == DungeonCoolDownType.WaitStart) { if (InFairyLeagueDungeon) { fairyLeagueBeginTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.WaitStart); if (TimeUtility.ServerNow < fairyLeagueBeginTime) { fairyLeagueDugeonCoolDown = true; } } } } private void OnStageLoadFinish() { if (InFairyLeagueDungeon) { fairyLeagueBeginTime = dungeonModel.GetCoolDownEndTime(DungeonCoolDownType.WaitStart); if (TimeUtility.ServerNow < fairyLeagueBeginTime) { fairyLeagueDugeonCoolDown = true; } } else { fairyLeagueDugeonCoolDown = false; } bool isDungeon = StageLoad.Instance.currentStage is DungeonStage; if (!isDungeon) { PlayerDatas.Instance.fairyData.ClearFairyData(); } } private void SecondEvent() { if (fairyLeagueDugeonCoolDown && TimeUtility.ServerNow >= fairyLeagueBeginTime) { fairyLeagueDugeonCoolDown = false; if (InFairyLeagueDungeon) { var effect = EffectMgr.Instance.PlayUIEffect(3054, 4500, WindowCenter.Instance.uiRoot.tipsCanvas, false); if (effect != null) { SnxxzGame.Instance.StartCoroutine(Co_DestroyEffect(effect)); } } } } IEnumerator Co_DestroyEffect(UIEffect effect) { yield return WaitingForSecondConst.WaitMS3000; if (effect != null) { effect.StopImediatly(); } } //家族行为数据 因type不同而逻辑不同,使用请根据功能需求各自接收处理 public void UpdateFamilyAction(HA403_tagGCFamilyActionInfo _package) { if (_package.ActionType != 13 && _package.ActionType != 14) return; if (!familyActions.ContainsKey((int)_package.FamilyID)) { familyActions.Add((int)_package.FamilyID, new Dictionary()); } familyActions[(int)_package.FamilyID][_package.ActionType] = _package.FamilyActionList; FamilyActionInfoEvent?.Invoke((int)_package.FamilyID, _package.ActionType); } } }