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) { string id = rarity + "_" + lv; return CardLvlCfgArray.Instance.GetCfg(id); } public static CardStarCfg GetCardStarCfgByTypeAndRarityAndStar(int type, int rarity, int star) { string id = type + "_" + rarity + "_" + star; return CardStarCfgArray.Instance.GetCfg(id); } /// /// 根据稀有度获取升级配置数组 /// /// /// public static List GetCardLvCfgsByRarity(int rarity) { if (_cardLvCfgDic.Count == 0) { int _rarity = 1; int _lv = 1; string _key = "1_1"; CardLvlCfg lvCfg = CardLvlCfgArray.Instance.GetCfg(_key); while (lvCfg != null) { if (_cardLvCfgDic.ContainsKey(_rarity.ToString()) == false) { _cardLvCfgDic.Add(_rarity.ToString(), new List()); } _cardLvCfgDic[_rarity.ToString()].Add(lvCfg); _lv++; _key = string.Format("{0}_{1}", _rarity, _lv); lvCfg = CardLvlCfgArray.Instance.GetCfg(_key); if (lvCfg != null) continue; _lv = 1; _rarity++; _key = string.Format("{0}_{1}", _rarity, _lv); lvCfg = CardLvlCfgArray.Instance.GetCfg(_key); 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; string _key = "1_1_1"; CardStarCfg starCfg = CardStarCfgArray.Instance.GetCfg(_key); 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++; _key = string.Format("{0}_{1}_{2}", _type,_rarity,_star); starCfg = CardStarCfgArray.Instance.GetCfg(_key); if (starCfg != null) continue; _star = 1; _rarity++; _key = string.Format("{0}_{1}_{2}", _type, _rarity, _star); starCfg = CardStarCfgArray.Instance.GetCfg(_key); if (starCfg != null) continue; _star = 1; _rarity=1; _type++; _key = string.Format("{0}_{1}_{2}", _type, _rarity, _star); starCfg = CardStarCfgArray.Instance.GetCfg(_key); 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 =int.Parse (cardStoryCfgs[i].id.Split('_')[0]); if (_cardStoryCfgDic.ContainsKey(_cardId)==false) { _cardStoryCfgDic.Add(_cardId, new List()); } _cardStoryCfgDic[_cardId].Add(cardStoryCfgs[i]); } } return _cardStoryCfgDic.ContainsKey(cardId)? _cardStoryCfgDic[cardId]: new List(); } } }