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