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); 
 | 
    } 
 | 
} 
 |