using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
///
/// 查看其他公会界面
///
public class GuildPreviewWin : UIBase
{
[SerializeField] GuildEmblemCell guildEmblem;
[SerializeField] Text guildMemberCountText;
[SerializeField] Text totalFightPowerText;
[SerializeField] Text guildLevelText;
[SerializeField] Text guildNameText; //加服务器信息
[SerializeField] Text guildNumText; //加公会编号
[SerializeField] Button copyBtn;
[SerializeField] Text noticeText; //公告
[SerializeField] ScrollerController scroller;
[SerializeField] Button opearteBtn;
[SerializeField] Text opearteBtnText;
int guildID;
static bool m_ShowOpearteBtn = true;
///
/// 设置是否显示操作按钮(在打开界面前调用),默认显示
///
public static void SetShowOpearteBtn(bool show)
{
m_ShowOpearteBtn = show;
}
protected override void InitComponent()
{
opearteBtn.AddListener(() =>
{
var guildInfo = GuildManager.Instance.guildsDict[guildID];
if (guildInfo == null) return;
var state = GuildManager.Instance.GetRequestState(guildInfo);
GuildManager.Instance.SendApplyGuild(guildID, state == 2 ? 1 : 0);
});
copyBtn.AddListener(() =>
{
UIHelper.CopyToClipboard(guildNumText.text);
SysNotifyMgr.Instance.ShowTip("GuildSys8");
});
}
protected override void OnPreOpen()
{
GuildManager.Instance.OnUpdateViewFamilyInfo += OnUpdateViewFamilyInfo;
OtherPlayerDetailManager.Instance.OnRevPackage += OnRevLeaderPackage;
scroller.OnRefreshCell += OnRefreshMemberCell;
guildID = functionOrder;
opearteBtn.SetActive(m_ShowOpearteBtn);
Display();
}
protected override void OnPreClose()
{
GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo;
OtherPlayerDetailManager.Instance.OnRevPackage -= OnRevLeaderPackage;
scroller.OnRefreshCell -= OnRefreshMemberCell;
m_ShowOpearteBtn = true;
}
void Display()
{
FairyData guildInfo = null;
if (GuildManager.Instance.viewGuildsDict.ContainsKey(guildID))
{
guildInfo = GuildManager.Instance.viewGuildsDict[guildID];
}
if (guildInfo == null) return;
var config = FamilyConfig.Get(guildInfo.FamilyLV);
guildEmblem.Display(guildInfo.EmblemID, guildInfo.EmblemWord, 0.7f);
guildMemberCountText.text = guildInfo.MemberCount + "/" + config.MemberMax;
totalFightPowerText.text = UIHelper.ReplaceLargeArtNum(guildInfo.totalFightPower);
guildLevelText.text = Language.Get("L1094") + guildInfo.FamilyLV;
guildNameText.text = guildInfo.FamilyName + Language.Get("L1039", ServerListCenter.Instance.GetServerName(guildInfo.ServerID));
guildNumText.text = GuildManager.Instance.EncryptGuildID(guildInfo.FamilyID);
noticeText.text = string.IsNullOrEmpty(guildInfo.Broadcast) ? Language.Get("Guild_62") : guildInfo.Broadcast;
var state = GuildManager.Instance.GetRequestState(guildInfo);
string key = "";
switch (state)
{
case 1:
key = "Guild_17";
break;
case 2:
key = "Guild_21";
break;
default:
key = "Guild_22";
break;
}
opearteBtnText.text = Language.Get(key);
RefreshMemberList();
}
void RefreshMemberList()
{
var memberList = GuildManager.Instance.GetSortedMemberList(guildID);
if (memberList == null) return;
scroller.Refresh();
for (int i = 0; i < memberList.Count; i++)
{
scroller.AddCell(ScrollerDataType.Header, i);
}
scroller.Restart();
}
void OnRefreshMemberCell(ScrollerDataType type, CellView cell)
{
if (cell is GuildPreviewCell exCell)
{
var memberList = GuildManager.Instance.GetSortedMemberList(guildID);
if (memberList != null && cell.index >= 0 && cell.index < memberList.Count)
{
exCell.Display(memberList[cell.index]);
}
}
}
void OnRevLeaderPackage(int viewType, int playerID)
{
RefreshMemberList();
}
void OnUpdateViewFamilyInfo(int familyID)
{
Display();
}
}