using cfg.ActorCfg;
using cfg.CharacterCfg;
using Framework;
using Gameplay.Net;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 抽卡结果数据
///
public class RaffleResultData
{
///
/// 抽卡数据
///
private DataGacha gachaData;
///
/// 初始天井币数量
///
private int patioCount;
///
/// 记录抽卡前拥有的角色id
///
private HashSet setCharacterId;
///
/// 记录每个角色是否是新获得的,和listCharacter一一对应
///
private List listIsNew;
///
/// 角色数据列表
///
private List listCharacter;
///
/// 显示角色索引
///
public int ShowIndex;
#region 属性
///
/// 记录角色是否新获得
///
public List ListIsNew
{
get { return listIsNew; }
}
///
/// 所有角色信息
///
public List ListCharacter
{
get { return listCharacter; }
}
///
/// 卡池数据
///
public DataGacha GachaData
{
get { return gachaData; }
}
///
/// 最大星级
///
public int MaxStartStar
{
get; private set;
}
///
/// 是否有下一个要显示的
///
public bool IsShowNext
{
get { return ShowIndex < listCharacter.Count - 1; }
}
///
/// 是否可以获得天井币
///
public bool IsGetPatio
{
get { return 0 != gachaData.PatioCoin; }
}
///
/// 初始天井币数量
///
public int PatioCount
{
get { return patioCount; }
}
#endregion
public DataCharacterAttri CharacterAttri
{
get
{
if (ShowIndex >= ListCharacter.Count)
return null;
return ListCharacter[ShowIndex];
}
}
public RaffleResultData(DataGacha dataGacha)
{
Reset(dataGacha);
}
public void SetInfo(ItemCounts itemCounts)
{
listCharacter.Clear();
listIsNew.Clear();
MaxStartStar = 0;
ShowIndex = 0;
foreach (uint characterId in itemCounts.Ids)
{
DataCharacterAttri cfg = TableManager.Instance.Tables.CharacterAttri.GetOrDefault((int)characterId);
listCharacter.Add(cfg);
DebugUtil.Log($"本次抽取角色id:{characterId}");
if (cfg == null)
{
listIsNew.Add(false);
DebugUtil.LogError($"获取角色配置错误, 错误id:{characterId}");
continue;
}
listIsNew.Add(setCharacterId.Add(cfg.RoleID));
if (MaxStartStar < cfg.StartStar)
MaxStartStar = cfg.StartStar;
}
}
public void Reset(DataGacha dataGacha)
{
gachaData = dataGacha;
if (IsGetPatio)
patioCount = (int)Actor.Instance.Item.GetItemCount(gachaData.PatioCoin);
if (null == listCharacter)
listCharacter = new(16);
else
listCharacter.Clear();
if (null == listIsNew)
listIsNew = new(16);
else
listIsNew.Clear();
if (null == setCharacterId)
setCharacterId = new();
else
setCharacterId.Clear();
MaxStartStar = 0;
ShowIndex = 0;
foreach (CharacterDataInfo characterDataInfo in CharacterDataInfoManager.Instance.DataList)
{
setCharacterId.Add(characterDataInfo.Cfg.RoleID);
}
}
}