using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using Cysharp.Threading.Tasks;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
/// <summary>
|
/// 公会申请列表界面
|
/// </summary>
|
public class GuildApplyListWin : UIBase
|
{
|
[SerializeField] Transform noApply;
|
[SerializeField] Transform bgImage;
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] Toggle lowOfficialToggle;
|
[SerializeField] Toggle joinFreeToggle;
|
[SerializeField] Toggle sortToggle;
|
[SerializeField] Dropdown dropdown;
|
[SerializeField] ButtonEx rejectAllButton;
|
[SerializeField] TextEx countText;
|
GuildManager manager { get { return GuildManager.Instance; } }
|
protected override void InitComponent()
|
{
|
lowOfficialToggle.AddListener((bool value) =>
|
{
|
if (!PlayerDatas.Instance.fairyData.HasFairy)
|
return;
|
int lv = GetLvByIndex(dropdown.value);
|
manager.SendChangeFamilyJoin(joinFreeToggle.isOn ? 0 : 1, value ? lv : 0);
|
});
|
|
joinFreeToggle.AddListener((bool value) =>
|
{
|
if (!PlayerDatas.Instance.fairyData.HasFairy)
|
return;
|
int lv = GetLvByIndex(dropdown.value);
|
manager.SendChangeFamilyJoin(value ? 0 : 1, PlayerDatas.Instance.fairyData.fairy.JoinLVMin);
|
});
|
|
sortToggle.AddListener((bool value) =>
|
{
|
manager.isPowerSort = value;
|
Display();
|
});
|
|
dropdown.SetListener(OnDropdownValueChanged);
|
|
rejectAllButton.SetListener(() =>
|
{
|
manager.SendJoinFamilyReply(0, false);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
scroller.lockType = EnhanceLockType.KeepVertical;
|
manager.OnRefreshApplyList += OnRefreshApplyList;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
|
GuildManager.Instance.EnterOrQuitGuildEvent += OnEnterOrQuitGuildEvent;
|
scroller.OnRefreshCell += OnRefreshCell;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
manager.OnRefreshApplyList -= OnRefreshApplyList;
|
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
|
GuildManager.Instance.EnterOrQuitGuildEvent -= OnEnterOrQuitGuildEvent;
|
scroller.OnRefreshCell -= OnRefreshCell;
|
}
|
|
private void OnEnterOrQuitGuildEvent(bool isEnter)
|
{
|
DelayCloseWindow().Forget();
|
}
|
|
private void OnRefreshFairyInfo()
|
{
|
if (!PlayerDatas.Instance.fairyData.HasFairy || !PlayerDatas.Instance.fairyData.IsCanFunc(LimitFunc.CanCall))
|
{
|
DelayCloseWindow().Forget();
|
return;
|
}
|
Display();
|
}
|
|
private void OnRefreshApplyList()
|
{
|
Display();
|
}
|
|
List<FairyApply> list;
|
private void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var _cell = cell.GetComponent<GuildApplyListCell>();
|
_cell?.Display(cell.index, list);
|
}
|
|
List<int> optionKeys;
|
List<string> optionValues;
|
|
private int GetLvByIndex(int index)
|
{
|
if (!PlayerDatas.Instance.fairyData.HasFairy)
|
return 0;
|
if (index < 0 || index >= optionKeys.Count)
|
return 0;
|
int lv = optionKeys[index];
|
return lv;
|
}
|
|
private void OnDropdownValueChanged(int index)
|
{
|
int lv = GetLvByIndex(index);
|
if (PlayerDatas.Instance.fairyData.fairy.JoinLVMin == lv)
|
return;
|
if (lowOfficialToggle.isOn)
|
{
|
manager.SendChangeFamilyJoin(PlayerDatas.Instance.fairyData.fairy.JoinReview, lv);
|
}
|
}
|
|
private void CreateScroller()
|
{
|
scroller.Refresh();
|
if (!manager.isPowerSort)
|
{
|
list = new List<FairyApply>(manager.GetApplyList());
|
}
|
else
|
{
|
list = new List<FairyApply>(manager.GetApplyList().OrderByDescending(x => x.FightPower));
|
}
|
bool isNullOrEmpty = list.IsNullOrEmpty();
|
bgImage.SetActive(!isNullOrEmpty);
|
noApply.SetActive(isNullOrEmpty);
|
if (!isNullOrEmpty)
|
{
|
for (int i = 0; i < list.Count; i++)
|
{
|
scroller.AddCell(ScrollerDataType.Header, i);
|
}
|
}
|
scroller.Restart();
|
}
|
|
private void CreateDropdown()
|
{
|
if (!manager.TryGetApplyOptions(out optionKeys, out optionValues))
|
return;
|
|
dropdown.ClearOptions();
|
dropdown.AddOptions(optionValues);
|
int joinLVMin = PlayerDatas.Instance.fairyData.fairy.JoinLVMin;
|
int index = optionKeys.IndexOf(joinLVMin);
|
dropdown.value = index < 0 ? 0 : index;
|
}
|
|
private void CreateToggle()
|
{
|
lowOfficialToggle.SetIsOnWithoutNotify(PlayerDatas.Instance.fairyData.fairy.JoinLVMin > 0);
|
joinFreeToggle.SetIsOnWithoutNotify(PlayerDatas.Instance.fairyData.fairy.JoinReview == 0);
|
sortToggle.SetIsOnWithoutNotify(manager.isPowerSort);
|
}
|
|
private void Display()
|
{
|
if (!PlayerDatas.Instance.fairyData.HasFairy)
|
return;
|
|
CreateToggle();
|
CreateDropdown();
|
CreateScroller();
|
|
List<FairyApply> list = manager.GetApplyList();
|
countText.text = Language.Get("GuildApplyList05", list != null ? list.Count : 0, manager.requestPlayerCount);
|
}
|
|
}
|