using System; using System.Collections; using System.Collections.Generic; using TableConfig; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { public class FairyMemberWin : Window { [SerializeField] Text textFairyName; [SerializeField] Text textFairyLv; [SerializeField] Text textFairyMemberCnt; [SerializeField] Text textFairyLeader; [SerializeField] Text textFairyContribute; [SerializeField] Text textFairyNotify; [SerializeField] ScrollerController m_MemberControl; [SerializeField] Button acceptBtn; [SerializeField] Button openChangeBtn; [SerializeField] Button applyListBtn; [SerializeField] GameObject acceptCheck; [SerializeField] Button lvBtn; [SerializeField] Button jobBtn; [SerializeField] Button contriBtn; [SerializeField] Button timeBtn; [SerializeField] Button moneyPacketBtn; [SerializeField] List m_Arrows; private PlayerFairyData.FairyMember changeMember { get { return PlayerDatas.Instance.fairyData.GetMember(model.presentChangeMember); } } private FairyModel m_Model; private FairyModel model { get { return m_Model ?? (m_Model = ModelCenter.Instance.GetModel()); } } private void OnOpenChangeBtn() { if (!PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanCall)) { MessageWin.Inst.ShowFixedTip(Language.Get("L1019")); return; } WindowCenter.Instance.Open(); } private void RefreshChangeTipBtn() { var _changeTip = PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanCall); openChangeBtn.gameObject.SetActive(_changeTip); } private void OnRefreshMember() { model.sortFairyMembers.Clear(); m_MemberControl.Refresh(); PlayerFairyData.FairyData fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null) { List list = fairy.Member; if (list != null) { model.sortFairyMembers.AddRange(list); } model.sortFairyMembers.Sort(model.Compare); for (int i = 0; i < model.sortFairyMembers.Count; i++) { m_MemberControl.AddCell(i % 2 == 0 ? ScrollerDataType.Normal : ScrollerDataType.Header, i, OnMemberClick); } } m_MemberControl.Restart(); } private void OnMemberClick(CellView cell) { int i = cell.index; if (i < model.sortFairyMembers.Count) { PlayerFairyData.FairyMember member = model.sortFairyMembers[i]; if (member.PlayerID == PlayerDatas.Instance.baseData.PlayerID) { return; } model.presentChangeMember = (int)member.PlayerID; PlayerDetails.ShowPlayerDetails(model.presentChangeMember, OnFuncClick, PlayerDetails.OpenType.Fairy); } } private void OnFuncClick(PlayerDetails.DetailType type) { switch (type) { case PlayerDetails.DetailType.PrivateChat: { WindowCenter.Instance.CloseImmediately(); WindowCenter.Instance.Open(); } break; } } private void OnAcceptClick() { PlayerFairyData.FairyData fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy != null) { if (!PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanCall)) { MessageWin.Inst.ShowFixedTip(Language.Get("L1019")); return; } CA406_tagCGChangeFamilyAcceptJoinType acceptPack = new CA406_tagCGChangeFamilyAcceptJoinType(); acceptPack.Type = fairy.AcceptJoin == 1 ? (byte)0 : (byte)1; GameNetSystem.Instance.SendInfo(acceptPack); } } private void OnRefreshFairyInfo() { PlayerFairyData.FairyData fairy = PlayerDatas.Instance.fairyData.fairy; if (fairy == null) return; textFairyName.text = fairy.FamilyName; textFairyLv.text = Language.Get("L1102") + fairy.FamilyLV.ToString(); FamilyConfig cfg = Config.Instance.Get(fairy.FamilyLV); if (cfg != null) { textFairyMemberCnt.text = Language.Get("L1101") + fairy.MemberCount.ToString() + "/" + cfg.memberCnt; } PlayerFairyData.FairyMember leader = PlayerDatas.Instance.fairyData.Leader; if (leader != null) { textFairyLeader.text = Language.Get("L1100") + leader.Name; } textFairyContribute.text = Language.Get("L1099") + fairy.FamilyActiveValue.ToString(); textFairyNotify.text = (fairy.Broadcast == null || fairy.Broadcast.Equals(string.Empty)) ? Language.Get("GameNotice1") : fairy.Broadcast; acceptCheck.gameObject.SetActive((fairy.AcceptJoin == 1)); OnRefreshMember(); RefreshChangeTipBtn(); } private void OnSortBtn(int type) { model.OnSort(type); OnUpdateArrows(); if (model.sortFairyMembers.Count > 0) { m_MemberControl.m_Scorller.RefreshActiveCellViews(); } } private void OnUpdateArrows() { for (int i = 0; i < m_Arrows.Count; i++) { m_Arrows[i].gameObject.SetActive(model.sortType == i + 1); if (model.sortType == i + 1) { var _rot = m_Arrows[i].rectTransform.localEulerAngles; _rot.z = model.up ? 90 : -90; m_Arrows[i].rectTransform.localEulerAngles = _rot; } } } private void OnApplyList() { if (!PlayerDatas.Instance.fairyData.IsCanFunc(PlayerFairyData.LimitFunc.CanCall)) { MessageWin.Inst.ShowFixedTip(Language.Get("L1019")); return; } WindowCenter.Instance.Open(); } private void MoneyPackBtn() { WindowCenter.Instance.Open(); } protected override void BindController() { } protected override void AddListeners() { acceptBtn.onClick.AddListener(OnAcceptClick); applyListBtn.onClick.AddListener(OnApplyList); openChangeBtn.onClick.AddListener(OnOpenChangeBtn); lvBtn.onClick.AddListener(() => { OnSortBtn(1); }); jobBtn.onClick.AddListener(() => { OnSortBtn(2); }); contriBtn.onClick.AddListener(() => { OnSortBtn(3); }); timeBtn.onClick.AddListener(() => { OnSortBtn(4); }); moneyPacketBtn.onClick.AddListener(MoneyPackBtn); } protected override void OnPreOpen() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo; model.sortType = 4; model.up = false; OnRefreshFairyInfo(); OnUpdateArrows(); C0F07_tagCGetFamilyInfo pack = new C0F07_tagCGetFamilyInfo(); pack.Type = 0; GameNetSystem.Instance.SendInfo(pack); } protected override void OnAfterOpen() { } protected override void OnPreClose() { PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo; } protected override void OnAfterClose() { } } }