using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
public class GuildAtkDefBatAwardPreviewWin : FunctionsBaseWin
|
{
|
[SerializeField] ScrollerController scroller;
|
|
protected override void OpenSubUIByTabIndex()
|
{
|
int[][] awardData;
|
if (functionOrder == 0)
|
awardData = GuildAtkDefBatManager.Instance.guildLoseAward;
|
else
|
awardData = GuildAtkDefBatManager.Instance.guildWinAward;
|
|
scroller.OnRefreshCell -= OnOuterRefreshCell;
|
scroller.OnRefreshCompleteEvent -= OnOuterRefreshComplete;
|
scroller.OnRefreshCell += OnOuterRefreshCell;
|
scroller.OnRefreshCompleteEvent += OnOuterRefreshComplete;
|
scroller.Refresh();
|
|
// 1. 标题:GuildAtkDefBat13
|
scroller.AddCell(ScrollerDataType.Header, 0);
|
|
// 2. NomalCell(奖励物品列表),用 infoInt1 传 functionOrder 便于区分数据源
|
CellInfo nomalInfo = new CellInfo(functionOrder, 0, null);
|
scroller.AddCell(ScrollerDataType.Normal, 0, nomalInfo);
|
|
// 3. 标题:GuildAtkDefBat14
|
scroller.AddCell(ScrollerDataType.Header, 1);
|
|
// 4. TailCell:先加普通品质(1),再遍历 qualityMaxOutput 其他品质 key 升序添加
|
var qualityDict = GuildAtkDefBatManager.Instance.qualityMaxOutput;
|
int maxGridCount = GuildAtkDefBatManager.Instance.CalculateMaxGridCount();
|
int nonNormalTotal = GuildAtkDefBatManager.Instance.GetNonNormalQualityTotalOutput();
|
// 4b. 遍历 qualityMaxOutput 动态添加其余品质的 TailCell
|
if (qualityDict != null)
|
{
|
var keys = new List<int>(qualityDict.Keys);
|
keys.Sort();
|
keys.Reverse();
|
for (int i = 0; i < keys.Count; i++)
|
{
|
int quality = keys[i];
|
if (quality == 1) continue;
|
CellInfo info = new CellInfo(quality, qualityDict[quality], null);
|
info.SetInfo(functionOrder);
|
scroller.AddCell(ScrollerDataType.Tail, quality, info);
|
}
|
}
|
|
// 4a. 品质1(普通):最大产出数 = 最大总格子数 - 非普通品质总产出数,始终添加
|
int normalMaxCount = maxGridCount - nonNormalTotal;
|
CellInfo normalInfo = new CellInfo(1, normalMaxCount, null);
|
normalInfo.SetInfo(functionOrder);
|
scroller.AddCell(ScrollerDataType.Tail, 1, normalInfo);
|
|
scroller.Restart();
|
}
|
|
void OnOuterRefreshComplete()
|
{
|
scroller.OnRefreshCell -= OnOuterRefreshCell;
|
scroller.OnRefreshCompleteEvent -= OnOuterRefreshComplete;
|
}
|
|
void OnOuterRefreshCell(ScrollerDataType type, CellView cell)
|
{
|
switch (type)
|
{
|
case ScrollerDataType.Header:
|
GuildAtkDefBatAwardPreviewHeaderCell headerCell = cell as GuildAtkDefBatAwardPreviewHeaderCell;
|
if (headerCell != null)
|
{
|
int headerIndex = cell.index;
|
string langKey = headerIndex == 0 ? "GuildAtkDefBat13" : "GuildAtkDefBat14";
|
headerCell.SetTitle(Language.Get(langKey));
|
}
|
break;
|
|
case ScrollerDataType.Normal:
|
GuildAtkDefBatAwardPreviewNomalCell nomalCell = cell as GuildAtkDefBatAwardPreviewNomalCell;
|
if (nomalCell != null && cell.info.HasValue)
|
{
|
int tabIndex = cell.info.Value.infoInt1;
|
int[][] awardData = tabIndex == 0
|
? GuildAtkDefBatManager.Instance.guildLoseAward
|
: GuildAtkDefBatManager.Instance.guildWinAward;
|
nomalCell.SetData(awardData);
|
}
|
break;
|
|
case ScrollerDataType.Tail:
|
GuildAtkDefBatAwardPreviewTailCell tailCell = cell as GuildAtkDefBatAwardPreviewTailCell;
|
if (tailCell != null && cell.info.HasValue)
|
{
|
int quality = cell.info.Value.infoInt1;
|
int maxCount = cell.info.Value.infoInt2;
|
int tabIndex = cell.info.Value.infoInt3;
|
int libType = tabIndex == 0 ? 2 : 1;
|
tailCell.SetData(quality, maxCount, libType);
|
}
|
break;
|
}
|
}
|
}
|