using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 公会徽章界面 :functionOrder 0 代表有公会的情况下打开,1 代表没有公会的情况下创建时打开 /// public class GuildEmblemWin : UIBase { [SerializeField] GuildEmblemCell guildEmblem; [SerializeField] ScrollerController emblemScroller; [SerializeField] Text emblemInfoText; [SerializeField] Text timeDescText; [SerializeField] InputField flagNameText; [SerializeField] Text nowTimeText; [SerializeField] Button changeBtn; string emblemWord; protected override void InitComponent() { flagNameText.onValueChanged.AddListener(OnFlagNameChange); changeBtn.AddListener(ChangeEmblem); } protected override void OnPreOpen() { GuildEmblemModel.Instance.ChooseEmblemIdChangeEvent += ChooseEmblemEvent; emblemScroller.OnRefreshCell += OnRefreshCell; if (functionOrder == 1) { GuildEmblemModel.Instance.nowChooseEmblemId = GuildEmblemModel.Instance.createSelectEmblemId; emblemWord = GuildEmblemModel.Instance.createEmblemWord; } else { GuildEmblemModel.Instance.nowChooseEmblemId = PlayerDatas.Instance.fairyData.fairy.EmblemID; emblemWord = PlayerDatas.Instance.fairyData.fairy.EmblemWord; } flagNameText.text = emblemWord; GuildEmblemModel.Instance.SortShowList(); CreateEmblemScroller(); Display(); } protected override void OnPreClose() { GuildEmblemModel.Instance.ChooseEmblemIdChangeEvent -= ChooseEmblemEvent; emblemScroller.OnRefreshCell -= OnRefreshCell; GuildEmblemModel.Instance.RefreshOldShowActiveList(); } void CreateEmblemScroller() { emblemScroller.Refresh(); for (int i = 0; i < GuildEmblemModel.Instance.showList.Count; i++) { if (i % 5 == 0) { emblemScroller.AddCell(ScrollerDataType.Header, i); } } emblemScroller.Restart(); } void OnRefreshCell(ScrollerDataType type, CellView cell) { var _cell = cell.GetComponent(); _cell.Display(cell.index); } void Display() { guildEmblem.Display(GuildEmblemModel.Instance.nowChooseEmblemId, emblemWord); emblemScroller.m_Scorller.RefreshActiveCellViews(); var config = FamilyEmblemConfig.Get(GuildEmblemModel.Instance.nowChooseEmblemId); emblemInfoText.text = config.Descriptive; if (config.ExpireMinutes == 0) { timeDescText.text = ""; } else { timeDescText.text = Language.Get("Mail12", TimeUtility.SecondsToShortDHMS(config.ExpireMinutes * 60)); } if (functionOrder == 1) { nowTimeText.text = ""; } else { // 公会徽章过期时间 if (GuildEmblemModel.Instance.IsLimitTime(GuildEmblemModel.Instance.nowChooseEmblemId, out var familyAction)) { int time = (int)familyAction.Value2 - TimeUtility.AllSeconds; if (time > 0) nowTimeText.text = Language.Get("GoldRush29", TimeUtility.SecondsToShortDHMS(time)); else nowTimeText.text = ""; } else { nowTimeText.text = ""; } } if (functionOrder == 1) { changeBtn.SetInteractable(GuildEmblemModel.Instance.IsUnLock(GuildEmblemModel.Instance.nowChooseEmblemId)); } else { changeBtn.SetInteractable(GuildEmblemModel.Instance.IsCaptain() && GuildEmblemModel.Instance.IsUnLock(GuildEmblemModel.Instance.nowChooseEmblemId)); } } void OnFlagNameChange(string value) { emblemWord = value; guildEmblem.Display(GuildEmblemModel.Instance.nowChooseEmblemId, emblemWord); } void ChooseEmblemEvent() { Display(); } void ChangeEmblem() { if (functionOrder == 1) { GuildEmblemModel.Instance.createEmblemWord = emblemWord; GuildEmblemModel.Instance.createSelectEmblemId = GuildEmblemModel.Instance.nowChooseEmblemId; } else { var pack = new CA624_tagCMChangeFamilyEmblem(); pack.EmblemID = (byte)GuildEmblemModel.Instance.nowChooseEmblemId; pack.EmblemWord = emblemWord; GameNetSystem.Instance.SendInfo(pack); } CloseWindow(); } }