using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
///
/// 公会大厅
///
public class GuildHallWin : UIBase
{
[SerializeField] GuildEmblemCell guildEmblem;
[SerializeField] Text guildMemberCountText;
[SerializeField] Text totalFightPowerText;
[SerializeField] Button opBtn; //管理按钮
[SerializeField] Text guildLevelText;
[SerializeField] Text guildNameText; //加服务器信息
[SerializeField] Button guildLVBtn;
[SerializeField] Image lvExpProcess;
[SerializeField] Text expText;
[SerializeField] Text guildNumText; //加公会编号
[SerializeField] Button copyBtn;
[SerializeField] Text noticeText; //公告
[SerializeField] Button noticeBtn; //公告
[SerializeField] ScrollerController memberScroller;
[SerializeField] Button donateBtn;
protected override void InitComponent()
{
copyBtn.AddListener(() =>
{
UIHelper.CopyToClipboard(guildNumText.text);
SysNotifyMgr.Instance.ShowTip("GuildSys8");
});
opBtn.AddListener(() =>
{
//管理按钮
UIManager.Instance.OpenWindow();
});
guildLVBtn.AddListener(() =>
{
// UIManager.Instance.OpenWindow();
});
noticeBtn.AddListener(() =>
{
var needLV = GuildManager.Instance.GetNeedGuildJobLV((int)GuildFuncType.PublishNotice);
if (PlayerDatas.Instance.fairyData.mine.FmLV >= needLV)
{
// UIManager.Instance.OpenWindow();
}
});
donateBtn.AddListener(() =>
{
UIManager.Instance.OpenWindow();
});
}
protected override void OnPreOpen()
{
GuildManager.Instance.RequestGuildData();
GuildManager.Instance.memberOPIndex = -1;
GuildManager.Instance.MemberOPIndexEvent += OnMemberOPIndexEvent;
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
memberScroller.OnRefreshCell += OnRefreshCell;
memberScroller.OnGetDynamicSize += OnGetDynamicSize;
memberScroller.lockType = EnhanceLockType.KeepVertical2;
Display();
memberScroller.JumpIndex(0);
}
protected override void OnPreClose()
{
memberScroller.OnRefreshCell -= OnRefreshCell;
GuildManager.Instance.MemberOPIndexEvent -= OnMemberOPIndexEvent;
PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
memberScroller.OnGetDynamicSize -= OnGetDynamicSize;
}
void Display()
{
var guildInfo = PlayerDatas.Instance.fairyData.fairy;
if (guildInfo == null) return;
CreateMemberScroller();
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;
lvExpProcess.fillAmount = (float)guildInfo.FamilyLVExp / config.NeedExp;
expText.text = guildInfo.FamilyLVExp + "/" + config.NeedExp;
}
void OnRefreshFairyInfo()
{
Display();
}
bool OnGetDynamicSize(ScrollerDataType type, int index, out float height)
{
height = type == ScrollerDataType.Header ? 153 : 70;
return true;
}
void CreateMemberScroller()
{
memberScroller.Refresh();
for (int i = 0; i < PlayerDatas.Instance.fairyData.fairy.MemberCount; i++)
{
memberScroller.AddCell(ScrollerDataType.Header, i);
if (GuildManager.Instance.memberOPIndex == i)
{
memberScroller.AddCell(ScrollerDataType.Normal, i);
}
}
memberScroller.Restart();
}
void OnRefreshCell(ScrollerDataType type, CellView cell)
{
if (type == ScrollerDataType.Header)
{
var _cell = cell as GuildMemberCell;
_cell.Display(cell.index);
}
else if (type == ScrollerDataType.Normal)
{
var _cell = cell as GuildMemberOPCell;
_cell.Display(cell.index, false);
}
}
void OnMemberOPIndexEvent()
{
// var lastPosition = memberScroller.m_Scorller.ScrollPosition;
CreateMemberScroller();
// memberScroller.m_Scorller.ScrollPosition = lastPosition + (GuildManager.Instance.memberOPIndex != -1 ? 74 : 0);
}
}