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