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