using Cysharp.Threading.Tasks;
|
using UnityEngine;
|
|
public class GuildAtkDefBatRecordWin : UIBase
|
{
|
[SerializeField] GuildEmblemCell myEmblem;
|
[SerializeField] TextEx myGuildName;
|
[SerializeField] TextEx myStatCnt;
|
|
[SerializeField] RectTransform enemyRect;
|
[SerializeField] GuildEmblemCell enemyEmblem;
|
[SerializeField] TextEx enemyGuildName;
|
[SerializeField] TextEx enemyStatCnt;
|
[SerializeField] RectTransform noJoinRect;
|
|
[SerializeField] TextEx recordCnt;
|
[SerializeField] ScrollerController scroller;
|
[SerializeField] RectTransform noRect;
|
|
[SerializeField] ButtonEx myEmblemBtn;
|
[SerializeField] ButtonEx enemyEmblemBtn;
|
|
GuildAtkDefBatManager manager { get { return GuildAtkDefBatManager.Instance; } }
|
|
protected override void InitComponent()
|
{
|
base.InitComponent();
|
|
// 己方公会徽章点击 - 自己的公会
|
myEmblemBtn.AddListener(() =>
|
{
|
SysNotifyMgr.Instance.ShowTip("GuildTip01");
|
});
|
|
// 敌方公会徽章点击
|
enemyEmblemBtn.AddListener(() =>
|
{
|
var enemyInfo = manager.EnemyFamilyInfo;
|
if (enemyInfo == null)
|
return;
|
|
int familyID = (int)enemyInfo.FamilyID;
|
int serverID = (int)enemyInfo.ServerID;
|
|
// 自己的公会
|
if (PlayerDatas.Instance.fairyData.HasFairy && PlayerDatas.Instance.fairyData.fairy.FamilyID == familyID)
|
{
|
SysNotifyMgr.Instance.ShowTip("GuildTip01");
|
return;
|
}
|
|
// 系统公会
|
if (manager.IsSystemFamily(enemyInfo.FamilyID))
|
return;
|
|
// 查看公会信息
|
GuildManager.Instance.SendViewGuild(familyID, serverID);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
base.OnPreOpen();
|
scroller.OnRefreshCell += OnRefreshCell;
|
manager.OnUpdateAtkDefBatLogEvent += OnUpdateLogEvent;
|
GuildManager.Instance.OnUpdateViewFamilyInfo += OnUpdateViewFamilyInfo;
|
Display();
|
}
|
|
protected override void OnPreClose()
|
{
|
base.OnPreClose();
|
scroller.OnRefreshCell -= OnRefreshCell;
|
manager.OnUpdateAtkDefBatLogEvent -= OnUpdateLogEvent;
|
GuildManager.Instance.OnUpdateViewFamilyInfo -= OnUpdateViewFamilyInfo;
|
}
|
|
private void OnUpdateViewFamilyInfo(int familyID)
|
{
|
if (!GuildManager.Instance.viewGuildsDict.ContainsKey(familyID))
|
return;
|
|
if (!UIManager.Instance.IsOpened<GuildPreviewWin>())
|
{
|
GuildPreviewWin.SetShowOpearteBtn(false);
|
UIManager.Instance.OpenWindow<GuildPreviewWin>(familyID);
|
}
|
}
|
|
private void OnUpdateLogEvent()
|
{
|
DisplayLogs();
|
}
|
|
public void Display()
|
{
|
DisplayInfo();
|
DisplayLogs();
|
}
|
|
/// <summary>
|
/// 显示顶部记分板(参照 GuildAtkDefBatWin.DisplayInfo 的规则)
|
/// </summary>
|
void DisplayInfo()
|
{
|
var myFamilyInfo = manager.MyFamilyInfo;
|
if (myFamilyInfo != null)
|
{
|
myGuildName.text = myFamilyInfo.FamilyName;
|
myEmblem.Display((int)myFamilyInfo.EmblemID, myFamilyInfo.EmblemWord, 0.7f);
|
myStatCnt.text = myFamilyInfo.TotalStar.ToString();
|
}
|
else
|
{
|
myStatCnt.text = "0";
|
}
|
|
var enemyFamilyInfo = manager.EnemyFamilyInfo;
|
if (enemyFamilyInfo != null)
|
{
|
bool isSystemFamily = manager.IsSystemFamily(enemyFamilyInfo.FamilyID);
|
if (isSystemFamily)
|
{
|
string enemyName = Language.Get("GuildAtkDefBat31");
|
enemyGuildName.text = enemyName;
|
enemyEmblem.Display(FamilyEmblemConfig.GetFirstDefaultEmblem(), !string.IsNullOrEmpty(enemyName) ? enemyName[0].ToString() : string.Empty, 0.7f);
|
enemyStatCnt.text = enemyFamilyInfo.TotalStar.ToString();
|
}
|
else
|
{
|
enemyGuildName.text = enemyFamilyInfo.FamilyName;
|
enemyEmblem.Display((int)enemyFamilyInfo.EmblemID, enemyFamilyInfo.EmblemWord, 0.7f);
|
enemyStatCnt.text = enemyFamilyInfo.TotalStar.ToString();
|
}
|
}
|
else
|
{
|
enemyStatCnt.text = "0";
|
}
|
|
int displayState = manager.GetGuildBattleDisplayState();
|
|
noJoinRect.SetActive(displayState == 1 && enemyFamilyInfo == null);
|
enemyRect.SetActive(displayState != 1 && enemyFamilyInfo != null);
|
}
|
|
/// <summary>
|
/// 显示日志 Scroller 列表
|
/// </summary>
|
void DisplayLogs()
|
{
|
scroller.Refresh();
|
|
var logs = manager.atkDefBatLogs;
|
int showCount = 0;
|
|
if (logs != null && logs.Count > 0)
|
{
|
int maxCount = Mathf.Max(1, manager.maxLogCount);
|
for (int i = 0; i < logs.Count && showCount < maxCount; i++)
|
{
|
if (IsEnemySweepLog(logs[i]))
|
continue;
|
|
scroller.AddCell(ScrollerDataType.Header, i);
|
showCount++;
|
}
|
}
|
|
recordCnt.text = Language.Get("GuildAtkDefBat10", manager.maxLogCount);
|
noRect.SetActive(showCount <= 0);
|
scroller.Restart();
|
}
|
|
bool IsEnemySweepLog(GuildAtkDefBatManager.GuildAtkDefBatLogEntry logEntry)
|
{
|
if (logEntry == null || logEntry.action == null)
|
return false;
|
|
return logEntry.familyID != (uint)manager.MyFamilyID && logEntry.action.Value1 == 0;
|
}
|
|
void OnRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
var logCell = cell as GuildAtkDefBatRecordCell;
|
if (logCell != null && cell.index >= 0 && cell.index < manager.atkDefBatLogs.Count)
|
{
|
logCell.SetLogData(manager.atkDefBatLogs[cell.index]);
|
}
|
}
|
}
|