using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
/// <summary>
|
/// 公会大厅
|
/// </summary>
|
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<GuildOPWin>();
|
});
|
guildLVBtn.AddListener(() =>
|
{
|
// UIManager.Instance.OpenWindow<GuildLevelUpWin>();
|
});
|
|
noticeBtn.AddListener(() =>
|
{
|
var needLV = GuildManager.Instance.GetNeedGuildJobLV((int)GuildFuncType.PublishNotice);
|
if (PlayerDatas.Instance.fairyData.mine.FmLV >= needLV)
|
{
|
// UIManager.Instance.OpenWindow<GuildNoticeWin>();
|
}
|
});
|
|
donateBtn.AddListener(() =>
|
{
|
UIManager.Instance.OpenWindow<GuildDonateWin>();
|
});
|
}
|
|
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);
|
}
|
}
|