using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
///
/// 加入公会界面 :公会查找列表,也是排行榜
///
public class GuildJoinWin : UIBase
{
[SerializeField] InputField findText;
[SerializeField] Button findBtn;
[SerializeField] Button createGuildBtn;
[SerializeField] Button quicklyJoinGuildBtn;
[SerializeField] ScrollerController guildListScroller;
[SerializeField] Transform noGuildTf;
string lastQuery = "";
int lastPage = 0;
protected override void InitComponent()
{
findBtn.AddListener(() => OnFindBtnClick());
createGuildBtn.AddListener(OnCreateGuildBtnClick);
quicklyJoinGuildBtn.AddListener(OnQuicklyJoinGuildBtnClick);
}
protected override void OnPreOpen()
{
findText.text = "";
//打开界面默认请求,滚动的时候需要处理页数
QueryGuild();
GuildManager.Instance.OnRefreshFairyList += OnRefreshGuildList;
GuildManager.Instance.MyRequestJoinEvent += MyRequestJoinEvent;
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
guildListScroller.OnRefreshCell += RefreshCell;
Display();
}
protected override void OnPreClose()
{
GuildManager.Instance.OnRefreshFairyList -= OnRefreshGuildList;
GuildManager.Instance.MyRequestJoinEvent -= MyRequestJoinEvent;
guildListScroller.OnRefreshCell -= RefreshCell;
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
var win = UIManager.Instance.GetUI();
if (win)
win.RestoreFuncBtn();
}
void OnRefreshFairyInfo()
{
//当前界面下有刷新自家的公会数据,说明一定是加入了公会,需主动跳转到公会界面
CloseWindow();
var win = UIManager.Instance.GetUI();
if (win)
win.ClickFunc(4);
}
void Display()
{
CreateScroller();
}
void MyRequestJoinEvent()
{
guildListScroller.m_Scorller.RefreshActiveCellViews();
}
//列表变小的话 重新创建;列表变大的话,只添加
void CreateScroller()
{
if (GuildManager.Instance.pageIndexList.Count == 0)
{
noGuildTf.SetActive(true);
guildListScroller.SetActive(false);
return;
}
noGuildTf.SetActive(false);
guildListScroller.SetActive(true);
var startCount = guildListScroller.GetNumberOfCells();
if (startCount > GuildManager.Instance.pageIndexList.Count)
{
guildListScroller.Refresh();
}
for (int i = startCount; i < GuildManager.Instance.pageIndexList.Count; i++)
{
guildListScroller.AddCell(ScrollerDataType.Header, i);
}
guildListScroller.Restart();
}
void OnRefreshGuildList()
{
CreateScroller();
}
void RefreshCell(ScrollerDataType type, CellView cell)
{
var _cell = cell.GetComponent();
_cell.Display(cell.index);
}
private void OnFindBtnClick()
{
var nowQuery = findText.text;
if (string.IsNullOrEmpty(nowQuery) && string.IsNullOrEmpty(lastQuery))
{
SysNotifyMgr.Instance.ShowTip("GuildSys5");
return;
}
if (nowQuery.Length < 2 && nowQuery.Length > 0)
{
SysNotifyMgr.Instance.ShowTip("GuildSys7");
return;
}
lastQuery = nowQuery;
lastPage = 0;
guildListScroller.Refresh();
GuildManager.Instance.SendFindGuild(lastQuery);
}
void QueryGuild()
{
lastQuery = "";
lastPage = 0;
guildListScroller.Refresh();
GuildManager.Instance.SendFindGuild(lastQuery);
}
private void OnCreateGuildBtnClick()
{
UIManager.Instance.OpenWindow();
}
private void OnQuicklyJoinGuildBtnClick()
{
if (GuildManager.Instance.pageIndexList.Count == 0)
{
SysNotifyMgr.Instance.ShowTip("QuickEnterFamilyFail");
return;
}
GuildManager.Instance.SendApplyGuild(0, 0);
}
}