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<DungeonModel>(); } }
|
FairyBossModel fairyBossModel { get { return ModelCenter.Instance.GetModel<FairyBossModel>(); } }
|
|
public Dictionary<int, Dictionary<int, HA403_tagGCFamilyActionInfo.tagGCFamilyAction[]>> familyActions = new Dictionary<int, Dictionary<int, HA403_tagGCFamilyActionInfo.tagGCFamilyAction[]>>();
|
public event Action<int, int> 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<UnionPanel>(false, functionOrder);
|
}
|
|
#region 发包
|
public void SendKickFairy(uint playerID)
|
{
|
var auctionModel = ModelCenter.Instance.GetModel<AuctionModel>();
|
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<PlayerFairyData.FairyData> fairyList = new List<PlayerFairyData.FairyData>();
|
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<int, List<int>> donateCostInfo = new Dictionary<int, List<int>>(); //货币:[额度,获得贡献,活跃令]
|
|
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<int> m_FairyRequesteds = new List<int>();
|
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<PlayerFairyData.FairyMember> sortFairyMembers = new List<PlayerFairyData.FairyMember>();
|
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<int, FairyRequest> fairyRequestDict = new Dictionary<int, FairyRequest>();
|
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<FairyInviteWin>())
|
{
|
WindowCenter.Instance.Close<FairyInviteWin>();
|
}
|
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<FairyInviteWin>())
|
{
|
WindowCenter.Instance.Close<FairyInviteWin>();
|
}
|
}
|
}
|
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<int> 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<string> jiaFairyNames { get; private set; }
|
public int jiaFairyCount { get; private set; }
|
public List<int> jiaFairyIds { get; private set; }
|
|
public event Action JiaFairyUpdateEvent;
|
|
public const int JiaFairyStartIndex = 100000000;
|
|
private void ParseJiaFairy()
|
{
|
jiaFairyIds = new List<int>();
|
jiaFairyNames = new List<string>();
|
var config = FuncConfigConfig.Get("FakeFamilyName");
|
jiaFairyNames.AddRange(LitJson.JsonMapper.ToObject<string[]>(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<int, HA403_tagGCFamilyActionInfo.tagGCFamilyAction[]>());
|
}
|
|
familyActions[(int)_package.FamilyID][_package.ActionType] = _package.FamilyActionList;
|
FamilyActionInfoEvent?.Invoke((int)_package.FamilyID, _package.ActionType);
|
}
|
}
|
}
|