NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Raffle/RaffleResultData.cs

169 lines
3.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using cfg.ActorCfg;
using cfg.CharacterCfg;
using Framework;
using Gameplay.Net;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 抽卡结果数据
/// </summary>
public class RaffleResultData
{
/// <summary>
/// 抽卡数据
/// </summary>
private DataGacha gachaData;
/// <summary>
/// 初始天井币数量
/// </summary>
private int patioCount;
/// <summary>
/// 记录抽卡前拥有的角色id
/// </summary>
private HashSet<int> setCharacterId;
/// <summary>
/// 记录每个角色是否是新获得的和listCharacter一一对应
/// </summary>
private List<bool> listIsNew;
/// <summary>
/// 角色数据列表
/// </summary>
private List<DataCharacterAttri> listCharacter;
/// <summary>
/// 显示角色索引
/// </summary>
public int ShowIndex;
#region 属性
/// <summary>
/// 记录角色是否新获得
/// </summary>
public List<bool> ListIsNew
{
get { return listIsNew; }
}
/// <summary>
/// 所有角色信息
/// </summary>
public List<DataCharacterAttri> ListCharacter
{
get { return listCharacter; }
}
/// <summary>
/// 卡池数据
/// </summary>
public DataGacha GachaData
{
get { return gachaData; }
}
/// <summary>
/// 最大星级
/// </summary>
public int MaxStartStar
{
get; private set;
}
/// <summary>
/// 是否有下一个要显示的
/// </summary>
public bool IsShowNext
{
get { return ShowIndex < listCharacter.Count - 1; }
}
/// <summary>
/// 是否可以获得天井币
/// </summary>
public bool IsGetPatio
{
get { return 0 != gachaData.PatioCoin; }
}
/// <summary>
/// 初始天井币数量
/// </summary>
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);
}
}
}