using System.Collections; using System.Collections.Generic; using UnityEngine; namespace GFGGame { public class CardCfgManager { private static Dictionary> _cardLvCfgDic = new Dictionary>(); private static Dictionary>> _cardStarCfgDic = new Dictionary>>(); private static Dictionary>> _cardResCfgDic = new Dictionary>>(); private static Dictionary> _cardStoryCfgDic = new Dictionary>(); /// /// 根据稀有度和卡牌等级获取升级配置 /// /// /// /// public static CardLvlCfg GetCardLvCfgByRarityAndLv(int rarity, int lv) { return CardLvlCfgArray.Instance.GetCfg(lv, rarity); } public static CardStarCfg GetCardStarCfgByTypeAndRarityAndStar(int type, int rarity, int star) { return CardStarCfgArray.Instance.GetCfg(type, rarity, star); } /// /// 根据稀有度获取升级配置数组 /// /// /// public static List GetCardLvCfgsByRarity(int rarity) { if (_cardLvCfgDic.Count == 0) { int _rarity = 1; int _lv = 1; CardLvlCfg lvCfg = CardLvlCfgArray.Instance.GetCfg(_lv, _rarity); while (lvCfg != null) { if (_cardLvCfgDic.ContainsKey(_rarity.ToString()) == false) { _cardLvCfgDic.Add(_rarity.ToString(), new List()); } _cardLvCfgDic[_rarity.ToString()].Add(lvCfg); _lv++; lvCfg = CardLvlCfgArray.Instance.GetCfg(_lv, _rarity); if (lvCfg != null) continue; _lv = 1; _rarity++; lvCfg = CardLvlCfgArray.Instance.GetCfg(_lv, _rarity); if (lvCfg == null) break; } } return _cardLvCfgDic[rarity.ToString()]; } /// /// 根据男主类型和稀有度获取升星配置数组 /// /// /// /// public static List GetCardStarCfgsByTypeAndRarity(int type, int rarity) { if (_cardStarCfgDic.Count == 0) { int _type = 1; int _rarity = 1; int _star = 1; CardStarCfg starCfg = CardStarCfgArray.Instance.GetCfg(1, 1, 1); while (starCfg != null) { if (_cardStarCfgDic.ContainsKey(_type.ToString()) == false) { _cardStarCfgDic.Add(_type.ToString(), new Dictionary>()); _cardResCfgDic.Add(_type.ToString(), new Dictionary>()); } if (_cardStarCfgDic[_type.ToString()].ContainsKey(_rarity.ToString()) == false) { _cardStarCfgDic[_type.ToString()].Add(_rarity.ToString(), new List()); _cardResCfgDic[_type.ToString()].Add(_rarity.ToString(), new List()); } _cardStarCfgDic[_type.ToString()][_rarity.ToString()].Add(starCfg); if (starCfg.res != "") { _cardResCfgDic[_type.ToString()][_rarity.ToString()].Add(_star); } _star++; starCfg = CardStarCfgArray.Instance.GetCfg(_type, _rarity, _star); if (starCfg != null) continue; _star = 1; _rarity++; starCfg = CardStarCfgArray.Instance.GetCfg(_type, _rarity, _star); if (starCfg != null) continue; _star = 1; _rarity = 1; _type++; starCfg = CardStarCfgArray.Instance.GetCfg(_type, _rarity, _star); if (starCfg == null) break; } } return _cardStarCfgDic[type.ToString()][rarity.ToString()]; } public static int GetCardShowCountByIdAndTypeAndRarity(int cardId, int type, int rarity) { int count = 0; List resourceStar = _cardResCfgDic[type.ToString()][rarity.ToString()]; for (int i = 0; i < resourceStar.Count; i++) { if (CardDataManager.GetCardDataById(cardId).star >= resourceStar[i]) { count++; } } return count; } public static List GetStoryCfgsById(int cardId) { if (_cardStoryCfgDic.Keys.Count == 0) { CardStoryCfg[] cardStoryCfgs = CardStoryCfgArray.Instance.dataArray; for (int i = 0; i < cardStoryCfgs.Length; i++) { int _cardId = cardStoryCfgs[i].cardId; if (_cardStoryCfgDic.ContainsKey(_cardId) == false) { _cardStoryCfgDic.Add(_cardId, new List()); } _cardStoryCfgDic[_cardId].Add(cardStoryCfgs[i]); } } return _cardStoryCfgDic.ContainsKey(cardId) ? _cardStoryCfgDic[cardId] : new List(); } } }