using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class FairyApplyWin : Window
|
{
|
[SerializeField] Button requestBtn;
|
[SerializeField] Button joinBtn;
|
[SerializeField] Button createBtn;
|
[SerializeField] Button searchBtn;
|
[SerializeField] Button exitBtn;
|
[SerializeField] InputField searchInput;
|
[SerializeField] ScrollerController m_Control;
|
|
int m_RecordFairyCount = 0;
|
string m_SearchLabel = string.Empty;
|
|
private FairyModel m_Model;
|
private FairyModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<FairyModel>());
|
}
|
}
|
|
private void OnRefreshFairyMine()
|
{
|
if (!PlayerDatas.Instance.fairyData.HasFairy)
|
{
|
model.page = 0;
|
model.presentFairy = -1;
|
model.fairyList.Clear();
|
model.OnSearchPageList();
|
OnRefreshFairyList();
|
OnRefreshFariyInfo();
|
}
|
}
|
private void OnRefreshFairySearch()
|
{
|
model.fairyList.Clear();
|
List<PlayerFairyData.FairyData> list = PlayerDatas.Instance.fairyData.GetSearchFairy();
|
model.fairyList.AddRange(list);
|
OnRefreshFairyList(true);
|
}
|
|
private void OnRefreshFariyInfo()
|
{
|
requestBtn.SetActive(!PlayerDatas.Instance.fairyData.HasFairy);
|
joinBtn.SetActive(!PlayerDatas.Instance.fairyData.HasFairy);
|
createBtn.SetActive(!PlayerDatas.Instance.fairyData.HasFairy);
|
exitBtn.SetActive(PlayerDatas.Instance.fairyData.HasFairy);
|
}
|
|
private void OnFairyListRefresh()
|
{
|
List<PlayerFairyData.FairyData> list = PlayerDatas.Instance.fairyData.GetFairyListByPage(model.page);
|
if (model.page == 0)
|
{
|
model.fairyList.Clear();
|
}
|
if (list != null)
|
{
|
model.fairyList.AddRange(list);
|
}
|
int index = m_Control.m_Scorller.StartCellViewIndex;
|
OnRefreshFairyList();
|
if (index < model.fairyList.Count && index >= 0)
|
{
|
m_Control.JumpIndex(index);
|
}
|
OnRefreshFariyInfo();
|
}
|
|
private void OnRefreshFairyList(bool search = false)
|
{
|
m_Control.Refresh();
|
if (model.fairyList != null)
|
{
|
for (int i = 0; i < model.fairyList.Count; i++)
|
{
|
m_Control.AddCell(ScrollerDataType.Header, i, OnFairyClick);
|
}
|
if (!search)
|
{
|
var _count = Mathf.Min(model.jiaFairyCount - model.fairyList.Count, model.jiaFairyIds.Count);
|
_count = Mathf.Max(0, _count);
|
for (int i = 0; i < _count; i++)
|
{
|
m_Control.AddCell(ScrollerDataType.Header, FairyModel.JiaFairyStartIndex + i, OnFairyClick);
|
}
|
}
|
else
|
{
|
var _count = Mathf.Min(model.jiaFairyCount - m_RecordFairyCount, model.jiaFairyIds.Count);
|
_count = Mathf.Max(0, _count);
|
for (int i = 0; i < _count; i++)
|
{
|
var jiaName = model.jiaFairyNames[model.jiaFairyIds[i] - 1];
|
if (jiaName.Contains(m_SearchLabel))
|
{
|
m_Control.AddCell(ScrollerDataType.Header, FairyModel.JiaFairyStartIndex + i, OnFairyClick);
|
}
|
}
|
}
|
}
|
m_Control.Restart();
|
m_Control.JumpIndex(0);
|
}
|
private void OnFairyClick(CellView cell)
|
{
|
int index = cell.index;
|
if (model.presentFairy == cell.index)
|
{
|
model.presentFairy = -1;
|
}
|
else
|
{
|
model.presentFairy = index;
|
}
|
m_Control.m_Scorller.RefreshActiveCellViews();
|
}
|
|
private void OnSearchBtn()
|
{
|
if (searchInput.text == string.Empty)
|
{
|
model.page = 0;
|
model.presentFairy = -1;
|
model.OnSearchPageList();
|
model.fairyList.Clear();
|
OnRefreshFairyList();
|
return;
|
}
|
C0F0D_tagCSearchFamily searchPack = new C0F0D_tagCSearchFamily();
|
searchPack.MsgLen = (byte)ChatCtrl.GetUTF8InfoLen(searchInput.text);
|
searchPack.Msg = searchInput.text;
|
GameNetSystem.Instance.SendInfo(searchPack);
|
|
m_SearchLabel = searchInput.text;
|
if (!PlayerDatas.Instance.fairyData.IsSearching)
|
{
|
m_RecordFairyCount = model.fairyList != null ? model.fairyList.Count : 0;
|
}
|
}
|
|
private void OnCreateFairyBtn()
|
{
|
if (!CheckLv())
|
{
|
return;
|
}
|
WindowCenter.Instance.Open<FairyCreateWin>();
|
}
|
|
private void OnJoinBtn()
|
{
|
if (!CheckLv())
|
{
|
return;
|
}
|
if (model.jiaFairyIds.Count > 0)
|
{
|
CA404_tagCGPyCreatFamily _pak = new CA404_tagCGPyCreatFamily();
|
_pak.FakeID = (ushort)model.jiaFairyIds[0];
|
_pak.Name = model.jiaFairyNames[_pak.FakeID - 1];
|
GameNetSystem.Instance.SendInfo(_pak);
|
return;
|
}
|
if(model.fairyList != null && model.fairyList.Count > 0)
|
{
|
CA411_tagCGOneKeyJoinFamily _pak = new CA411_tagCGOneKeyJoinFamily();
|
GameNetSystem.Instance.SendInfo(_pak);
|
}
|
else if (NewBieCenter.Instance.inGuiding)
|
{
|
OnCreateFairyBtn();
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("NoneFairy");
|
}
|
}
|
bool CheckLv()
|
{
|
int limit = FuncOpenLVConfig.Get((int)FuncOpenEnum.Fairy).LimitLV;
|
if (PlayerDatas.Instance.baseData.LV < limit)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1106", limit));
|
return false;
|
}
|
return true;
|
}
|
|
private void OnRequestBtn()
|
{
|
if (!CheckLv())
|
{
|
return;
|
}
|
if (model.presentFairy >= FairyModel.JiaFairyStartIndex)
|
{
|
var _index = model.presentFairy - FairyModel.JiaFairyStartIndex;
|
CA404_tagCGPyCreatFamily _pak = new CA404_tagCGPyCreatFamily();
|
_pak.FakeID = (ushort)model.jiaFairyIds[_index];
|
_pak.Name = model.jiaFairyNames[_pak.FakeID - 1];
|
GameNetSystem.Instance.SendInfo(_pak);
|
return;
|
}
|
if (model.presentFairy < 0 || model.presentFairy >= model.fairyList.Count)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1016"));
|
return;
|
}
|
PlayerFairyData.FairyData fairy = model.fairyList[model.presentFairy];
|
if (fairy != null)
|
{
|
FamilyConfig cfg = FamilyConfig.Get(fairy.FamilyLV);
|
if (fairy.MemberCount >= cfg.memberCnt)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1017"));
|
return;
|
}
|
if (model.FairyRequested((int)fairy.FamilyID))
|
{
|
SysNotifyMgr.Instance.ShowTip("FairyRequested");
|
return;
|
}
|
CA602_tagCGRequesJoinFamily rqPack = new CA602_tagCGRequesJoinFamily();
|
rqPack.Type = 0;
|
rqPack.AddFamilyID = fairy.FamilyID;
|
GameNetSystem.Instance.SendInfo(rqPack);
|
}
|
}
|
|
private void OnExitBtn()
|
{
|
var auctionModel = ModelCenter.Instance.GetModel<AuctionModel>();
|
if (!auctionModel.SatisfyQuitFairy((int)PlayerDatas.Instance.baseData.PlayerID))
|
{
|
SysNotifyMgr.Instance.ShowTip("Paimai8");
|
return;
|
}
|
|
PlayerFairyData.FairyData fairy = PlayerDatas.Instance.fairyData.fairy;
|
if (fairy != null)
|
{
|
if (PlayerDatas.Instance.fairyData.mine.FamilyLV == 3 && fairy.MemberCount > 1)
|
{
|
ServerTipDetails.DisplayNormalTip(Language.Get("L1018"));
|
return;
|
}
|
else
|
{
|
ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("ExitFamily", UIHelper.ServerStringTrim(fairy.FamilyName)), (bool isOk) =>
|
{
|
if (isOk)
|
{
|
C0F0A_tagCLeaveFamily leavePack = new C0F0A_tagCLeaveFamily();
|
leavePack.Type = 0;
|
GameNetSystem.Instance.SendInfo(leavePack);
|
}
|
});
|
}
|
}
|
}
|
|
|
private void JiaFairyUpdateEvent()
|
{
|
OnRefreshFairyList();
|
}
|
|
protected override void BindController()
|
{
|
|
}
|
protected override void AddListeners()
|
{
|
requestBtn.onClick.AddListener(OnRequestBtn);
|
joinBtn.onClick.AddListener(OnJoinBtn);
|
createBtn.onClick.AddListener(OnCreateFairyBtn);
|
searchBtn.onClick.AddListener(OnSearchBtn);
|
exitBtn.onClick.AddListener(OnExitBtn);
|
}
|
|
protected override void OnPreOpen()
|
{
|
PlayerDatas.Instance.fairyData.OnRefreshFairyList += OnFairyListRefresh;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFariyInfo;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyMine += OnRefreshFairyMine;
|
PlayerDatas.Instance.fairyData.OnRefreshFairySearch += OnRefreshFairySearch;
|
SysNotifyMgr.Instance.sysNotifyEvent += SysNotifyEvent;
|
model.JiaFairyUpdateEvent += JiaFairyUpdateEvent;
|
searchInput.text = string.Empty;
|
PlayerDatas.Instance.fairyData.ClearFairyList();
|
model.page = 0;
|
model.presentFairy = -1;
|
model.OnSearchPageList();
|
model.fairyList.Clear();
|
OnRefreshFairyList();
|
OnRefreshFariyInfo();
|
if (AchievementGoto.achievementType == AchievementGoto.CreateOrJoinFairy)
|
{
|
SnxxzGame.Instance.StartCoroutine(Co_HandleAchievement());
|
}
|
}
|
|
private void SysNotifyEvent(string _key, ArrayList arg2)
|
{
|
if (_key.Equals("jiazu_liubo_671654") && model.fairyList.Count < PlayerFairyData.PageCnt)
|
{
|
model.OnSearchPageList();
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
|
}
|
protected override void OnAfterClose()
|
{
|
|
}
|
protected override void OnPreClose()
|
{
|
PlayerDatas.Instance.fairyData.OnRefreshFairyList -= OnFairyListRefresh;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFariyInfo;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyMine -= OnRefreshFairyMine;
|
PlayerDatas.Instance.fairyData.OnRefreshFairySearch -= OnRefreshFairySearch;
|
SysNotifyMgr.Instance.sysNotifyEvent -= SysNotifyEvent;
|
model.JiaFairyUpdateEvent -= JiaFairyUpdateEvent;
|
}
|
IEnumerator Co_HandleAchievement()
|
{
|
yield return WaitingForSecondConst.WaitMS500;
|
if (PlayerDatas.Instance.fairyData.HasFairy)
|
{
|
yield break;
|
}
|
var _effect = AchievementGuideEffectPool.Require(1);
|
if (model.fairyList != null && model.fairyList.Count > 0)
|
{
|
_effect.transform.SetParentEx(joinBtn.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
}
|
else
|
{
|
_effect.transform.SetParentEx(createBtn.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
}
|
}
|
}
|
}
|
|